Aller au contenu

[PHP + MySQL] Checkbox...


Sujets conseillés

Posté

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

Posté

Vérifie ton code, il n'est pas correct ;)

$publish = $_POST['publish'];

if ($publish != NULL) {

$== 1;

}

else {

$publish == 0;

}

Dan

Posté

Merci beaucoup pour la reponse, mais entre temps j'avais deja corrige cette erreur... et ca marche toujours pas... :mad2:

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

Posté (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é par Kioob
Posté

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

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

Posté

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)

Posté

Salut !

C'est bon j'ai trouve une autre solution... Enfin, j'ai fait autrement et c'est parfait.

Merci ! :smartass:

Veuillez vous connecter pour commenter

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



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