Xeon Posté 4 Mai 2006 Posté 4 Mai 2006 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 ?
NorSeb Posté 4 Mai 2006 Posté 4 Mai 2006 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().
TheRec Posté 4 Mai 2006 Posté 4 Mai 2006 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
Xeon Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 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; } ?>
NorSeb Posté 4 Mai 2006 Posté 4 Mai 2006 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...
Xeon Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 Quelle est la méthode pour tester le retour. Pardonnez-moi mais je suis un peu novice.
Xeon Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant