Ugo Posté 10 Août 2008 Posté 10 Août 2008 Bonjour a tous les Hubmasters Je m'appelle Ugo, et j'ai besoin d'un ptit coup de main en PHP / MySQL pour un site. Voici ce dont j'ai besoin : J'ai un formulaire qui marche super bien, qui enregistre dans une base de donnee MySQL et qui envoie un mail a meme temps. Tout est ok... Seulement, il faudrait qu'apres avoir envoyer ce formulaire (3 ou 4 h apres), une autre personne viennent et verifie tout ca (Car ce qui a ete rentre precedement est reaffiche en dessous) et si c'est ok, qu'il coche une checkbox du style "Ready" (C'est pas rapport a des show people sur internet). Puis qu'il clique sur un bouton Submit par exemple, et que la checkbox reste coche jusqu'a ce que le formulaire soit reremplit (Lorsque un nouveau formulaire est envoye, la checkbox se reinitialise). Pour ca, j'ai : Une base de donnee avec un table nomme "de1a" et qui contient une column "id", "Date", "title1a", "description1a", "title1b", "description1b", "ckbx1". Ce qui m'interesse est la ckbx1 (pour la checkbox) qui est en TYNINT(1) et qui a pour defaut 0. Mon code pour la Checkbox est celui ci : <label><input type="checkbox" name="publish" value="1" />Shows ready</label> avec un systeme de POST : <form action="fichier.php" method="post" name="form1" class="style15" id="form1"> Mon "fichier.php" comprend ceci pour le traitement de la checkbox : $publish = $_POST['publish'];if (publish != NULL) { publish == 1; } else { publish == 0; } mysql_query("Insert into de1a (ckbx1) values ('".$publish."')"); Avec bien entendu mysql_connect avant. Lorsque je coche la box, et que je clique sur Submit, cela rentre bien "1" au lieu de 0 dans la base de donnee... mais la checkbox ne se reaffiche pas coche mais Decochee... Je pense que tout mon code n'est pas bon... Si quelqu'un pourrait m'aider avec cela, ca serait super gentil ! Amicalement, Ugo
Dan Posté 10 Août 2008 Posté 10 Août 2008 Vérifie ton code, il n'est pas correct $publish = $_POST['publish'];if ($publish != NULL) { $== 1; } else { $publish == 0; } Dan
Ugo Posté 10 Août 2008 Auteur Posté 10 Août 2008 Merci beaucoup pour la reponse, mais entre temps j'avais deja corrige cette erreur... et ca marche toujours pas... Voici mon traitement en entier <?php $db = mysql_connect('***', '***', '***') or die('Erreur de connexion '.mysql_error());mysql_select_db('***',$db) or die('Erreur de selection '.mysql_error()); $publish = $_POST['publish'];if ($publish != NULL) {$== 1;}else {$publish == 0;}mysql_query(UPDATE "de1a" SET "ckbx1" = "$publish" WHERE "ckbx1");$sql = "INSERT INTO de1a(id,Date,title1a,description1a,title1b,description1b,ckbx1) VALUES('','$date','$title1a','$desc1a', '$title1b', '$desc1b', '$publish')"; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); echo "Submitting Ready checkbox - Thank you for checking."; echo "<meta http-equiv='refresh' content='3;url=http://www.*******.com/test/'>"; mysql_close();?> Le ckbx1 est ma column. Je pense que l'erreur vient du WHERE. Car j'ai une erreur au moment de l'envoie et dans mon formulaire, car si jamais j'ai 1 la case es quand meme decoche (Comme quand j'ai 0). Merci pour votre aide ! Ugo
Kioob Posté 10 Août 2008 Posté 10 Août 2008 (modifié) Bonjour, c'est marrant dans ton erreur "déjà corrigée" tu as pourtant exactement ce que Dan a indiqué, y compris la faute de frappe. J'en remets une couche : $publish = (int) ( isset( $_POST['publish'] ) and ( $_POST['publish'] === '1' ) ); Il y a probablement des parenthèses en trop ou manquantes, mais je n'ai pas le courage de recompter ni tester, dsl. Si ça ne fonctionne toujours pas, commence par apprendre à débugger un minimum. Par exemple fait un var_dump() de la requête juste avant de l'exécuter, et active l'affichage des erreurs : error_reporting( E_ALL | E_STRICT );. Modifié 10 Août 2008 par Kioob
Ugo Posté 10 Août 2008 Auteur Posté 10 Août 2008 Bonjour. Bon ecoutez, je vais reformuler. Je ne sais pas faire ce genre de chose avec PhP et MySQL, je ne suis pas un Webmaster pro, j'ai 14 ans, et j'apprends petit a petit Donc si quelqu'un peut m'expliquer comment faire un systeme de checkbox qui update la derniere entree de la table et qui s'affiche cochee si elle l'a ete ou decoche si rien n'a ete fait... Ou bien me donner un lien... Merci beaucoup. Ugo
iNCiTE Web Posté 10 Août 2008 Posté 10 Août 2008 On dirait que tu mélanges un peu, le fait de cocher ou non la checkbox est indépendant des traitements MySQL... même si c'est la valeur qui va déterminer si elle est cochée ou non. Par exemple : <input type="checkbox" name="publish" value="1"<? if ( $_POST["publish"] == 1 ) echo " checked='checked'"; ?> /> <label>Shows ready</label> Et effectivement ta requête de mise à jour UPDATE est curieuse, car le WHERE ne contient pas de condition (comme si tu mettais WHERE 1=1)
Ugo Posté 10 Août 2008 Auteur Posté 10 Août 2008 Salut ! C'est bon j'ai trouve une autre solution... Enfin, j'ai fait autrement et c'est parfait. Merci !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant