Vous n'êtes pas identifié(e).
Bonjour,
J’ai un bdd qui contient des tables et entre eux, il y a une relation...
tb_code_prmtn11 (qui contient les informations sur les gens)
id_resultat
fld_email_id ( FOREIGN KEY (`fld_email_id`) REFERENCES `tb_code_prmtn11_email` (`id_email`) ON DELETE NO ACTION ON UPDATE CASCADE;)
tb_code_prmtn11_email (qui contient les emails de gens)
fld_email_id
fld_nom_email
Alors, je vais afficher les emails dans un menu déroulant. Dans ce menu, il y a alors tous les courriels qui vient de la table "tb_code_prmtn11_email" mais je voudrais que quand on affiche les informations d'une personne
je veux que dans ce menu, son courriel soit automatiquement sélectionné parmi les autres options
Voici le message erreur :
Warning: mysql_query() expects parameter 1 to be string, resource given in C:\inetpub\wwwroot\applications_web\apps_code_promotion\verification\edit.php on line 53
Voic mon code :
// pour tester si variable id contient un valeur (je le recupere par GET)
echo $id;
?>--
// id toujours un valeur...
<select name="courriel_menu_" id="courriel_menu_" class="valid" onchange="submit()">
<?php
// trouver le valeur du select qui se trouve dans 1er table et afficher l'email qui se trouve dans 2e table
$res_courriel_select= mysql_query("SELECT td.id_resultat,td.fld_email_id,email.fld_nom_email
FROM $table_db td
INNER JOIN $table_db_email email
ON td.fld_email_id = email.id_email
WHERE td.id_resultat=$id");
$rep_courriel_select = mysql_query($res_courriel_select, $cnx) or die( mysql_error() ) ; // LA LIGNE 53!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
while($row=mysql_fetch_row($rep_courriel_select))
{
echo '<option selected=\"selected\" value="'.$row['fld_email_id'].'">'.$row['fld_nom_email'].'</option>';
}
// afficher les autres options
$res_courriel_menu = " select DISTINCT id_email, fld_nom_email FROM $table_db_email ORDER BY fld_nom_email ";
$rep_courriel_menu = mysql_query($res_courriel_menu, $cnx) or die( mysql_error() ) ;
while($affiche_contenu_courriel_menu = mysql_fetch_assoc($rep_courriel_menu)) {
echo '<option value="'.$affiche_contenu_courriel_menu['id_email'].'"';
if($primes==$affiche_contenu_courriel_menu['fld_nom_email']){echo " selected";} // pour afficher la selectionne si on le change
echo '>'.$affiche_contenu_courriel_menu['fld_nom_email'].'</option>';
}
?>
</select>
Alors mon menu est vide et j'ai une alerte:/ :
Warning: mysql_query() expects parameter 1 to be string, resource given in C:\inetpub\wwwroot\applications_web\apps_code_promotion\verification\edit.php on line 53
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
$res_courriel_select
$rep_courriel_select
put1, qd allez vous faire du code lisible grrrrrrrrrrrrrrrrrrrrrr
a++
Hors ligne
hummmm
j'avais deux mysql_query, alors qu'il ne le faut qu'une fois pour exécuter la requête
J'ai rectifié :
Ça marche... En fait mon menu contient tous les emails de ma table...
Par contre il n'y a pas une option (ni la bon option) a été sélectionnée...
et j'ai regardé le code source de la page sous FireFox , c'est vide :
exemple :
Dernière modification par phpdos (20-06-2011 20:50:52)
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
Merci d'utiliser la coloration syntaxique. Vous ne savez pas comment faire?
Aie... ca commence mal.. pour du code php "{code=php}... {/code}" sans les guillemets bien entendu, pour du mysql "{code=MySQL}...{/code}" et ainsi de suite.. en n'oubliant pas de remplacer les acolades par des crochets hein (juste au cas où).
Une fois les modifs faites, peut être on commencera à lire d'un peu plus près, car la ca pique les yeux et on a pas forcément le temps d'y consacrer le triple de temps...
Dernière modification par Jc (20-06-2011 22:08:41)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Voici mon code en PHP qui contient aussi un peu de HTML et mySql, mais je vais fermer ce ticket si cela est un casse-tête pour vous...
$res_courriel_menu = " select DISTINCT id_email, fld_nom_email, fld_adresse_email FROM $table_db_email ORDER BY fld_nom_email ";
$rep_courriel_menu = mysql_query($res_courriel_menu, $cnx) or die( mysql_error() ) ;
while($affiche_contenu_courriel_menu = mysql_fetch_assoc($rep_courriel_menu)) {
echo '<option value="'.$affiche_contenu_courriel_menu['id_email'].'"';
if($primes==$affiche_contenu_courriel_menu['fld_nom_email']){echo " selected";} // pour re-afficher la selectionne si on change...
echo '>'.$affiche_contenu_courriel_menu['fld_nom_email'].'</option>';
}
?>
</select>
Dernière modification par phpdos (21-06-2011 13:21:45)
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
Encore moi : Je vais expliquer autrement :
//-------- affichage l'option selectionne du menu DONNÉE selectionnée vient de bd table table_db td ($table_db td )
$req_courriel_menu = " SELECT td.id_resultat,td.fld_email_id,email.fld_nom_email
FROM $table_db td
INNER JOIN $table_db_email email
ON td.fld_email_id = email.id_email
WHERE td.id_resultat=$id ";
$rep_courriel_menu = mysql_query($req_courriel_menu, $cnx) or die( mysql_error() ) ;
while($affiche_contenu_courriel_menu = mysql_fetch_assoc($rep_courriel_menu)) {
echo '<option value="'.$affiche_contenu_courriel_menu['fld_nom_email'].'"';
if($emailss==$affiche_contenu_courriel_menu['fld_email_id']){echo " selected";} // pour afficher la selectionne si on change...
echo '>'.$affiche_contenu_courriel_menu['fld_nom_email'].'</option>';
}
?>
</select>
Alors, le code ci-dessus, voit le champ « fld_email_id » dans la table (alias) « td » et trouve le résultat ensuite compare la valeur du résultat dans la table (alias) « email » et trouve sa correspondance dans le champ « fld_nom_email » et affiche ce nom dans le menu comme une option séléctionnée.
Jusqu'au tout va bien...
voici mes 2 table
tb_code_prmtn11 (qui contient les informations sur les gens) c'est l'alias "td" dans le code
id_resultat
fld_email_id ( FOREIGN KEY (`fld_email_id`) REFERENCES `tb_code_prmtn11_email` (`id_email`) ON DELETE NO ACTION ON UPDATE CASCADE;)
tb_code_prmtn11_email (qui contient les emails de gens) son alias c'est "email"
fld_email_id
[b)]fld_nom_email[/b]
[font=Verdana]Ma question :
Après avoir affiché le nom de la personne dans mon menu comme l'option sélectionnée, comment peux- je chercher tous les autres noms qui se trouve dans le champ "fld_nom_email" et les afficher comme les options non sélectionnées dans LE MÊME MENU?[/font]
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
Bonsoir,
Heureusement que tu es là pour nous expliquer ton code, j'avais rien compris du tout personnellement. Vu que tu expliques si bien, j'attends avec impatience tes explications sur ta solution pour le résoudre.
Cordialement,
Jc.
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Salut Jc,
Ha bon, alors là, je suis triste puisque je suis un cl......
En fait, un menu déroulant affiche plusieurs options et une option sélectionnée, n'est-ce pas ?
Je suis capable d'afficher option sélectionnée dans mon menu parce que cette information se trouve bien dans la 1re table (alias td)
est ce que je peux aussi afficher les autres options (non sélectionnées) qui se trouve dans une autre table (qui est sous l'alias email) ? Comment je peux faire ?
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
décidement, j'dois vieillir, je n'arrive plus à suivre :/
a++
Hors ligne
Je ne ferai pas de commentaires..
Et j'ai fait encore un effort, ca fait plus d'un an que je n'utilise que PDO... penses-y bientôt PHP 6 (déjà dispo chez OVH).
Dernière modification par Jc (21-06-2011 21:00:58)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Si, je vais tout de même faire un commentaire.
Phpdos est un cl.... qui en plus ne dit jamais merci
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
C'est moi ou c'est pas la fête que de la musique ce soir ?
Je suis fatigué d'un coup, là !
Vivement les vacances puis la retraite !
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Une info pour Phpdos,
Le chargement de ton select tu n'as besoin de le faire qu'une fois à partir de ta base de données, ensuite si tu changes d'utilisateur, il faut mettre à jour le select au niveau selection via javascript.
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bonjour les amis,
bonjour Jc, Maljuna Kris et Pierrot,
Mille merci pour vos commentaires et mille mercis pour le code de Jc...
Mais je n'arrive pas...
Alors ce que j'ai fait :
$nom_email = $row['fld_nom_email'];
$id_email = $row['fld_email_id'];
if ($email_option_select==$id_email){$select_email .="<option value=\"$id_email\" selected=\"selected\">$nom_email</option>";}
else {$select_email .="<option value=\"$id_email\">$nom_email</option>"; }
}
}
$select_email .='</select>';
echo $select_email;
?>
et voici le message d'erreur :
Warning: mysql_num_rows() expects parameter 1 to be resource, string given in C:\inetpub\wwwroot\applications_web\apps_code_promotion\verification\edit.php on line 158
et dans mon menu déroulant : il y une seule option : ---
alors puisque je suis un clown, je vais changer mes envies :
Au lieu de faire un seul menu déroulant, puisque ça ne marchera jamais, je vais faire une "input type text" (avec readonly ou disabled="disabled") et un menu déroulant...
dans mon "input" je vais mettre l'enregistrement qui se trouve dans "table_db"
avec la requête suivante :
et dans le menu déroulant je vais afficher toutes les options qui sont dans la table "table_db_email"
avec la requête suivant :
Si on veut changer la valeur de input, il faut sélectionner la nouvelle valeur dans le menu déroulant... On va faire la mise à jour de bd...
Est-ce que je peux fermer cette discusion très comique en disant RESOULU ?:D
Bonne journée de la part de votre clown:D:lol:
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
Bonsoir,
Que dire PHPdos si ce n'est que je suis déçu. Tu n'as même pas pris 5min pour essayer de comprendre la logique de mon code... mais bon...
1) Pour remplir un select il ne faut pas filtrer ta requête donc ta requete avec un "WHERE ... " tu peux oublier.
2) Le filtre tu l'appliques au niveau du select.
3) Une fois le select rempli, tu navigues dedans, tu changes ta sélection etc... en manipulant le DOM via Javascript et tu évites ainsi de solliciter tes serveurs (PHP+MySQL) pour rien.
Mais le principal c'est que tu t'y retrouves.
Et puis à défaut d'un merci je me contenterai d'une bonne journée
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bonsoir JC,
Puisque tu es un Maitre, je t'écoute...
Et je te dis aussi merci pour tes mots...
En plus, la solution que j'ai trouvée (1 input et un menu déroulant) n'est pas très belle et c'est compliqué parce que la valeur récupérée par post d'une input, c'est un nom (fld_nom_email) mais c'est n'est pas son id (fld_email_id)
Par contre, la valeur de mon menu, c'est l'id (fld_email_id). Autrement dit, les utilisateurs voient le nom de personne dans l'input (comme le PHP) et dans le menu déroulant (mais le PHP trouve son id dans le menu). Donc il faut que je change la valeur d'input avec son id...
Je voulus comprendre ton code, mais ma connaissance n'est pas suffisante...
D'ailleurs, je ne sais pas si tu as pu compris bien mon histoire : Dans mon menu déroulant, je voulais chercher les options dans une table et le select dans une autre table (mon bd a un modèle de données relationnelles que j'ai apprises sur le Net, grâce à vous).
Comme plusieurs fois j'ai écrit et comme tu dis "Pour remplir un select il ne faut pas filtrer ta requête donc ta requête avec un “WHERE ... ” tu peux oublier. » , mon menu marche avec le code suivant :
$res_courriel_menu = " select DISTINCT id_email, fld_nom_email, fld_adresse_email FROM $table_db_email ORDER BY fld_nom_email ";
$rep_courriel_menu = mysql_query($res_courriel_menu, $cnx) or die( mysql_error() ) ;
while($affiche_contenu_courriel_menu = mysql_fetch_assoc($rep_courriel_menu)) {
echo '<option value="'.$affiche_contenu_courriel_menu['id_email'].'"';
//if($primes==$affiche_contenu_courriel_menu['fld_nom_email']){echo " selected";} // pour afficher la selectionne
echo '>'.$affiche_contenu_courriel_menu['fld_nom_email'].' - '.$affiche_contenu_courriel_menu['fld_adresse_email'].'</option>';
}
?>
</select>
mais je n'arrive pas sélectionné l'option qui est dans ma 2e table.
Tu dis "Une fois le select rempli, tu navigues dedans, tu changes ta sélection etc... en manipulant le DOM via Javascript et tu évites ainsi de solliciter tes serveurs (PHP+MySQL) pour rien."
Mais je ne sais pas comment je peux faire cette histoire : naviguer et manipuler le DOM et JavaScript...
Bonne soirée et merci encore
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
Bonsoir,
je ne comprend pas comment on peut buter sur un problème aussi simple
à vouloir trop bien faire, ton code en devient "fouilli".
d'ailleurs, tu es tellement précis que je n'ai rien compris
de plus, je te ferais remarquer que nous somme en 2011 et qu'il existe aujourd'hui des outils bien plus performant.
le 1er conseil que je te donnerai, c'est de tous remettre à plat, penser plus simplement.
a++
Hors ligne
Bonsoir,
en 2011 et qu'il existe aujourd'hui des outils bien plus performant.a++
Bonsoir Pierrot,
quels outils ?
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
hé bien, php et un cerveau bien équilibré
a++
Hors ligne
Bonjour,
C'est fou le temps que l'on peut gagner si on commence par dire "j'ai pas compris ton code" quand c'est le cas (plutôt que de passer 3 jours à mettre des rustines partout et à penser et faire je ne sais quoi de bizarre).
Pourquoi ? parce qu'ici ca s'appele PHP débutant et qu'on est la pour ça. C'est tout bête hein?
Alors je vais t'expliquer.. Mais pour cette semaine maintenant c'est un peu tard pour moi, j'ai du taf (beaucoup de dev à faire) donc j'y reviendrai dessus ce week end.
Bonne semaine.
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
le 1er conseil que je te donnerai, c'est de tout remettre à plat, penser plus simplement.
Autrement dit : KISS
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je ne ferai pas de commentaires..
$a_msg='<select name="xx" tabindex="xx" class="xx" />';
//........
Et j'ai fait encore un effort, ca fait plus d'un an que je n'utilise que PDO... penses-y bientôt PHP 6 (déjà dispo chez OVH).
Bonjour Jo et Maljuna Kris et Pierrot...
Même si vous vous moquez de moi, j'ai fait beaucoup de progrès : il y a quelques jours, je ne connaissais rien sur modelés de données relationnelles...
Malgré les propos sarcastique, je continue...
Voici ce que j'ai fait :
Jc, Ton code marche et très bien fait avec 2 variables ($nom_email et $id_email ) que je n'ai pas pu imaginer de les faire mais prochaines fois...
En affichant "le code source de la page" dans Firefox je vois que :
<select name="email_menu" id="email_menu" onchange="submit()"/><option value="00">---</option><option value="tomo">TOTO MONO</option></select>
Alors, je me suis dit qu'il y a quelques choses que je n'arrive pas vous expliquer...:/
Je vais le faire avec d'autres exemples :
Mon menu marche et affiche toutes les options existent sur la table (par variable : $table_db_email) avec le code suivant
$req_email_menu = " select DISTINCT id_email, fld_nom_email, fld_adresse_email FROM $table_db_email ORDER BY fld_nom_email ";
$rep_email_menu = mysql_query($req_email_menu, $cnx) or die( mysql_error() ) ;
while($show_contenu_email_menu = mysql_fetch_assoc($rep_email_menu)) {
echo '<option value="'.$show_contenu_email_menu['id_email'].'"';
//if($primes==$show_contenu_email_menu['fld_nom_email']){echo " selected";} // pour afficher la selectionne
echo '>'.$show_contenu_email_menu['fld_nom_email'].' - '.$show_contenu_email_menu['fld_adresse_email'].'</option>';
}
?>
</select>
Et voici le retour de code (en affichant "le code source de la page") que j'obtiens dans Firefox
<select name="email_menu" id="email_menu" onchange="submit()">
<option selected="selected" value=''>Choisir le nom</option><option value="tomo">TOTO MONO - toto.mono@test.com</option><option value="kito">KIKI TOTO - kiki.toto@test.com</option></select>
Et maintenant je vais ajouter quelques lignes dans mon code pour sélectionner une option de ce menu : cette option sélectionnée se trouve dans ma table table_db...
$req_email_menu = " select DISTINCT id_email, fld_nom_email, fld_adresse_email FROM $table_db_email ORDER BY fld_nom_email ";
$rep_email_menu = mysql_query($req_email_menu, $cnx) or die( mysql_error() ) ;
while($show_contenu_email_menu = mysql_fetch_assoc($rep_email_menu)) {
echo '<option value="'.$show_contenu_email_menu['id_email'].'"';
////////***************************************** sélectionner option qui est inscrit dans la table
$req_email_adress_menu_for_selected = "SELECT td.id_resultat,td.fld_email_id,email.fld_nom_email
FROM $table_db td
INNER JOIN $table_db_email email
ON td.fld_email_id = email.id_email
WHERE td.id_resultat=$id ";
$rep_email_adress_menu_for_selected = mysql_query($req_email_adress_menu_for_selected, $cnx) or die( mysql_error() ) ;
while($show_email_adress_menu_for_selected = mysql_fetch_assoc($rep_email_adress_menu_for_selected))
{
if($emailselected==$show_email_adress_menu['fld_email_id']){echo " selected";} //afficher option existant en selectionnant!!!!!!!!!!!!!!!!
}
/////--------------------------------
//if($primes==$show_contenu_email_menu['fld_nom_email']){echo " selected";} //afficher option existant en selectionnant!!!!!!!!!!!!!!!!
echo '>'.$show_contenu_email_menu['fld_nom_email'].' - '.$show_contenu_email_menu['fld_adresse_email'].'</option>';
}
?>
</select>
Mon menu marche, mais sélectionne toutes les options pourtant dans mon bdd, il n'y a qu'une. Cela veut dire que mon code que j'ai ajouté n'est pas bon...
En affichant "le code source de la page" dans Firefox je vois que :
<select name="email_menu" id="email_menu" onchange="submit()">
<option selected="selected" value=''>Choisir le nom</option><option value="tomo" selected>TOTO MONO - toto.mono@test.com</option><option value="kito" selected>KIKI TOTO - kiki.toto@test.com</option><option value="dida" selected>DIDI DADA - di_da@test.com</option></select>
Alors, comment peux-je afficher, dans mon menu, une option sélectionnée qui se trouve dans la table table_db, tout en affichant toute les options qui se trouvent dans une autre table (table_db_emai) ?
en fait, je vaudrais obtenir le même code source que le suivant :
<select name="email_menu" id="email_menu" onchange="submit()">
<option selected="selected" value=''>Choisir le nom</option><option value="tomo" selected>TOTO MONO - toto.mono@test.com</option><option value="kito" >KIKI TOTO - kiki.toto@test.com</option><option value="dida" >DIDI DADA - di_da@test.com</option></select>
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
>> j'ai fait beaucoup de progrès
çà, c'est pas à toi de le décider
d'abord, j'me moque pas de toi
ensuite, je ne vois aucun progrès
je ne vois qu'un fouillis de vieux code
a++
Hors ligne
Bonsoir,
Parfois on (je) se demande ce que serait devenu notre ami Pierrot sans émoticones dans les forums en ligne
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Franchement, Jc, je le préfère vociférant des émoticones qui clignent de l'œil.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne