Aller au contenu

Les mêmes données s'inscrivent et ne s'inscrivent


Sujets conseillés

Posté

Bonjour,

Il se passe quelque chose d'étonnant.

voici le script en entier

 <?php
   
 ##### SUPPRESSION #####
 if(isset($_GET['suppression'])) {

 mysql_query("DELETE FROM liste_partenaires WHERE id='".$_GET['suppression']."'");

 $rapport = '  
  <table width="90%"  border="0" cellpadding="3" cellspacing="0" class="bloc_ok">
           <tr>
             <td><strong>PARTENAIRE SUPPRIME ! </strong></td>
           </tr>
         </table>';
 
 }
 
   // si le formulaire est soumis
   if(isset($_POST['envoyer'])) {
 
   // si la case est vide
   if($_POST['code_html'] == '') {
 $rapport = '
 <table width="90%"  border="0" cellpadding="3" cellspacing="0" class="bloc_ok">
           <tr>
             <td><u>ATTENTION ! LA CASE EST VIDE ! </u></td>
           </tr>
         </table>';

 
 // sinon la case est remplit
 } else {
 
 // on rajoute un espace
 $code_html = $_POST['code_html'].'    ';
 
 // on enregsitre le partenaire
 mysql_query("INSERT INTO liste_partenaires VALUES('', '".$code_html."')");
 
 $rapport = '
 <table width="90%"  border="0" cellpadding="3" cellspacing="0" class="bloc_ok">
           <tr>
             <td><strong>Partenaire rajouté avec succès ! </strong></td>
           </tr>
         </table>';
 
 }    
   }
   
   if(isset($rapport)) {
   echo $rapport;
   }
   
   ?>
 
   Copier / coller le code dans cette case :<br />
   <form id="form1" name="form1" method="post" action="">
     <textarea name="code_html" cols="60" rows="4" id="code_html"></textarea>
     <br />
     <br />
     <input type="submit" name="envoyer" value="Ajouter le partenaire" />
   </form>
   <br />
   <br />
   <strong>LISTE DES PARTENAIRES :<br />
   <br />
   </strong>
   <table width="100%" border="1" cellpadding="5" cellspacing="1" bordercolor="#000000">
   <?php
   $recherche_partenaires = mysql_query("SELECT id, partenaire FROM liste_partenaires ORDER BY id");
   
   // on fait une boucle pour lister les partenaires actuels
   while($resultat_recherche_partenaires = mysql_fetch_array($recherche_partenaires)) {
   ?>    
           <tr>
             <td width="94%"><?php echo $resultat_recherche_partenaires['partenaire']; ?></td>
             <td width="6%"><a href="liens-partenaires.php?suppression=<?php echo $resultat_recherche_partenaires['id']; ?>"><img src="images/bouton-supprimer.gif" width="30" height="30" border="0" /></a></td>
           </tr>
 <?php
 
 // fin de la boucle
 }
 
 ?>

Le problème, c'est que quand je fait passer ce partenaire dans le formulaire :

<h1 style="color:#000000;margin:2px;padding:0px;width:140px;background-color:#FFFFFF;font-size:10px;font-weight:bold;font-family:arial, sans-serif;text-align:center;border:2px dotted #FF0000; "> <a href="http://annuaires.phpnet.org" target="_blank" style="text-decoration:none;color:#FF0000;">Annuaire</a> <a href="http://annuaires.phpnet.org/annuaire_religions/" target="_blank" style="text-decoration:none;color:#FF0000;">des Religions</a></h1>
    

Le programme me confirme l'inscription, il s'inscrit bien dans la bdd et s'affiche à l'écran.

Mais pour celui-ci : Même code !! Le programme me confirme l'inscription,, mais il ne s'enregistre pas dans la bdd.

<h1 style="color:#000000;margin:2px;padding:0px;width:100px;background-color:#FFFFFF;font-size:12px;font-weight:bold;font-family:arial, sans-serif;text-align:center;border:2px dotted #FF0000; "><a href="http://annuaires.phpnet.org" target="_blank" style="text-decoration:none;color:#FF0000;">Annuaire</a> 
<a href="http://annuaires.phpnet.org/annuaire_esoterisme/" target="_blank" style="text-decoration:none;color:#FF0000;">de l'Esotérisme </a></h1>

Quelqu'un pourrait-il me dire ce qui se passe ?

Posté

Bonjour,

Cela vient certainement de l'apostrophe dans "l'Esotérisme" qui fait échouer la requète. Il faut ajouter un '\' devant...

Ceci dit, dans ton code, tu ne vérifie à aucun moment si ta requète s'est bien passée. Mysql_query() renvoi un résultat que tu devrais analyser et éventuellement afficher des erreurs avec mysql_error().

Posté

Bonjour,

Vraisemblablement tu n'échappe pas les caractères de ta chaine de caractères $code_html avant de l'ajouter à ta table...

Utilise la fonction addslashes pour les chaînes de caractères lorsque tu ajoute un élément à ta base de données... par exemple :

mysql_query("INSERT INTO liste_partenaires VALUES('', '".addslashes($code_html)."')");

Et lorsque tu veux l'afficher, utilise la fonction stripslashes ...

Ainsi les caractères devant être échappés (single quotes, double quotes, ...) seront échappés et ne poseront pas de problème lors de l'insertion des données... regarde les pages du manuel PHP... et jette un il à la fonction mysql_real_escape_string

Posté

Effectivement, cela marche si j'enlève l'apostrophe de l'ésotérisme.

Cependant j'ai ajouté la fonction addslashes en testant avec l'apostrophe, et cela ne marche pas

  <?php
   
 ##### SUPPRESSION #####
 if(isset($_GET['suppression'])) {

 mysql_query("DELETE FROM liste_partenaires WHERE id='".$_GET['suppression']."'");

 $rapport = '  
  <table width="90%"  border="0" cellpadding="3" cellspacing="0" class="bloc_ok">
           <tr>
             <td><strong>PARTENAIRE SUPPRIME ! </strong></td>
           </tr>
         </table>';
 
 }
 
   // si le formulaire est soumis
   if(isset($_POST['envoyer'])) {
 
   // si la case est vide
   if($_POST['code_html'] == '') {
 $rapport = '
 <table width="90%"  border="0" cellpadding="3" cellspacing="0" class="bloc_ok">
           <tr>
             <td><u>ATTENTION ! LA CASE EST VIDE ! </u></td>
           </tr>
         </table>';

 
 // sinon la case est remplit
 } else {
 
 // on rajoute un espace
 $code_html = $_POST['code_html'].'    ';
 
 // on enregsitre le partenaire
 mysql_query("INSERT INTO liste_partenaires VALUES('', '".addslashes($code_html)."')");
 
 $rapport = '
 <table width="90%"  border="0" cellpadding="3" cellspacing="0" class="bloc_ok">
           <tr>
             <td><strong>Partenaire rajouté avec succès ! </strong></td>
           </tr>
         </table>';
 
 }    
   }
   
   if(isset($rapport)) {
   echo $rapport;
   }
   
   ?>
 

Posté

Bonjour,

"Ca ne marche pas" est une notion bien vague. Teste le retour de mysql_query et si tu as une erreur, affiche-la ainsi que la requète pour voir d'où ca vient.

Pour afficher la requète, il faut que tu la construise avant de l'exécuter...

Posté

Quelle est la méthode pour tester le retour.

Pardonnez-moi mais je suis un peu novice.

Posté

Oups, je téléchargeai pas les fichiers sur le bon serveur (même nom, mais ancienne version toujours configurée dans mon client FTP, d'où l'erreur). Du coup, les corrections avec stripslashes et addslashes, marchent impeccable.

Merci beaucoup.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...