Warning: mysql_query() expects parameter 1 to be string, re

Eléphant du PHP | 92 Messages

20 juin 2011, 21:04

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
Voici mon code :
<?php

	// 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 selection si on le change
									echo '>'.$affiche_contenu_courriel_menu['fld_nom_email'].'</option>';
									
									
							
				

            }
        ?>
    </select>
Alors mon menu est vide :cry: et j'ai une alerte :oops: :
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

Eléphant du PHP | 92 Messages

20 juin 2011, 22:02

hummmm

j'avais deux mysql_query, alors qu'il ne le faut qu'une fois pour exécuter la requête


J'ai rectifié :

Code : Tout sélectionner

$res_courriel_select= "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() ) ; while($row=mysql_fetch_row($rep_courriel_select))
Ç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 :

Code : Tout sélectionner

15--<select name="courriel_menu_new_cmpgn" id="courriel_menu_new_cmpgn" onchange="submit()"> <option selected=\"selected\" value=""></option><option value="toto">[email protected]</option>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 juin 2011, 22:46

salut,


il faut ajouter un if dans le while, il permet la comparaison entre l'id de la personne et celui que tu a dans la liste

par exemple
<?php
while ( ... ) {
echo '<option value="..."';
if ( $idDeLaPersonne == $row['idDeLaPersonne']) echo 'selected="selected";
echo '>'.$row['valeurAafficher'].'</option>'.
}
?>
@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 92 Messages

21 juin 2011, 15:10

Salut Moogli,

Mais il y a 2 choses dans mon menu :

d'une part, je vais afficher la sélectionne de l'option fait par l'utilisateur qui vient de bdde : id_resultat=$id

Code : Tout sélectionner

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";
d'autre part, je vais aussi afficher les autres options dans ce menu :

Code : Tout sélectionner

select DISTINCT id_email, fld_nom_email, fld_adresse_email FROM $table_db_email ORDER BY fld_nom_email
Alors, j'arrive afficher toutes les options, mais aucune option n’a été sélectionnée...

Voici mon code complet :

Code : Tout sélectionner

<select name="courriel_menu_new_cmpgn" id="courriel_menu_new_cmpgn" onchange="submit()"> <?php //-------- affichage du menu avec la selection selon id $res_courriel_select= "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() ) ; while($row=mysql_fetch_row($rep_courriel_select)) { echo '<option selected=\"selected\" value="'.$row['fld_email_id'].'">'.$row['fld_nom_email'].'</option>'; } //-------- affichage tous les autres options du menu $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($emailss==$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>
Alors est-ce que je peux renverser mon code : écrire d'abord mon 2e mysql_query, avec While et mettre 1er requête (mysql_query) dans while avec if mais comment? :?:

Code : Tout sélectionner

$res_courriel_menu = " select DISTINCT ....."; //.... While() echo '<option.... if (quelques chose) SELECT td.id_resultat,td.fld_email_id,email.fld_nom_email

Eléphant du PHP | 92 Messages

21 juin 2011, 21:15

Salut Moogli,

Encore moi : Je vais expliquer autrement :

Code : Tout sélectionner

<select name="courriel_menu_new_cmpgn" id="courriel_menu_new_cmpgn" onchange="submit()">       <?php                         //-------- 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]

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?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 juin 2011, 18:30

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?
heu c'est ce que fait le code que tu a montré la ... :/


je crois que je ne comprend pas ta question la ^^

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 92 Messages

26 juin 2011, 21:11

je crois que je ne comprend pas ta question la ^^
@+
Ok Moogli,

Je vais essayer d'expliquer autrement avec des exemples :

Mon menu marche et affiche toutes les options existent sur la table (par variable : $table_db_email) avec le code suivant

Code : Tout sélectionner

<select name="email_menu" id="email_menu" onchange="submit()"> <?php echo "<option selected=\"selected\" value=''>Choisir le nom</option>"; $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

Code : Tout sélectionner

<select name="email_menu" id="email_menu" onchange="submit()"> <option selected="selected" value=''>Choisir le nom</option><option value="tomo">TOTO MONO - [email protected]</option><option value="kito">KIKI TOTO - [email protected]</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...

Code : Tout sélectionner

<select name="email_menu" id="email_menu" onchange="submit()"> <?php echo "<option selected=\"selected\" value=''>Choisir le nom</option>"; $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'].'"'; ////////***************************************** selectionner 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";} //display to select an option!!!!!!!!!!!!!!!! } /////-------------------------------- //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>
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 :

Code : Tout sélectionner

<select name="email_menu" id="email_menu" onchange="submit()"> <option selected="selected" value=''>Choisir le nom</option><option value="tomo" selected>TOTO MONO - [email protected]</option><option value="kito" selected>KIKI TOTO - [email protected]</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) ? :?: :!: :?:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 juil. 2011, 23:21

alors déjà au départ tu affiche 'toujours' echo "<option selected=\"selected\" value=''>Choisir le nom</option>"; il manque le " pour fermer le value, du coup c'est un peu le brin ;)

Dans ton dernier code je ne sais pas d'où sort le $emailselected , si c'est de la requête précédente je comprend que tu ai toujours le selected affiché ;)

@+
Il en faut peu pour être heureux ......