Lister une table avec Checkbox

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Lister une table avec Checkbox

par jpaul » 10 mai 2006, 09:21

Au lieu d'un checkbox, tu peux peut etre essayer avec un radio, un truc dans ce genre là :
echo"<td><input type='radio' name='id_ami[]' 
value='oui'";
if ($data['id_ami'] == 'oui') echo " CHECKED";
echo ">";
echo"<td><input type='radio' name='id_ami[]' 
value='non'";
if ($data['id_ami'] == 'non') echo " CHECKED";
echo ">";

par Invité » 10 mai 2006, 08:50

Bonjour Jpaul,
J'ai essayé de "décocher" les "case à cocher"... mais comme le script ne prend en compte que les "checkboxs" cochés... et ben ca ne fonctionne pas.

Peut être dois-je reprendre tout mon code... !?
Car je suis parti sur : "si les cases son cochées"... !?

Afficher toutes les cases (cochées ou pas si le champ "ENUM" est à "oui" ou "non")
Puis toutes les vérifier, une par une, et les traiter...
C'est ça que je ne sais pas faire... !?
Puisque si une case n'est pas cochée... il ne peut y avoir de "selection" (isset ?)
Peut être avec un champ "hidden" ? Mais je ne vois pas comment le "configurer" pour que le script execute tout cele ?

Avez vous une idée ?
Merci
Pascal.

par jpaul » 10 mai 2006, 06:05

Pour décocher la case, tu cliques dessus ;)

Autrement, si tu ne veux pas que la case soit cochée par ton scripte, il faut voir du côté de la ligne :
if ($select!='non') { echo "selected"; } else { } 
En lisant cette ligne, si tes cases sont toujours cochées, c'est que $select est toujours différent de 'non' :)

par Invité » 10 mai 2006, 01:03

Merci à vous tous cela fonctionne :)

Comment dois-je faire si je veux déselectionner ces "cases à cocher" ?

La pour le moment je ne peux que cocher ces case.. .mais les décocher ?

Merci si vous avez une idée !

Pascal.

par Invité » 09 mai 2006, 14:02

Merci à vous tous...

Je vais essayer de faire toutes les modifs que vous me proposer.. .je reviendrai pour vous dire si ca marche
(La ! je dois partir...) :(

Encore merci
Pascal.

par Shrell » 09 mai 2006, 13:57

c'est normal, $id_ami est un tableau ;)
remplace $id_ami par $valeur :
mysql_select_db('carnet',$db); 
foreach ($id_ami as $valeur){ 
$sql="UPDATE amis SET select='oui' where id_ami=".$valeur; 
$req= mysql_query($sql);
---- EDIT ----
trop tard lol

par jpaul » 09 mai 2006, 13:56

Ben c'est normal :
foreach ($id_ami as $valeur){ 
Ca veut dire que $id_ami est un tableau, tu boucles dessus en mettant chacune des valeurs dans $valeur.
il faudrait plutôt :
$sql="UPDATE amis SET select='oui' where id_ami='$valeur'"; 

par guilt92 » 09 mai 2006, 13:55

mysql_select_db('carnet',$db); 
foreach ($id_ami as $valeur){ 
$sql="UPDATE amis SET select='oui' where id_ami=".$valeur; 
$req= mysql_query($sql); 
Comme cela ca devrait fonctionner, c'est ce que je voulais te dire quand je te parlais d'enlever les ' ' si c etait une valeur numérique. Aussi erreur que je n'avais pas remarquée, il faut utiliser $valeur, pas $id_ami. $id_ami est ton tableau, $valeur représente chaque valeur :)

par Invité » 09 mai 2006, 13:50

guilt92 merci de ta réponse,

normalement id_ami est un 'identifiant de la table' donc il est numérique...
Ai-je bien compris ta remarque?


Mais en faisant un "echo $sql;" je viens de m'appercevoir qu'il y a un autre problème :
UPDATE amis SET select='oui' where id_ami='Array'

il affiche "array" à la place de l'identifiant ... ?

Pascal.

par guilt92 » 09 mai 2006, 13:41

Je vois une premiere erreur qui explique que ton UPDATE marche pas :
mysql_select_db('carnet',$db); 
foreach ($id_ami as $valeur){ 
$sql="UPDATE amis SET select='oui' where id_ami='".$id_ami."'"; 
$req= mysql_query($sql); 
Comme ça ça ira mieux :)
Enfin si id_ami est un texte, sinon tu peux enlever les ''. Mais la facon dont tu l'avais fait il ne prenais pas $id_ami comme une variable mais comme du texte... Ainsi il cherchait dans la base quelqu'un dont l'id serait '$id_ami' ce qui n'existe pas je suppose...

Lister une table avec Checkbox

par Pascal. » 09 mai 2006, 13:29

bonjour à vous tous.
Je suis un nouveau dans le monde PHP.
Si vous pouviez m'aider... je vais essayer d'être clair ...

Voila je veux lister une table MySQL (ici ça va!) ... la table : 'amis'

Je veux faire apparaitre leurs, nom, prénom, ... et un case à cocher (Checkbox) correspondant à mon champ 'select'.
Ce champ est de type 'ENUM' : enum('oui','non') NOT NULL default 'non'
<form method='POST' action='fenetre.php'>
<table border="1">
<tr>
<td width=''>Prénom Nom</td>
<td width=''>Ville</td>
<td width=''>Selection</td>
</tr>

<?
require("conf/conf.php");

mysql_select_db('carnet',$db);
$query="Select * from amis" ;
$result = mysql_query( $query )or exit ('Erreur SQL !'.$query.'<br>'.mysql_error());
while($data = mysql_fetch_array($result))
{
$select=$data['select'];

echo"<tr><td>".$data['prenom']."&nbsp;".$data['nom']."</td>";
echo"<td>".$data['ville']."</td>";
echo"<td><input type='checkbox' name='id_ami[]' value='".$data['id_ami']."'";
if ($select!='non') { echo "selected"; } else { }
echo "></td>";
echo"</tr>";
}
mysql_close();
?>
<input type="submit" name="Submit" value="Modifier" />

</table> 
</form>
Faire une sélection sur certain nom, en cochant la checkbox (ou en décochant certaines case à cocher) et que ceux que j'ai sélectionnés... le champ 'select' prend la valeur 'oui'... et ceux qui ne sont plus 'cochés' prennent la valeur 'non'...

Alors j'ai crée un script :
<? require("conf/conf.php");

$id_ami=(isset($_POST['id_ami']))? $_POST['id_ami'] : NULL;
if (sizeof($id_ami)==0){
echo "aucun selectionné"; 
exit;}
else{

mysql_select_db('carnet',$db);
foreach ($id_ami as $valeur){
$sql="UPDATE amis SET select='oui' where id_ami='$id_ami'";
$req= mysql_query($sql);
}
mysql_close();
echo "ok c'est fait !";
}
?>
Il n'y à pas d'erreur... mais les changements ne se font pas !?
Avez vous une idée ?

Merci
Pascal.