> Tous les forumsForum des Webmasters

 problème de requète sqlSujet résolu
Statut du sujet : RESOLU Imprimer
 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

 Afficher le profil de GillquessoyEnvoyer un message privé à Gillquessoy
 
 
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é

Afficher le profil de ogd Voir la configuration de ogdEnvoyer un message privé à ogd
 Revenir en haut de la page
 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ù)

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 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

Afficher le profil de GillquessoyEnvoyer un message privé à Gillquessoy
 Revenir en haut de la page
 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

Afficher le profil de ogd Voir la configuration de ogdEnvoyer un message privé à ogd
 Revenir en haut de la page
 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!!

Afficher le profil de GillquessoyEnvoyer un message privé à Gillquessoy
 Revenir en haut de la page
 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.' ');

Afficher le profil de tirikouEnvoyer un message privé à tirikou
 Revenir en haut de la page
 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??

Afficher le profil de GillquessoyEnvoyer un message privé à Gillquessoy
 Revenir en haut de la page
 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

Afficher le profil de baptiste Voir la configuration de baptisteEnvoyer un message privé à baptiste
 Revenir en haut de la page
 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.


Afficher le profil de tirikouEnvoyer un message privé à tirikou
 Revenir en haut de la page
 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

Afficher le profil de baptiste Voir la configuration de baptisteEnvoyer un message privé à baptiste
 Revenir en haut de la page
 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 ...

Afficher le profil de tirikouEnvoyer un message privé à tirikou
 Revenir en haut de la page
 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.

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 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 ...

Afficher le profil de tirikouEnvoyer un message privé à tirikou
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte




Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page