Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3014 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème code PHP insertion données form dans DB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème code PHP insertion données form dans DB

n°2000568
_k a o s_
Posté le 10-06-2010 à 15:24:04  profilanswer
 

Je poste pour demander un peu d'aide, je vais devenir fou si ça continue  :pt1cable:  
 
Je cherche à entrer les données d'un simple formulaire dans une base de données pour permettre à un collègue d'ajouter des promotions sur son site.
 
Voici ce que j'ai fait:
 
formulaire:

Code :
  1. <form action="ajout_promo.php" method="post">
  2. Entrer le titre de la promo<br><input type="text" name="titre"><br>
  3. Nom EXACT du fichier pdf uploadé sur le FTP(sans l'extension pdf), attention il ne faut pas d'espace ! <br><input type="text" name="nom_fichier"><br>
  4. Description de la promo:<br>
  5. <textarea cols="50" rows="3"  name="description"></textarea><br>
  6. <input type="submit" value="Envoyer"> <input type="reset" value="Annuler"></form>


 
ajout_promo.php

Code :
  1. $titre = $_POST['titre'];
  2. $description = $_POST['description'];
  3. $nom_fichier = $_POST['nom_fichier'];
  4. mysql_connect("****.serveursdns.net", "xxx", "***" ) or die(mysql_error());
  5. mysql_select_db("qgh559" ) or die(mysql_error());
  6. mysql_query("INSERT INTO `promos` VALUES ('$titre', '$description', '$nom_fichier')" );


 
Table dans la DB:
http://img191.imageshack.us/img191/4836/tablex.jpg
 
Merci d'avance pour toute aide  :jap:


---------------
Best dressed chicken in town
mood
Publicité
Posté le 10-06-2010 à 15:24:04  profilanswer
 

n°2000569
stealth35
Posté le 10-06-2010 à 15:27:12  profilanswer
 

qu'est ce qui marche pas ? t'as une erreur ?

n°2000570
rufo
Pas me confondre avec Lycos!
Posté le 10-06-2010 à 15:29:44  profilanswer
 

Vue le mode d'insertion, je parie $100 que ça coince du fait qu'il n'a pas échappé certains caractères (l'apostrophe, par ex ou les guillemets) :/
 
edit : _k a o s_, attention aux sql injections!

Message cité 1 fois
Message édité par rufo le 10-06-2010 à 15:30:38

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2000571
_k a o s_
Posté le 10-06-2010 à 15:30:01  profilanswer
 

Nan pas d'erreur, mais ça ajoute rien dans ma db  :(


---------------
Best dressed chicken in town
n°2000572
_k a o s_
Posté le 10-06-2010 à 15:30:57  profilanswer
 

rufo a écrit :

Vue le mode d'insertion, je parie $100 que ça coince du fait qu'il n'a pas échappé certains caractères (l'apostrophe, par ex ou les guillemets) :/


 
Quels apostrophes/guillemets? :s


---------------
Best dressed chicken in town
n°2000573
rufo
Pas me confondre avec Lycos!
Posté le 10-06-2010 à 15:32:16  profilanswer
 

ben en même temps, si tu récupères pas l'erreur provenant de mysql_query(), tu risques pas de voir les erreurs remontées par mysql :/ 10 contre 1 qu'il va te mettre un syntax error dans la requête sql que tu tentes de lui faire avaler...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2000575
rufo
Pas me confondre avec Lycos!
Posté le 10-06-2010 à 15:35:45  profilanswer
 

_k a o s_ a écrit :


 
Quels apostrophes/guillemets? :s


à ton avis, tes variables php que t'as mises dans ta requête sql, y'a de bonnes chances qu'elles contiennent des apostrophes/guillemets. Donc ta requête "INSERT INTO `promos` VALUES ('$titre', '$description', '$nom_fichier')" va avoir un petit soucis d'interprétation :/
 
Si tu mets dans $titre ça : Je n'y suis pour "rien", n'est-ce pas?... Comment tu crois que php ou mysql vont réagir au moment où $titre va être replacée par son contenu?
 
 


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2000576
_k a o s_
Posté le 10-06-2010 à 15:39:06  profilanswer
 

Ah ouai pas bête =S
Comment je peut contourner ce problème?
 
Pour les SQL injections j'essaierai de m'occuper de la sécu une fois que ça marchera  :(
edit: cela dit j'ai mis un password avec session pour accéder à la page d'ajout (on peut pas y aller sans passer par le login)


Message édité par _k a o s_ le 10-06-2010 à 15:39:56

---------------
Best dressed chicken in town
n°2000580
stealth35
Posté le 10-06-2010 à 15:46:50  profilanswer
 

_k a o s_ a écrit :

Nan pas d'erreur, mais ça ajoute rien dans ma db  :(

 


faut faire un "or die(mysql_error());"  apres ton mysql_query


Message édité par stealth35 le 10-06-2010 à 15:46:58
n°2000581
_k a o s_
Posté le 10-06-2010 à 15:49:31  profilanswer
 

Il me renvoie ça...  
 

Code :
  1. Column count doesn't match value count at row 1


---------------
Best dressed chicken in town
mood
Publicité
Posté le 10-06-2010 à 15:49:31  profilanswer
 

n°2000583
SICKofitAL​L
misanthrope
Posté le 10-06-2010 à 15:52:27  profilanswer
 

Tu peux utiliser cette syntaxe :

Code :
  1. INSERT INTO `promos` SET titre = '$titre', description='$description', nom_fichier='$nom_fichier'


 
Comme dis, attention à "nettoyer" tes chaines (guillements, html, etc...) avant de les insérer ;)


---------------
We deserve everything that's coming...
n°2000585
stealth35
Posté le 10-06-2010 à 15:56:07  profilanswer
 

_k a o s_ a écrit :

Il me renvoie ça...  
 

Code :
  1. Column count doesn't match value count at row 1



 
c'est parce que avec ta syntax VALUE il attend l'id aussi, faudrais soit faire
 

Code :
  1. INSERT INTO `promos` VALUES (null, '$titre', '$description', '$nom_fichier')


 
soit  
 

Code :
  1. INSERT INTO `promos` (titre, description, nom_fichier) VALUES ('$titre', '$description', '$nom_fichier')


 
ou mieux ce que dis SICKofitALL  ;)  

n°2000588
_k a o s_
Posté le 10-06-2010 à 15:59:44  profilanswer
 

Exact, avec ta syntaxe ça fonctionne SICKofitALL  :jap:
 
Je me renseigne pour le nettoyage des chaînes


Message édité par _k a o s_ le 10-06-2010 à 16:00:12

---------------
Best dressed chicken in town
n°2000592
SICKofitAL​L
misanthrope
Posté le 10-06-2010 à 16:15:57  profilanswer
 

tu peux commencer par jeter un oeil sur les fonctions mysql_real_escape_string et strip_tags par exemple :)


---------------
We deserve everything that's coming...
n°2000593
_k a o s_
Posté le 10-06-2010 à 16:19:59  profilanswer
 

Ok merci pour l'indication ;)


---------------
Best dressed chicken in town
n°2000609
_k a o s_
Posté le 10-06-2010 à 17:16:13  profilanswer
 

j'ai encore un soucis  :(  
 
J'ai codé l'affichage de la table SQL dans ma page promotions, mais j'ai le champ description qui ne s'affiche pas  :??:  
 
Voilà le code:

Code :
  1. mysql_connect("****.serveursdns.net", "xxxx", "xxxx" );
  2. mysql_select_db(qgh599);
  3. $sql="SELECT * FROM promos";
  4. $req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  5. echo "Promotions en cours:<br><br>";
  6. while($data=mysql_fetch_assoc($req)) {
  7.     $titre=$data["titre"];
  8.     $descr=$data["desciption"];
  9.     $nom_fich=$data["nom_fichier"];
  10.     echo "<u>".$titre."</u>:<br>";
  11.     echo "<i>".$description."</i><br>";
  12.     echo "<b><a href='promos/".$nom_fich.".pdf'>Fichier PDF descriptif</a></b><br><br>";
  13. }


 
Merci pour votre aide  :jap:


---------------
Best dressed chicken in town
n°2000613
stealth35
Posté le 10-06-2010 à 17:22:13  profilanswer
 

normale t'as fais une faute a "description"
 
je te conseil de bosser en erreur : E_ALL | E_STRICT

n°2000628
_k a o s_
Posté le 10-06-2010 à 17:43:20  profilanswer
 

C'est bon merci  :jap:


Message édité par _k a o s_ le 10-06-2010 à 17:44:26

---------------
Best dressed chicken in town
n°2000762
rufo
Pas me confondre avec Lycos!
Posté le 11-06-2010 à 09:41:14  profilanswer
 

Et merci d'apprendre le html avant le php :/ Remplace ce bout de code

Code :
  1. while($data=mysql_fetch_assoc($req)) {
  2.      $titre=$data["titre"];
  3.      $descr=$data["desciption"];
  4.      $nom_fich=$data["nom_fichier"];
  5.      echo "<u>".$titre."</u>:<br>";
  6.      echo "<i>".$description."</i><br>";
  7.      echo "<b><a href='promos/".$nom_fich.".pdf'>Fichier PDF descriptif</a></b><br><br>";
  8. }


 
par  

Code :
  1. echo "<dl>";
  2. while($data=mysql_fetch_assoc($req)) {
  3.      $titre=$data["titre"];
  4.      $descr=$data["desciption"];
  5.      $nom_fich=$data["nom_fichier"];
  6.      echo "<dt>$titre :</dr>";
  7.      echo "<dd class=\"description\">$description</dd>";
  8.      echo "<dd class=\"lien\"><a href=\"promos/$nom_fich.pdf\">Fichier PDF descriptif</a></dd>";
  9. }
  10. echo "</dl>";



---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème code PHP insertion données form dans DB

 

Sujets relatifs
Problème d'utilisation de DSN avec socket (PHP &PEAR)problème javascript
Formater des donnéesASM Gros problème :"(
Problème rechercher et remplacer sous Access[Résolu] Petit problème "for" déjà dans une boucle ...
Temps d'attent avant d'appler un fonction PHP[RESOLU] [SHELL] extraction et reformattage des données d'un fichier
Plus de sujets relatifs à : Problème code PHP insertion données form dans DB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR