Condition avant de faire une action

Eléphanteau du PHP | 40 Messages

03 mars 2008, 10:55

Bonjour j'ai créer un tableau avec un bouton et des checkbox sur chaqu'une des ligne du tableau
j'aimerai que si je n'ai pas coché de checkbox rien ne se passe et un message en rouge s'affiche a coté de mon bouton(je ne peu pas utiliser onsubmit= car j'ai beaucoup d'autre bouton sur mon formulaire)
voici le code que j'ai essayer et qui ne marche pas
if (isset($_POST['Verification']) && $_POST['check']== 'checked')
{
.......
}
else
{
 $message="Vous devez cocher une case!";
}
et mon bouton
<input name="Verification" type="Submit" value="Verification"><?php echo $message;?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2008, 10:56

Bonjour,

Est-ce que tu peux nous poster la partie de ton formulaire qui affiche les checkbox ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 40 Messages

03 mars 2008, 11:01

oui voila la cette partie
<?php
$nb = 0;
while ($Tab= mysql_fetch_array($result))
	{
?>
<tr>
<td><?php echo '<a href="Modification.php?NumLien=' . $Tab['NumLien'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href= "Accueil.php?NumLien=' . $Tab['NumLien'] . '" onclick="if ( !confirm(\'Etes-vous sur de vouloir supprimer ?\')) { return false; }">'; ?>Supprimer</a></td>
<td><input type='checkbox' name="check[]" value=<?php echo $Tab['NumLien'];?> id="box<?php echo $nb;?>" align="center"/></td>	
<td><?php echo $Tab['NomPartenaire'];?></td>
<td>
<?php     
if (isset($_POST['Verification']) && $_POST['check']== 'checked') //mon bouton verification
{
......
}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2008, 11:03

Merci ;)

Donc, la liste de tes cases cochées se trouve dans le tableau $_POST['check'].
Il ne te reste qu'a vérifier que ce tableau contienne au moins un élément pour t'assurer qu'au moins une checkbox a été cochée.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 40 Messages

03 mars 2008, 11:14

je vien de testé ce code
if (isset($_POST['Verification']) && $_POST['Verif']!= "")
{
alors si je selectionne une box, ma verification fonctionne bien par contre si je ne selectionne rien mon messga ($message) ne s'affiche pas :?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2008, 11:19

C'est cette condition qui est fausse
$_POST['check']== 'checked'
Fait un
print_r($_POST['check']);
Tu verras ce que contient cette variable et je pense que tu comprendras ton erreur ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 40 Messages

03 mars 2008, 11:35

:? Désoler mais j'ai pas trés bien compris se que $_POST[''] renvoie, a se que j'ai vu, des que je ne selectionne rien sa renvoie 1, mais des que selectionne quelque chose sa renvoie Array ( [0] => 58 ) 1, donc sa renvoie toujours 1?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2008, 13:08

Ce 1 correspond à un nombre d'élément.

Essaye de faire un echo count($_POST['check']) en sélectionnant 0, puis 1 puis plusieurs checkbox.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 40 Messages

03 mars 2008, 15:30

yes j'ai compris grace a count
alor j'ai essayer ceci
if (isset($_POST['Verification']) && $_POST['Verif']!= 0)
{
.....
}
else
{
$message = ....
}
mais ma varible $message ne s'affiche pas lors de l'apel
<input name="Verification" type="Submit" value="Verification"><?php echo '<span style="color:red;">'.$message.'</span>' ?>
:(

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2008, 16:05

Si ce qui vaut 0, c'est
count($_POST['check'])
pourquoi est-ce que tu essayes de voir si
$_POST['check'] == 0
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 40 Messages

03 mars 2008, 16:20

en faite vu que quand $_POST['check'] == 0 aucune checkbox n'est selectionner je veut dire que si aucune checkbox n'est selectionner affiche mon message d'erreur
mais le probleme et que admetton je code ceci
<?php    
if (isset($_POST['Verification']) && $_POST['check']!= 0)
{
....
}
else
{
$message = "vous devez cocher une case!";
echo $message;
}
ici tout va bien le message s'affiche dans mon tableau
mais moi je souhaite afficher le $message a droite de mon bouton verification donc j'ai mis l'echo ici
<input name="Verification" type="Submit" value="Verification"><?php echo '<span style="color:red;">'.$message.'</span>' ?>
et le message ne s'affiche pas dans ce cas présent
je comprend rien :?

d0m
Mammouth du PHP | 1141 Messages

03 mars 2008, 16:32

la variable $message est accessible pendant tout le script de ta page.

Si dans la même page,
echo $message;
affiche le message

et
<?php echo '<span style="color:red;">'.$message.'</span>' ?>
ne l'affiche pas,

c'est que soit :
- tu effaces la variable (unset,...)
- tu lui mets une autre valeur entre les 2 lignes de codes
- tu écris en rouge sur de rouge mais ça j'en doute...
- ta 2ème ligne est dans une boucle qui ne s'effectue pas.

A part ça $_POST['checked'] est un tableau.
Si il n'y a aucune valeur de coché, le tableau est donc vide et il ne vaut pas 0 mais array().
Pour savoir si il est vide il faut donc tester comme Zeus te le propose (en comptant les éléments du tableau) ou avec empty().
Modifié en dernier par d0m le 03 mars 2008, 16:37, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2008, 16:35

alors, pour commencer $_POST['check'] != 0 est un dysfonctionnement heureux. Ton code vient de "tomber en marche" (cqfd "fonctionne mais tu ne comprend pas pourquoi").

La bonne syntaxe est count($_POST['check']) == 0 pour savoir que le nombre de checkbox cochée vaut 0.

Ensuite, pour le problème suivant, pas mieux que la réponse précédente ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 40 Messages

03 mars 2008, 17:44

j'ai mis se que tu ma dit
if (isset($_POST['Verification']) &&  count($_POST['Verif']) != 0)
{
...}
mais mon message ne s'affiche pas

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 mars 2008, 18:41

pourquoi $_POST['check'] est subitement devenu $_POST['Verif'] ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer