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

  FORUM HardWare.fr
  Programmation
  PHP

  Corriger erreur php: modification de base données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Corriger erreur php: modification de base données

n°2178108
elabadiabd​elmoula
Posté le 01-03-2013 à 11:19:40  profilanswer
 

salam tout le monde:
 
brabi svp j'ai un problem:
 
j'ai crée une base données contenant table "cr". j'ai hébergé mon site & ça fonctionne bien...
je veux par PHP modifier le contenu de la table "cr"
 
alors voici les 3 pages php que j'ai crée:
 
crmodification.php :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>crmodification3</title>
  6. </head>
  7. <body>
  8. <?php
  9. // Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
  10. header('Content-type: text/html; charset=UTF-8');
  11.   //connection au serveur:
  12.     $cnx = mysql_connect( "host", "user", "xxx" ) ;
  13.     //sélection de la base de données:
  14.     $db = mysql_select_db( "AAAAA" ) ;
  15.     // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
  16.          mysql_query("SET NAMES 'utf8'" );
  17. //requête SQL:
  18.     $sql = "SELECT *
  19.       FROM cr
  20.       ORDER BY no" ;
  21.     //exécution de la requête:
  22.     $requete = mysql_query( $sql, $cnx ) ;
  23.     //affichage des données:
  24.     while( $result = mysql_fetch_object( $requete ) )
  25.     {
  26.        echo(
  27.            "<div align=\"center\">"
  28.            .$result->no." ".$result->nom." ".$result->cin."<a href=\"crmodification2.php?idPersonne=".$result->no."\">modifier</a></div>\n"
  29.        ) ;
  30.     }
  31.   ?>
  32. </body>
  33. </html>


puis page2: crmodification2.php

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>crmodification3</title>
  6. </head>
  7. <body>
  8. <?php
  9. // Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
  10. header('Content-type: text/html; charset=UTF-8');
  11.   //connection au serveur:
  12.     $cnx = mysql_connect( "host", "user", "xxx" ) ;
  13.     //sélection de la base de données:
  14.     $db = mysql_select_db( "AAAAA" ) ;
  15.     // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
  16.          mysql_query("SET NAMES 'utf8'" );
  17. //récupération de la variable d'URL,
  18.   //qui va nous permettre de savoir quel enregistrement modifier
  19.   $id  = $_GET["idPersonne"] ;
  20.   //requéte SQL:
  21.   $sql = "SELECT *
  22.             FROM cr
  23.     WHERE no = ".$id ;
  24.   //exécution de la requéte:
  25.   $requete = mysql_query( $sql, $cnx ) ;
  26.   //affichage des données:
  27.   if( $result = mysql_fetch_object( $requete ) )
  28.   {
  29.   ?>
  30.  
  31.   <form name="insertion" action="crmodification3.php" method="POST">
  32.   <input type="hidden" name="no" value="<?php echo($id) ;?>">
  33.   <table border="0" align="center" cellspacing="2" cellpadding="2">
  34.    <tr align="center">
  35.       <td>no</td>
  36.       <td><input type="text" name="no" value="<?php echo($result->no) ;?>"></td>
  37.     </tr>
  38. <tr align="center">
  39.       <td>nom</td>
  40.       <td><input type="text" name="nom" value="<?php echo($result->nom) ;?>"></td>
  41.     </tr>
  42. <tr align="center">
  43.       <td>cin</td>
  44.       <td><input type="text" name="cin" value="<?php echo($result->cin) ;?>"></td>
  45.     </tr>
  46.     <tr align="center">
  47.       <td>identifiant unique</td>
  48.       <td><input type="text" name="identifiantunique" value="<?php echo($result->identifiantunique) ;?>"></td>
  49.     </tr>
  50.     <tr align="center">
  51.       <td>date naissance</td>
  52.       <td><input type="text" name="datenaissance" value="<?php echo($result->datenaissance) ;?>"></td>
  53.     </tr>
  54.     <tr align="center">
  55.       <td>lieu naissance</td>
  56.       <td><input type="text" name="lieunaissance" value="<?php echo($result->lieunaissance) ;?>"></td>
  57.     </tr>
  58.     <tr align="center">
  59.       <td>etat civil</td>
  60.       <td><input type="text" name="etatcivil" value="<?php echo($result->etatcivil) ;?>"></td>
  61.     </tr>
  62. <tr align="center">
  63.       <td>enfants</td>
  64.       <td><input type="text" name="enfants" value="<?php echo($result->enfants) ;?>"></td>
  65.     </tr>
  66. <tr align="center">
  67.       <td>grade actuel</td>
  68.       <td><input type="text" name="gradeactuel" value="<?php echo($result->gradeactuel) ;?>"></td>
  69.     </tr>
  70. <tr align="center">
  71.       <td>grade entree</td>
  72.       <td><input type="text" name="gradeentree" value="<?php echo($result->gradeentree) ;?>"></td>
  73.     </tr>
  74. <tr align="center">
  75.       <td>date entree</td>
  76.       <td><input type="text" name="dateentree" value="<?php echo($result->dateentree) ;?>"></td>
  77.     </tr>
  78. <tr align="center">
  79.       <td>grade obtention</td>
  80.       <td><input type="text" name="gradeobtention" value="<?php echo($result->gradeobtention) ;?>"></td>
  81.     </tr>
  82. <tr align="center">
  83.       <td>fonction</td>
  84.       <td><input type="text" name="fonction" value="<?php echo($result->fonction) ;?>"></td>
  85.     </tr>
  86. <tr align="center">
  87.       <td>diplomes</td>
  88.       <td><input type="text" name="diplomes" value="<?php echo($result->diplomes) ;?>"></td>
  89.     </tr>
  90. <tr align="center">
  91.       <td>intirimes</td>
  92.       <td><input type="text" name="intirimes" value="<?php echo($result->intirimes) ;?>"></td>
  93.     </tr>
  94. <tr align="center">
  95.       <td>stages & formations</td>
  96.       <td><input type="text" name="stagesformations" value="<?php echo($result->stagesformations) ;?>"></td>
  97.     </tr>
  98. <tr align="center">
  99.       <td>tel</td>
  100.       <td><input type="text" name="tel" value="<?php echo($result->tel) ;?>"></td>
  101.     </tr>
  102. <tr align="center">
  103.       <td>adresse</td>
  104.       <td><input type="text" name="adresse" value="<?php echo($result->adresse) ;?>"></td>
  105.     </tr>
  106. <tr align="center">
  107.       <td>domiciliation salaire</td>
  108.       <td><input type="text" name="domiciliationsalaire" value="<?php echo($result->domiciliationsalaire) ;?>"></td>
  109.     </tr>
  110. <tr align="center">
  111.       <td>no compte</td>
  112.       <td><input type="text" name="nocompte" value="<?php echo($result->nocompte) ;?>"></td>
  113.     </tr>
  114. <tr align="center">
  115.       <td>postes anterieurs</td>
  116.       <td><input type="text" name="postesanterieurs" value="<?php echo($result->postesanterieurs) ;?>"></td>
  117.     </tr>
  118.     <tr align="center">
  119.       <td colspan="2"><input type="submit" value="modifier"></td>
  120.     </tr>
  121.   </table>
  122. </form>
  123. <?php
  124.   }//fin if  
  125.   ?>
  126. </body>
  127. </html>


et finallement la page3: crmodification3.php

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>crmodification3</title>
  6. </head>
  7. <body>
  8. <?php
  9. // Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
  10. header('Content-type: text/html; charset=UTF-8');
  11.   //connection au serveur:
  12.     $cnx = mysql_connect( "host", "user", "xxx" ) ;
  13.     //sélection de la base de données:
  14.     $db = mysql_select_db( "AAAAA" ) ;
  15.     // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
  16.          mysql_query("SET NAMES 'utf8'" );
  17. //récupération des valeurs des champs:
  18.   //nom:
  19.   $nom     = $_POST["nom"] ;
  20.   //prenom:
  21.   $cin = $_POST["cin"] ;
  22.     //identifiantunique:
  23.   $identifiantunique = $_POST["identifiantunique"] ;
  24.   //datenaissance:
  25.   $datenaissance        = $_POST["datenaissance"] ;
  26.   //lieunaissance:
  27.   $lieunaissance       = $_POST["lieunaissance"] ;
  28. //etatcivil:
  29.   $etatcivil       = $_POST["etatcivil"] ;
  30.   //enfants:
  31.   $enfants       = $_POST["enfants"] ;
  32.    //gradeactuel:
  33.   $gradeactuel       = $_POST["gradeactuel"] ;
  34.     //gradeentree:
  35.   $gradeentree       = $_POST["gradeentree"] ;
  36.     //dateentree:
  37.   $dateentree       = $_POST["dateentree"] ;
  38.     //gradeobtention:
  39.   $gradeobtention       = $_POST["gradeobtention"] ;
  40.     //fonction:
  41.   $fonction       = $_POST["fonction"] ;
  42.     //diplomes:
  43.   $diplomes       = $_POST["diplomes"] ;
  44.     //intirimes:
  45.   $intirimes       = $_POST["intirimes"] ;
  46.     //stagesformations:
  47.   $stagesformations       = $_POST["stagesformations"] ; 
  48.     //tel:
  49.   $tel       = $_POST["tel"] ;
  50.     //adresse:
  51.   $adresse       = $_POST["adresse"] ;
  52.     //domiciliationsalaire:
  53.   $domiciliationsalaire       = $_POST["domiciliationsalaire"] ;
  54.     //nocompte:
  55.   $nocompte       = $_POST["nocompte"] ;
  56.     //postesanterieurs:
  57.   $postesanterieurs       = $_POST["postesanterieurs"] ;
  58.  
  59.    //récupération de l'identifiant de la personne:
  60.   $id         = $_POST["no"] ;
  61.  
  62.   //création de la requéte SQL:
  63.   $sql = "UPDATE cr
  64.             SET nom         = '$nom',
  65.       cin         = '$cin',
  66.       identifiantunique         = '$identifiantunique',
  67.       datenaissance         = '$datenaissance',
  68.       lieunaissance         = '$lieunaissance',
  69.       etatcivil         = '$etatcivil',
  70.       enfants         = '$enfants',
  71.       gradeactuel         = '$gradeactuel',
  72.       gradeentree         = '$gradeentree',
  73.       dateentree         = '$dateentree',
  74.       gradeobtention         = '$gradeobtention',
  75.             fonction     = '$fonction',
  76.          diplomes    = '$diplomes',
  77.          intirimes           = '$intirimes',
  78.          stagesformations = '$stagesformations',
  79.    tel           = '$tel',
  80.    adresse       = '$adresse',
  81.    domiciliationsalaire       = '$domiciliationsalaire',
  82.    nocompte       = '$nocompte',
  83.    postesanterieurs = '$postesanterieurs',
  84.            WHERE no = '$id' " ;
  85.   //exécution de la requéte SQL:
  86.   $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  87.   //affichage des résultats, pour savoir si la modification a marchée:
  88.   if($requete)
  89.   {
  90.     echo("La modification a été correctement effectuée" ) ;
  91.   }
  92.   else
  93.   {
  94.     echo("La modification a échoué" ) ;
  95.   }
  96. ?>
  97. </body>
  98. </html>


...
le probleme : il ya erreur qui s'affiche lors de la modification:
je reçois ce message "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE no = '17'' at line 22"
merci pour votre aide :)  

mood
Publicité
Posté le 01-03-2013 à 11:19:40  profilanswer
 

n°2178109
Volkhen
Posté le 01-03-2013 à 11:36:11  profilanswer
 

Une virgule de trop avant le WHERE.
Les messages d'erreur ce n'est pas fait pour être ignoré.


---------------
Main/Alt1/Alt2/Alt3
n°2178110
skeye
Posté le 01-03-2013 à 11:37:22  profilanswer
 

Affiche la requête générée et cherche l'erreur de syntaxe.
 
Au passage tu devrais te pencher sur les requêtes préparées : en l'état le premier hacker venu te vide la base de données sans le moindre effort.


---------------
Can't buy what I want because it's free -
n°2178127
elabadiabd​elmoula
Posté le 01-03-2013 à 12:29:47  profilanswer
 

Volkhen a écrit :

Une virgule de trop avant le WHERE.
Les messages d'erreur ce n'est pas fait pour être ignoré.


 
allah yarhem waldik  
(dieu te recompense en protégeant tes parents)
merci infiniment... ça marche bien maintenant

n°2178128
elabadiabd​elmoula
Posté le 01-03-2013 à 12:30:21  profilanswer
 

skeye a écrit :

Affiche la requête générée et cherche l'erreur de syntaxe.
 
Au passage tu devrais te pencher sur les requêtes préparées : en l'état le premier hacker venu te vide la base de données sans le moindre effort.


: allah yarhem waldik  
(dieu te recompense en protégeant tes parents)
merci infiniment... ça marche bien maintenant

n°2178135
rufo
Pas me confondre avec Lycos!
Posté le 01-03-2013 à 13:13:33  profilanswer
 

skeye veut parler des hack par SQL injection. D'où l'utilité des requêtes préparées (prepared statement) qu'on trouve, par ex avec PDO.
 
Par ailleurs, faudra penser à "épurer" le contenu saisi dans les champs pour gérer les pbs de caractères pouvant poser des pbs lors de l'insertion comme l'apostrophe ou le guillemet.
 
Pareil à l'affichage dans tes champs HTML. Tu auras un pb si une valeur contient un guillemet (voir du côté de la fonction htmlspecialchars()).
 
De même, pour te protéger des failles XSS, il faudra retirer les codes html ou javascript mis dans tes champs. strip_tags() pourra t'aider en partie ;)


---------------
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

  Corriger erreur php: modification de base données

 

Sujets relatifs
Comment copier coller des données d'un classeur à un autre ?Erreur sur un script PHP affichant plusieurs
Erreur d'execution '9' : L'indice n'appartient pas à la sélectionconnection à une base Oracle sous java avec JDBC
Afficher des données sur ma page d'accueil JSPModification logciel
flux de données en JAVAscript de modification de chemin dans Outlook
Probleme ERREUR PDO[BATCH] modification hosts
Plus de sujets relatifs à : Corriger erreur php: modification de base données


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