8791 sujets

Développement web côté serveur, CMS

Je suis entrain de créer une base de donnée sur phpmyadmin, j'ai bien créé mes lignes (je pense comme il faut).

// ?> upload/40410-screen-sho.png

Ensuite j'ai créé un document "cible.php" qui permet une fois que mon formulaire est rempli d'envoyer mes données sur ma DB.
Mon problème est le suivant : j'ai rajouté un $echo pour savoir comment était envoyé mes info, mais rien ne s'inscrit dans ma base.
Je vous joins mon formulaire

<form action="cible.php" method="post" >
<p>nom:<input name="noms" type="text" style="width: 309px; height: 20px;" /></p>
<p>image:<input name="image" type="text" value="../images/legumes/thumbs/.jpg" style="width: 220px; height: 20px;" /></p>
<p>couleur:<select name="couleurs" tabindex="5">
<optgroup>
<option value="blanc">blanc</option>
<option value="rouge">rouge</option>
<option value="orange">orange</option>
<option value="jaune">jaune</option>
<option value="vert">vert</option>
<option value="violet">violet</option>
</optgroup>
</select></p>
<p>mode de conservation:<textarea name="conservation" type="text" cols="60" rows="5" /> </textarea> </p>
<p>conseils d'achat:<textarea name="conseil_achat" type="text" cols="60" rows="5" /> </textarea> </p>
<p>provenance:<textarea name="provenance" type="text" cols="60" rows="3" /> </textarea> </p>
<p>protéines (pour 100g):<input name="proteines" type="text" maxlength="2"/></p>
<p>glucides (pour 100g):<input name="glucides" type="text" maxlength="2"/></p>
<p>fibres (pour 100g):<input name="fibres" type="text" maxlength="2"/></p>
<p>calories:<input name="calories" type="text" maxlength="3"/></p>
<p>printemps:<input name="printemps" type="checkbox" value="printemps"/> /
été:<input name="ete" type="checkbox" value="ete"/> /
automne:<input name="automne" type="checkbox" value="automne"/> /
hiver:<input name="hiver" type="checkbox" value="hiver"/></p>
<p>mois début:<select name="mois_debut" tabindex="5">
<optgroup>
<option value="1">janvier</option>
<option value="2">février</option>
<option value="3">mars</option>
<option value="4">avril</option>
<option value="5">mai</option>
<option value="6">juin</option>
<option value="7">juillet</option>
<option value="8">août</option>
<option value="9">septembre</option>
<option value="10">octobre</option>
<option value="11">novembre</option>
<option value="12">décembre</option>
</optgroup>
</select></p>
<p>mois fin:<select name="mois_fin" tabindex="5">
<optgroup>
<option value="1">janvier</option>
<option value="2">février</option>
<option value="3">mars</option>
<option value="4">avril</option>
<option value="5">mai</option>
<option value="6">juin</option>
<option value="7">juillet</option>
<option value="8">août</option>
<option value="9">septembre</option>
<option value="10">octobre</option>
<option value="11">novembre</option>
<option value="12">décembre</option>
</optgroup>
</select></p>
<p><input name="Valider" value="Valider" type="submit" /></p>
</form>

-------------------------------
fichier cible.php

<?php

// Connexion au serveur mysql
$connection=mysql_connect("localhost", "root", "");
mysql_select_db("eat-to-season", $connection);

if($connection)
{
$sql = "INSERT INTO liste-legumes (image,noms,couleurs,conservation,conseil_achat,provenance,printemps,ete,automne,hiver,mois_debut,mois_fin)
VALUES ('".$_POST['image']."',
'".$_POST['noms']."',
'".$_POST['couleurs']."',
'".$_POST['conservation']."',
'".$_POST['conseil_achat']."',
'".$_POST['provenance']."',
'".$_POST['printemps']."',
'".$_POST['ete']."',
'".$_POST['automne']."',
'".$_POST['hiver']."',
".$_POST['mois_debut'].",
".$_POST['mois_fin'].")
";
echo $sql;

$requete=mysql_query($sql);
mysql_close($connection);
}

Pourriez-vous m'aider à comprendre mon problème ou mes problèmes ?
Gothor a écrit :
Bonjour,
Que te renvoi ton echo ?



INSERT INTO liste-legumes (image,noms,couleurs,conservation,conseil_achat,provenance,printemps,ete,automne,hiver,mois_debut,mois_fin) VALUES ('../images/legumes/thumbs/1.jpg', 'ail blanc', 'blanc', 'addd', 'avvveddf', 'addddee', 'printemps', 'ete', 'automne', 'hiver', 1, 12)
Salut,
J'ai regardé vitement ton code et voici ce que j'ai vu; dans ta base de données, ta table s'appelle "liste_legumes" et tu tentes de faire une insertion dans la table "liste-legumes" ce qui n'est pas la même chose, et comme tu tentes d'insérer quelque chose dans une table qui n'exites pas, rien ne se produit.

Tu peux donc changer "liste-legumes" pour "liste_legumes". Smiley smile

Laisse moi le savoir si ça ne fonctionne toujours pas, je regarderai plus en profondeur.
JusteVal a écrit :


Tu peux donc changer &quot;liste-legumes&quot; pour &quot;liste_legumes&quot;. Smiley smile

Laisse moi le savoir si ça ne fonctionne toujours pas, je regarderai plus en profondeur.


salut, merci de venir à mon aide. J'ai corrigé cette faute d'écriture, mais je rencontre toujours le même souci.

est-ce que mon fichier cible.php est correct ? ou me suis-je trompé dans l'écriture de ma base ?? peut-être les checkbox ?
Salut,
j'ai regardé un peu mieux sur mon heure de lunch et voilà. C'est une autre erreur de frappe qui cause ton problème. Dans ta base tu as un champs qui se nomme "conseils_achat" tandis que dans ta requête c'est "conseil_achat". Je l'ai testé en local et une fois cette erreur corrigée, ton insertion se fait correctement.

Tu sais, personnellement, dans des cas comme celui-là, c'est presque toujours des fautes de frappe qui font bugger le truc, en prenant l'habitude de toujours bien vérifier le nom de tes variables et de tes champs tu t'éviteras bien des cheveux en moins. Smiley smile

Bonsoir!
JusteVal a écrit :
Salut,
j'ai regardé un peu mieux sur mon heure de lunch et voilà. C'est une autre erreur de frappe qui cause ton problème. Dans ta base tu as un champs qui se nomme &quot;conseils_achat&quot; tandis que dans ta requête c'est &quot;conseil_achat&quot;. Je l'ai testé en local et une fois cette erreur corrigée, ton insertion se fait correctement.

Tu sais, personnellement, dans des cas comme celui-là, c'est presque toujours des fautes de frappe qui font bugger le truc, en prenant l'habitude de toujours bien vérifier le nom de tes variables et de tes champs tu t'éviteras bien des cheveux en moins. Smiley smile

Bonsoir!


Salut, merci de ton aide, mais je rencontre toujours mon problème d'insertion dans la base de donnée. Pendant quelques minutes j'ai bien cru que mon problème serait résolu !!!
C'est vrai que trop obsédée par les fautes de frappes j'en ai oublié que j'ai changé la connexion à ta DB.

Dans ton fichier cible.php, changes ta ligne 5 pour celle-ci:
mysql_select_db("eat-to-season", $connection) or die("Impossible d'ouvrir la base de données ");

Ensuite, réessaies d'insérer quelque chose, comme ça tu verras au moins si ta connection à la DB se fait bien.

Si le message s'affiche c'est que le problème se situe au niveau de tes infos de connexion. Perso, je dois ajouter le password dans ma ligne 4 ( $connection=mysql_connect("localhost", "root", "root"); ) pour que ça fonctionne bien.

Une fois que tout ça fonctionne tu peux ôter le "or die" de ta ligne 5.

Tu me diras si ça fonctionne. Sinon c'est sûrement que j'ai utilisé une sorte de magie que je ne connais pas moi-même Smiley cligne
JusteVal a écrit :
Tu me diras si ça fonctionne. Sinon c'est sûrement que j'ai utilisé une sorte de magie que je ne connais pas moi-même Smiley cligne


Donne moi de ta magie !!

j'ai bien modifié mon fichier cible.php

<?php

// Connexion au serveur mysql
$connection=mysql_connect("localhost", "root", "");
mysql_select_db("eat-to-season", $connection) or die("Impossible d'ouvrir la base de données ");

if($connection)
{
$sql = "INSERT INTO liste_legumes (image,noms,couleurs,conservation,conseils_achat,provenance,proteines,glucides,fibres,calories,printemps,ete,automne,hiver,mois_debut,mois_fin)
VALUES ('".$_POST['image']."',
'".$_POST['noms']."',
'".$_POST['couleurs']."',
'".$_POST['conservation']."',
'".$_POST['conseils_achat']."',
'".$_POST['provenance']."',
".$_POST['proteines'].",
".$_POST['glucides'].",
".$_POST['fibres'].",
".$_POST['calories'].",
'".$_POST['printemps']."',
'".$_POST['ete']."',
'".$_POST['automne']."',
'".$_POST['hiver']."',
".$_POST['mois_debut'].",
".$_POST['mois_fin'].")
";
echo $sql;

$requete=mysql_query($sql);
mysql_close($connection);
}

// ?>

et je réceptionne ceci en echo : INSERT INTO liste_legumes (image,noms,couleurs,conservation,conseils_achat,provenance,proteines,glucides,fibres,calories,printemps,ete,automne,hiver,mois_debut,mois_fin) VALUES ('../images/legumes/thumbs/113.jpg', 'Ail blanc', 'blanc', 'essai', 'essai ', 'essai ', 6,7, 33, 3,1, 159, 'printemps', 'ete', 'automne', 'hiver', 6, 7)

donc ce n'est pas un problème de connexion à la base de donnée
est-ce que ce ne serait pas un problème dans ma base de donnée ? un type mal attribué ou un attribut... Smiley bawling
Bonjour,
Donc j'ai repéré deux problèmes :
1) Tu sembles vouloir insérer des nombres décimaux dans ta requête (6,7 et 3,1), en SQL, la virgule est représentée par un point dans les nombres, car la virgule sert de séparateur (du coup, là, il croit que tu veux insérer les valeurs, 6, 7, 3 et 1...).
Toutefois, remplacer 6,7 et 3,1 par 6.7 et 3.1 ne suffira pas car dans ta table, tes champs protéines et fibres sont de type "tiny int", donc de petits entiers, or tes nombres ne sont pas entiers, tu dois changer ce type par celui correspondant (number ou decimal ou je sais plus quoi, je n'utilise pas trop mysql...)
Gothor a écrit :
Bonjour,
Donc j'ai repéré deux problèmes :
1) Tu sembles vouloir insérer des nombres décimaux dans ta requête (6,7 et 3,1), en SQL, la virgule est représentée par un point dans les nombres, car la virgule sert de séparateur (du coup, là, il croit que tu veux insérer les valeurs, 6, 7, 3 et 1...).
Toutefois, remplacer 6,7 et 3,1 par 6.7 et 3.1 ne suffira pas car dans ta table, tes champs protéines et fibres sont de type &quot;tiny int&quot;, donc de petits entiers, or tes nombres ne sont pas entiers, tu dois changer ce type par celui correspondant (number ou decimal ou je sais plus quoi, je n'utilise pas trop mysql...)



super Gothor, tu as mis le doigt dessus !!!
POUR résumé attention aux nombres entier ou à virgules (point) et attention aux types dans la base sql !!

UN GRAND merci, je clos le sujet