|
| Gillquessoy | Posté le 08/10/2008 @ 19:27 |
Petit astucien
156 Messages
| 
bonjour!
j'ai un petit problème avec une requète sql, j'ai créé une page avec deux zones de saisie de texte et un bouton "envoyer" qui devrais envoyer mon texte sur ma base de données , qui elle la renvoie sur la page concernée, sur mon site.
Quand j'envoie ma base de donnée recoit bien l'info comme quoi elle a reçu une info mais le texte saisit n'a pas suivit.
J epense que le problème se situe dans la ligne:
mysql_query("INSERT INTO resume_a VALUES ('', '". $titre ." ', '". $resume ."')") or die(mysql_error());;
mais moi je vois pas 
voici le code complet de la page:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Résumé équipe A</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css"> h3, form { text-align:center; } </style> </head> <body> <?php mysql_connect("localhost", "", ""); mysql_select_db("u_s_quessoy"); if (isset($_GET['modifier_resume_a'])) // Si on demande de modifier une news { // On protège la variable "modifier_news" pour éviter une faille SQL $_GET['modifier_resume_a'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_resume_a'])); // On récupère les infos de la news correspondante $retour = mysql_query('SELECT * FROM resume_a WHERE id=\'' . $_GET['modifier_resume_a'] . '\''); $donnees = mysql_fetch_array($retour); // On place le titre et le contenu dans des variables simples $titre = stripslashes($donnees['titre']); $resume = stripslashes($donnees['resume']); $id_resume_a = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification } else { $titre = ''; $resume = ''; $id_resume_a = 0; mysql_query("INSERT INTO resume_a VALUES ('', '". $titre ." ', '". $resume ."')") or die(mysql_error());;
} ?> <p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p> <p> Résumé :<br /> <textarea name="resume" cols="50" rows="10"> <?php echo $resume; ?> </textarea><br /> <input type="hidden" name="id_resume_a" value="<?php echo $id_resume_a; ?>" /> <input type="submit" value="Envoyer" > </p> </form> </body> </html>
merci d'avance
|
| |
| |
| Publicité |
|
|
| ogd | Posté le 09/10/2008 à 16:28 |
Astucien
2047 Messages
| Message original par Gillquessoy
J epense que le problème se situe dans la ligne:
mysql_query("INSERT INTO resume_a VALUES ('', '". $titre ." ', '". $resume ."')") or die(mysql_error());;
Je suis loin d'être un pro, vu les questions que je pose aussi
Et comme ça si mo aide est mauvaise je pourrais me faire taper sur les doigts..
Mais il me semble qu'en fait, tu lui dit quoi ajouter mais pas dans quels champs de ta base...
Voilà ce que j'ai dans mon propre formulaire:
mysql_query("INSERT INTO mp3(artiste,titre,img,son,video) ->la liste des champs qui seront remplis dans la bdd VALUES('$Artiste','$Titre','$Visuel','$Mp3','$Vidéo')") ->les valeurs à ajouter dans ces champs or die("Ecriture impossible");
En espérant ne pas me tromper et t'avoir aidé |
| |
|
| Malcolm | Posté le 09/10/2008 à 19:02 |
Astucien
7299 Messages
| ogd > aïe aïe aïe ... Et si jamais ta requête comporte des caractères spéciaux, comme l'apostrophe par exemple ? (en supposant que l'échappement automatique ne soit pas activé).
gill > si le texte "n'a pas suivi", peut-être est-ce parce qu'il est trop long ou pas du bon type ... Par exemple, si tu insères la phrase dans un champ de type VARCHAR(5) : "Bonjour, comment vas-tu ?" il n'insèrera que "Bonjo".
Si tu insères cette même phrase dans un champ de type INT, il laissera un zéro.
Est-ce que mysql_error te renvoie une erreur particulière ? (je ne pense pas, tu l'aurais précisé, mais je demande au cas où)
|
| |
|
| Gillquessoy | Posté le 09/10/2008 à 19:02 |
Petit astucien
156 Messages
| En fait non. on n'est pas obligé de préciser le nom des colonnes de la table si on n'insère le même nombre de valeurs que le nombres de colonnes.
Ici j'ai trois colonnes dont une colonne id qui se remplit automatiquement à chaque envois
et deux colonnes de texte (titre et resume) qui prennent leur place dans les deux dernières colonnes
donc ça ne vient pas de là!
a l'aide 
|
| |
|
| ogd | Posté le 09/10/2008 à 20:10 |
Astucien
2047 Messages
| oups desolé, 
Mais bon,ça partait d'un bon sentiment 
Ben pourtant, dans mon formulaire d'ajout de données, j'en ai des accents et des apostrophes et ça marche???
Tu vois de quoi je parle, je t'ai assez cassé les pieds avec ma base de données malcolm (d'ailleurs, un tit coup de main dans mon post original me ferait le plus grand plaisir 
Bonne chance pour résoudre ton souci,Gillquessoy et bonne soirée à tous |
| |
|
| Gillquessoy | Posté le 09/10/2008 à 20:32 |
Petit astucien
156 Messages
| mes deux champs sont de type texte et le mysql_error ne me renvoie rien du tout!! |
| |
|
| tirikou | Posté le 09/10/2008 à 21:21 |
Astucien
1006 Messages
| Bonjour,
Déjà ta requête il y a deux ";" à la fin
mysql_query("INSERT INTO resume_a VALUES ('', '". $titre ." ', '". $resume ."')") or die(mysql_error());;
Ensuite, perso je ne rentre pas les variables comme ça mais :
mysql_query("INSERT INTO resume_a VALUES ('', '$titre', '$resume')") or die(mysql_error());
Enfin, mysql n'aime pas qu'on lui passe en parametre des $_GET ou des $_POST
$_GET['modifier_resume_a'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_resume_a'])); // On récupère les infos de la news correspondante $retour = mysql_query('SELECT * FROM resume_a WHERE id=\'' . $_GET['modifier_resume_a'] . '\'');
(vois aussi le doublequote qui ferme ta requete ouverte avec une simplequote ...)
Essai de faire plutot :
$modifier_resume_a = mysql_real_escape_string(htmlspecialchars($_GET['modifier_resume_a'])); // On récupère les infos de la news correspondante $retour = mysql_query('SELECT * FROM resume_a WHERE id='.$modifier_resume_a.' ');
|
| |
|
| Gillquessoy | Posté le 09/10/2008 à 21:39 |
Petit astucien
156 Messages
| toujours pas d'amélioration
l'id arrive bien mais pas le texte?? |
| |
|
| baptiste | Posté le 09/10/2008 à 21:49 |
Equipe PC Astuces
| bonjour,
le texte contient-il un apostrophe ?
Si oui, ça ne passera pas correctement. Perso je fais plus comme cela :
$result = mysql_query("INSERT INTO resume_a VALUES ('', \"". $titre ."\", \"". $resume ."\");");
sinon essaie d'afficher les valeurs de tes variables juste avant l'exécution de ta requête pour voir s'il n'y a pas un souci |
| |
|
| tirikou | Posté le 09/10/2008 à 21:51 |
Astucien
1006 Messages
| Dans ton formulaire tu n'as d'ouverture de balise form. Tu n'indique pas non plus la méthode d'envoi (post ou get) ni sur quelle page (action=).
Tu récupères une variable $_GET['modifier_resume_a'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_resume_a']));
alors que dans ton form le name est id_resume_a
Ce qui devrait envoyer soit une $_GET['id_resume_a']
soit une $_POST['id_resume_a']
Tes names de formulaires sont titre, resume et id_resume_a. Je vois pas comment tu peux récupérer une $_GET modifier_resume_a.
|
| |
|
| baptiste | Posté le 09/10/2008 à 21:54 |
Equipe PC Astuces
| tirikou a écrit :
Dans ton formulaire tu n'as d'ouverture de balise form. Tu n'indique pas non plus la méthode d'envoi (post ou get) ni sur quelle page (action=).
Tu récupères une variable $_GET['modifier_resume_a'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_resume_a']));
alors que dans ton form le name est id_resume_a
Ce qui devrait envoyer soit une $_GET['id_resume_a']
soit une $_POST['id_resume_a']
Tes names de formulaires sont titre, resume et id_resume_a. Je vois pas comment tu peux récupérer une $_GET modifier_resume_a.
salut,
je ne m'étais concentré que sur la requête, pensant que si on faisait du SQL par défaut on montait correctement son formulaire. En effet ce que tu cites n'aide pas ! Le problème en devient évident, et la réponse aussi  |
| |
|
| tirikou | Posté le 09/10/2008 à 21:59 |
Astucien
1006 Messages
| De plus envoyer le contenu d'un textarea par GET est au minimum inconscient sinon suicidaire ... |
| |
|
| Malcolm | Posté le 10/10/2008 à 19:28 |
Astucien
7299 Messages
| par POST aussi, tirikou, au même titre ... POST a juste les avantages 1- de pouvoir joindre un fichier et 2- de pouvoir avoir une URL propre, en masquant l'envoi du formulaire. MAis c'est tout autant risqué, tu peux me croire. |
| |
|
| tirikou | Posté le 10/10/2008 à 21:04 |
Astucien
1006 Messages
| Yes malcolm mais ...
par get tu es limité dans la taille du texte de ton textarea .... (longueur d'url ...)
Et par post tu peux toujours protéger la récup de tes variables.
Et pi sinon, si tu vises la lune et que ne l'atteint pas, au moins t'es dans les étoiles ... |
| |
|
|
| Haut de la page |