Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 13h47   #1
Invité régulier
 
Inscription : février 2011
Messages : 128
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 128
Points : 9
Points : 9
Par défaut problème de SELECT (affiche l'id au lieu du champ "nom")

Bonjour, il y a quelques temps j'ai utilisé un script (ajax) permettant à deux listes déroulantes de se mettre à jour en direct, chaque liste contient des noms, lorsque j'envoie le formulaire et avec l'action d'un INSERT, ma BDD récupère l'id des noms de ces listes plutot que leur nom , or j'ai beau vérifié mon INSERT envoie bien le champ nom , pourriez-vous m'aider à trouver ce problème ?

voici les scripts correspondants à mon problème:
edition.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form method="post" action="ajoutbasedd.php" id="f" name="formulaire" enctype="multipart/form-data">
<div id="adpdf">
<table id="findpdf" width="100%" cellpadding="0" cellspacing="0;">
    <tr><td id="T" colspan="2"> Ajouter un document PDF/WORD à une section d'une catégorie</td></tr>
    <tr><td id="S">
    		<select name="cat" id="theme" onchange="getSections(this.value);"> 
      		<option value="vide" selected="selected">Selectionnez une Catégorie</option>
    		<?php	while($ligne = mysql_fetch_array($recherche)){	?>
    			<option value="<?php echo $ligne["idr"]; ?>" ><?php echo $ligne["theme"]; ?></option>
			<?php	}	?>
    		</select>
       	</td>
        <td id="B"><span id="blocSections"></span><br /></td>
    </tr>
    <tr><!--<td id="S">Rechercher le document PDF/WORD à ajouter</td>--><td id="B" colspan="2"><input type="file" name="tdoc" size="50"/></td></tr>
 
</table>
</div>
getSections(this.value) renvoie vers le fichier dept_xhr.js qui permet de communiquer entre deux page php en direct : la page est : section.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$sql2 = "SELECT `id_section`, `section`".
            " FROM `liste_section`".
            " WHERE `id_theme` = ". $idr ."".
            " ORDER BY `id_section`;";
    $connexion = mysql_connect($serveur, $admin, $mdp);
    mysql_select_db($base, $connexion);
    $rech_sect = mysql_query($sql2, $connexion);
    /* Un petit compteur pour les départements */
    $nd = 0;
    /* On crée deux tableaux pour les numéros et les noms des départements */
    $code_sect = array();
    $nom_sect = array();
    /* On va mettre les numéros et noms des départements dans les deux tableaux */
    while(false != ($ligne_sect = mysql_fetch_assoc($rech_sect)))
    {
        $code_sect[] = $ligne_sect['id_section'];
        $nom_sect[]  = $ligne_sect['section'];
        $nd++;
    }
    /* Maintenant on peut construire la liste déroulante */
    $liste = "";
    $liste .= '<select name="sect" id="section"><option value="vide" selected="selected">Selectionnez une Section</option>'."\n";
	'';
    for($d = 0; $d < $nd; $d++)
    {
        $liste .= '  <option value="'. $code_sect[$d] .'">'. htmlentities($nom_sect[$d]) .'</option>'."\n";
    }
    $liste .= '</select>'."\n";
enfin voici la page ajoutbasedd.php qui envoie les données à la BDD:

Code :
1
2
3
4
5
6
$categorie = mysql_real_escape_string($_POST['cat']);
			$section = mysql_real_escape_string($_POST['sect']);
 
 
$serv = "INSERT INTO save(gdoc,theme,soussection,type) VALUES 
			('".$doc_name."','".$categorie."','".$section."','".$tgdoc."')";
artenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 15h38   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Je suis pas tout à fait sûre d'avoir compris ta question, mais ce qu'envoie ta liste déroulante ce sont les id des sections. Donc logiquement, ce qu'on insert à la récupération du formulaire ce sont les ids.
Ce n'est pas ce que tu veux ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 15h47   #3
Invité régulier
 
Inscription : février 2011
Messages : 128
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 128
Points : 9
Points : 9
Je souhaiterais récupérer les noms correspondant aux id, et je pensais que mon insert faisait ça.
artenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h11   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
A priori, pas directement. En revanche, tu peux faire une jointure par la suite entre ta table save et ta table liste_section pour retrouver le nom lors des lectures sur la table save.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h51   #5
Invité régulier
 
Inscription : février 2011
Messages : 128
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 128
Points : 9
Points : 9
très bien, cependant j'aimerais comprendre pourquoi dans le cas actuel je récupère les id aux lieu des noms puisque mon INSERT envoie (normalement) les noms et pas l'id du select (php-liste deroulante), pourriez-vous m'expliquez?
artenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 18h38   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Vu ton code, ton INSERT insert en base les données que lui envoie le formulaire, et ce que le formulaire envoie ce sont les ids des sections.
Code :
1
2
3
$section = mysql_real_escape_string($_POST['sect']);
 $serv = "INSERT INTO save(gdoc,theme,soussection,type) VALUES 
			('".$doc_name."','".$categorie."','".$section."','".$tgdoc."')";
Je ne vois pas trop où les noms interviennent là-dedans
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 15h21   #7
Invité régulier
 
Inscription : février 2011
Messages : 128
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 128
Points : 9
Points : 9
Peut-on associer, dans un select, une variable php a un champ d'une table ?

Code :
1
2
3
$categorie = mysql_real_escape_string($_POST['cat']);
 
$idnom = "SELECT * FROM liste_theme, liste_section WHERE id_theme = \"$categorie\"";
artenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 16h59   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
c'est possible, ça revient à écrire la même requête avec la valeur en dur.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 23h06   #9
Invité régulier
 
Inscription : février 2011
Messages : 128
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 128
Points : 9
Points : 9
j'ai un probleme avec cette ligne :

Code :
$acti = "SELECT gdoc,type FROM save WHERE theme = 'activité' ";
ça ne fonctionne pas, elle devrait pourtant récupérer les éléments du champ gdoc correspondant à activité ,

j'attends vos conseils, merci par avance
artenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h20   #10
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
As-tu essayé de lancer cette requête directement à la main dans ta base de données (genre via phpMyAdmin ou quelque chose du genre) ?

Autre point : étant donné que tu as un caractère accentué dans ta valeur, vérifies que tous les encodages coïncident : celui de la base, celui du fichier php, éventuellement celui de la page html si la valeur vient d'un formulaire.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h06.


 
 
 
 
Partenaires

Hébergement Web