Page 1 sur 2
Condition avant de faire une action
Posté : 03 mars 2008, 10:55
par mali_67
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;?>
Posté : 03 mars 2008, 10:56
par zeus
Bonjour,
Est-ce que tu peux nous poster la partie de ton formulaire qui affiche les checkbox ?
Posté : 03 mars 2008, 11:01
par mali_67
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
{
......
}
Posté : 03 mars 2008, 11:03
par zeus
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.
Posté : 03 mars 2008, 11:14
par mali_67
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

Posté : 03 mars 2008, 11:19
par zeus
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

Posté : 03 mars 2008, 11:35
par mali_67

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?
Posté : 03 mars 2008, 13:08
par zeus
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.
Posté : 03 mars 2008, 15:30
par mali_67
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]
Posté : 03 mars 2008, 16:05
par zeus
Si ce qui vaut 0, c'est
count($_POST['check'])
pourquoi est-ce que tu essayes de voir si
$_POST['check'] == 0
Posté : 03 mars 2008, 16:20
par mali_67
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

Posté : 03 mars 2008, 16:32
par d0m
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().
Posté : 03 mars 2008, 16:35
par zeus
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

Posté : 03 mars 2008, 17:44
par mali_67
j'ai mis se que tu ma dit
if (isset($_POST['Verification']) && count($_POST['Verif']) != 0)
{
...}
mais mon message ne s'affiche pas
Posté : 03 mars 2008, 18:41
par zeus
pourquoi $_POST['check'] est subitement devenu $_POST['Verif'] ?