Probleme recuperation données

Résolu
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006 - 11 janv. 2006 à 14:51
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006 - 12 janv. 2006 à 14:28
Bonjour, je souhaiterais mettre dans ma base de donnée, les données séléctionné dans une liste déroulante. Voici un extrait du fichier ajoutdoc.php ou je rempli les liste déroulantes, a aucun moment il y a un message d'erreur et il passe bien a la page confirmation, mais rien n'a été ajouté dans la table:

$db = mysql_connect('localhost', 'root', ''); //connexion
mysql_select_db('stock', $db);



$query_select = "SELECT sujet FROM sujet";
$req_select = mysql_query($query_select) or die('Erreur SQL !'.$query_select.'
'.mysql_error());
?>
<form method="POST" action="doc.php">


<?php


$query_select = "SELECT sujet FROM sujet";
$req_select = mysql_query($query_select) or die('Erreur SQL !'.$query_select.'
'.mysql_error());
?>

Sujet: <select name="sujet">
<option value="#" selected></option>
<?php
while($select = mysql_fetch_array($req_select))
{
echo '<option value='.$select['numsujet'].'>'.$select['sujet'].'</option>';
}
?>

</select>



<?php

$query_select = "SELECT libetype FROM typedoc";
$req_select = mysql_query($query_select) or die('Erreur SQL !'.$query_select.'
'.mysql_error());
?>

Type: <select name="type">
<option value="#" selected></option>
<?php

while($select = mysql_fetch_array($req_select))
{
echo '<option value='.$select['numtype'].'>'.$select['libetype'].'</option>';
}
?>


</select>


<?php


$query_select = "SELECT libelangue FROM langue";
$req_select = mysql_query($query_select) or die('Erreur SQL !'.$query_select.'
'.mysql_error());
?>

Langue: <select name="langue">
<option value="#" selected></option>
<?php

while($select = mysql_fetch_array($req_select))
{
echo '<option value='.$select['numlangue'].'>'.$select['libelangue'].'</option>';
}
?>


</select>


Nom:

<?php
mysql_close(); // on ferme la connexion
?>




</form>

Et ici le fichier doc pour recuperer les valeurs:

<?php


//recup des données
if(isset($_POST['sujet'])) $sujet=$_POST['sujet'];
else $sujet="bla";


if(isset($_POST['type'])) $type=$_POST['type'];
else $type="bla";


if(isset($_POST['langue'])) $langue=$_POST['langue'];
else $langue="bla";


if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="bla";


//connexion base


$db = mysql_connect('localhost', 'root', '');
// sélection de la base
mysql_select_db('stock',$db);


$sql = "INSERT INTO doc(numdoc,sujet,type,langue,libedoc) VALUES('','$sujet','$type','$langue','$nom')";
mysql_query($sql);
include('confirmation.html');
mysql_close();


?>

Merci de votre aide.

21 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2006 à 12:03
C'est bien ce que l'on te dit : c'est ton formulaire qui est foireux. A cause de ces variables qui n'existent pas, et d'un html pourri...remplace tes options (au moins elles) par ce type là :

echo '<option value='.$select['numtype'].'>'.$select['libetype'].'</option>'; // ça c'est pas bon

echo '<option value="'.$select['libetype'].'">'.$select['libetype'].'</option>'; // ça c'est bon.

Il y a 2 problèmes :
- tu utilise$select['numtype'] qui n'existe pas.
- tu ne mets pas de guillemets pour délimiter la valeur de l'attribut 'value' (ce qui fait que si tu as un espace dans la variable que tu y mets, tu vas avoir des surprises...

Un petit rappel : dans tes post, $_POST['truc'] tu vas avoir comme valeur ce que tu mets dans l'attribut 'value', pas ce que tu mets entre tes balises <option> et </option>. SAUF (sous IE en tous cas), si tu ne mets PAS d'attribut value à tes options.
Néanmoins, il vaut mieux en mettre un, et lui donner la valeur que tu veux récupérer, en l'occurence, là, si j'aiu bien compris, c'est $select['libetype'] que tu voulais récupérer.

Enfin, tu as dû mal lire les tutos de phpdebutant.org...ils ne sont pas tous très à la page, mais pas à ce point quand même... ;-)
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 janv. 2006 à 15:28
Hello,

mets des or die (mysql_errno().' => '.mysql_error()); par exemple, aprèes tes instructions mysql.

ceci dit, ici, tu ne testes pas la soumission du formulaire.
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
11 janv. 2006 à 16:16
echo '<option value= '. $select['numsujet' ].'>'.$select['sujet'].'</option>';

je pense que le pb vient de tes balises option $select['numsujet'] n'est pas défini
les values doivent être à blanc, non ?

essaie
echo '<option value ='.$select['sujet'].'>'.$select['sujet'].'</option>';

affiche le source de la page du form et regarde les balises option
0
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006
11 janv. 2006 à 16:54
jai bien les valeurs dans la liste deroulante mais jai l'impression qu'elle ne sont pas mise en memoire lorsque je clique sur ajouter et que ca passe a la page doc.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 janv. 2006 à 10:33
est ce que l'insert de la page doc.php s'effectue avec des valeurs à blanc
ou est ce que aucun enregistrement n'est ajouté ??
(en gros l'insert marche ou pas ??)
0
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006
12 janv. 2006 à 10:38
pendant un certain temps javai ke des valeurs a blanc ki seffectuai sauf pour la zone de texte mais la y a pu rien du tou qui va dans la table
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 janv. 2006 à 10:46
on peut voir le code apres modif ??
essaie ça

$sql = "INSERT INTO doc VALUES(NULL,'$sujet','$type','$langue','$nom')";
0
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006
12 janv. 2006 à 10:58
ca change rien y a toujour rien qui se met dans la table, en fait jai limpression qu'il prend pas la donnée selectionnee dans la liste deroulante parce ke ca passe bien d'une page a doc.php donc le probleme doit venir de la recuperation de l'objet selectionné
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2006 à 11:11
Au début de doc.php, mets cette commande :
echo '', $_POST, '

';

et regarde ce qui sort après soumission de ton formulaire.
Mais sidf a raison, quand tu fais ceci :
SELECT libelangue FROM langue
et que tu fais une liste avec des options de cette forme :
echo '<option value="', $select['numlangue'], '">', $select['libelangue'],'</option>';

il y a un problème. Tu vas bien chercher 'libelangue', donc tu l'as dans ta liste, puisque c'est l'innerHTML de ta balise option. Par contre, comme tu ne vas pas chercher 'numlangue', tu ne l'as pas. Et par défaut, tu vas avoir comme valeur de ton attribut value ce que tu as dans l'innerHTML, c'est à dire : libelangue.
Et quand tu fais ton insert, tu as probablement un problème de type, car si tu attendais numlangue, qui doit être un int dans ta base, et que tu te retrouves avec libelangue, qui est probablement un type varchar...l'insertion ne peut pas se faire.D'où l'intérêt, sur le mysql_query() de ton insertion, de sortir mysql_errno() et mysql_error().
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2006 à 11:14
Et de programmer en error_reporting à E_ALL, car quand tu fais appel à $select['numlangue'], variable qui n'existe pas...php aurait sorti une erreur.
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 janv. 2006 à 11:17
on peut voir le code final ??
0
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006
12 janv. 2006 à 11:33
echo '', $_POST, '

';
en mettant cette ligne jai "array" qui s'affiche

par contre dans la table je n'attend pas de numero mais bien varchar c pour ca ke je prend le libé parce ke avan javai fai select * et jattendai un int mais pareil y a rien eu dans la table....

doc.php


<?php


echo'',$_POST,'

';


//recup des données


if(isset($_POST['sujet'])) $sujet=$_POST['sujet'];


else $sujet="bla";


if(isset($_POST['type'])) $type=$_POST['type'];


else $type="bla";


if(isset($_POST['langue'])) $langue=$_POST['langue'];


else $langue="bla";


if(isset($_POST['nom'])) $nom=$_POST['nom'];


else $nom="bla";


//connexion base


$db = mysql_connect('localhost', 'root', '');


// sélection de la base


mysql_select_db('stock',$db);


$sql = "INSERT INTO doc VALUES('','$sujet','$type','$langue','$nom')";


mysql_query($sql);


include('confirmation.html');


mysql_close();


?>
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 janv. 2006 à 11:38
le array c'est normal

fais un echo de $sql pour voir keskialaddan
0
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006
12 janv. 2006 à 11:42
ca donne insert into doc values('','','','','blabla')
il recupere donc ocune valeur des liste deroulante mai prend bien la valeur tu text area
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2006 à 11:42
Moi je verrais bien la structure de sa table doc...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2006 à 11:44
il a 'array()' en affichant son tableau $_POST, et $_POST['nom']
est renseigné et tu trouves ça normal...? Moi pas.
0
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006
12 janv. 2006 à 11:45
CREATE TABLE `doc` (


`numdoc` INT NOT NULL AUTO_INCREMENT ,


`sujet` VARCHAR( 30 ) NOT NULL ,


`type` VARCHAR( 30 ) NOT NULL ,


`langue` VARCHAR( 30 ) NOT NULL ,


`libedoc` VARCHAR( 100 ) NOT NULL ,


PRIMARY KEY ( `numdoc` )


);
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2006 à 11:50
Explique-moi pourquoi tu mets dans les 'value' de tes options, des variables qui n'existent pas ? Je ne pige pas la logique de ton code.
Affiche le source html de ta page de formulaire, et regarde ce qu'il y a dans value="" pour chaque option.
Et dans tes if(isset($_POST['sujet'])) $sujet=$_POST['sujet'];
fais plutôt ceci :

if(isset($_POST['sujet']) && !empty($_POST['sujet'])) $sujet=$_POST['sujet'];
else $sujet = 'bla';
0
cs_johnmichel Messages postés 30 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 20 février 2006
12 janv. 2006 à 11:55
ben javai lu ca sur le net pour creer les liste deroulantes lol, je ne suis qu'un debutant donc j'ai suivi des truc de sites genre phpdebutant.com
et en modifiant les isset jai maintenant une nouvelle ligne dans la table avec des bla et le bon nom du document, mais toujours pas les valeurs selectionné dans les listes
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 janv. 2006 à 12:13
je serais curieux de voir le source de la page du form affichée
c'est bien mystérieux
0
Rejoignez-nous