Récupérer une table pour cocher des 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 : Récupérer une table pour cocher des checkbox

par Ryle » 28 févr. 2008, 13:08

Arg je ne peux pas mettre résolu vu que le premier post est en Invité...
Pas de soucis, je l'ai fait pour toi :)

par lospericos » 28 févr. 2008, 13:04

Salut Xvider, oui j'utilise des tableaux vu que je les réutilisent régulièrement et que c'est comme ça que j'ai construit mon script.
voir : http://www.phpfrance.com/forums/voir_sujet-36456.php

Désolé pour le premier post mais j'étais sûre d'être logé -> Invité.

Merci d0m ça fonctionne avec ton explication, maintenant il faut que j'analyse ton explication pour assimiler le fonctionnement et ne plus avoir trop de questions à poser...

Hier soir j'y ai passé bien 3 heures à tourner le script dans tous les sens, à parcourir le forum et à faire des recherches sur google pour comprendre les tableaux et la fonction array, en vain...

Faut que ça rentre :wink:

-> Résolu

[EDIT]

Arg je ne peux pas mettre résolu vu que le premier post est en Invité...

[/EDIT]

par d0m » 28 févr. 2008, 09:58

salut,

effectivement c'est à la construction du tableau qu'il y a un problème.

Tu veux que ton tableau $table contienne les identifiants à pré-cocher.
while ($row_inscription = mysql_fetch_array($check_inscription)) {
    $id_tournoi_inscription = $row_inscription['id_tournoi'];
    $table = array('checked' => $id_tournoi_inscription);
    echo $table['checked'];
} 
ce que tu fait en fait c'est écraser la variable $table avec un tableau à un seul élément contenant l'identifiant en cours dans la boucle.
Donc forcement à la fin de la boucle il ne te reste que le dernier identifiant dans $table.

La bonne façon est d'ajouter un élément au tableau :
//déclaration du tableau
$table=array();
while ($row_inscription = mysql_fetch_array($check_inscription)) {
    $id_tournoi_inscription = $row_inscription['id_tournoi'];
    //on ajoute au tableau l'identifiant
    $table[$id_tournoi_inscription] = $id_tournoi_inscription;
}
//vérification du contenu :
print_r($table);
 
En plus en mettant comme clé l'identifiant lui même dans le tableau, ce sera très facile pour vérifier si le tournoi est à cocher ou non :
//collecte des informations
    while ($row_tournoi = mysql_fetch_array($check_tournoi)) {
      ....
      //si un élément du tableau a pour clé l'identifiant du tournoi
      //donc le tournoi est dans les inscriptions
      if (isset($table[$id_tournoi])) { 
        $tuc = 'checked';
      else
        $tuc = '';
      }
      ....
    }

par Xvider » 28 févr. 2008, 09:36

Tu dois obligatoirement travailler avec un tableau ?

Tu le réutilise plus tard ?

Récupérer une table pour cocher des checkbox

par Invité » 27 févr. 2008, 20:22

Bonjour, j'ai encore un problème avec mes table et la récupération de celles-ci.

J'ai 5 dates qui sont enregistré dans ma table tournoi, mon utilisateur s'est inscrit à 3 tournoi et l'enregistrement c'est fait dans ma table inscription selon l'id du tournoi et de l'utilisateur.

Je récupère dans un premier temps mes inscriptions, dans un deuxième temps je récupère tous mes tournois afin d'afficher le 5 tournois et non pas seulement ceux que mon utilisateur à choisi. J'usqu'ici ça fonctionne :D

Ensuite je récupère l'id des tournois inscrits ex: 1,3,5 et j'affiche mes 5 tournois avec des checkbox, seulement je n'arrive pas associer les id récupéré des tournois inscrits avec les 5 tournois afin de checker les tournois dejà sélectionner...
//récupération des tournois dont mon user s'est inscrit
$check_inscription = mysql_query("SELECT * FROM inscription WHERE id_utilisateur = '$id_utilisateur'")
    //si la connection échoue on imprime une erreur
    or die ('connexion impossible au serveur' .mysql_error());
    //collecte des informations
   while ($row_inscription = mysql_fetch_array($check_inscription)) {
    $id_tournoi_inscription = $row_inscription['id_tournoi'];

// je crée ma table qui me renvoi les bonnes valeur (1,3,5)
    $table = array('checked' => $id_tournoi_inscription);
    echo $table['checked'];
    
   }

// je récupère les infos de 5 tournois
$check_tournoi = mysql_query("SELECT * FROM tournoi")
    //si la connection échoue on imprime une erreur
    or die ('connexion impossible au serveur' .mysql_error());
    //collecte des informations
    while ($row_tournoi = mysql_fetch_array($check_tournoi)) {
    $id_tournoi = $row_tournoi['id'];
    $lieu_tournoi = $row_tournoi['lieu'];
    $date_tournoi = $row_tournoi['date'];
    $comment_tournoi = $row_tournoi['comment'];
//je crée ma boucle
    foreach ($table['checked'] as $value) {
    	if ($id_tournoi == $value) {
    		$tuc = "checked";
    } else { $tuc = ""; } }
       echo "<input type=\"checkbox\" name=\"id_tournoi[]\" value=\"$id_tournoi\" $tuc> $lieu_tournoi $date_tournoi - $tuc<br />";
     }
Aucun résultat ne s'affiche. si je supprime mon array et ma boucle foreach je ne récupère que la dérnière inscription:
//récupération des tournois dont mon user s'est inscrit
$check_inscription = mysql_query("SELECT * FROM inscription WHERE id_utilisateur = '$id_utilisateur'")
    //si la connection échoue on imprime une erreur
    or die ('connexion impossible au serveur' .mysql_error());
    //collecte des informations
   while ($row_inscription = mysql_fetch_array($check_inscription)) {
    $id_tournoi_inscription = $row_inscription['id_tournoi'];

// je crée ma table qui me renvoi les bonnes valeur (1,3,5)
    $table = $id_tournoi_inscription);
    echo $table;
    
   }

// je récupère les infos de 5 tournois
$check_tournoi = mysql_query("SELECT * FROM tournoi")
    //si la connection échoue on imprime une erreur
    or die ('connexion impossible au serveur' .mysql_error());
    //collecte des informations
    while ($row_tournoi = mysql_fetch_array($check_tournoi)) {
    $id_tournoi = $row_tournoi['id'];
    $lieu_tournoi = $row_tournoi['lieu'];
    $date_tournoi = $row_tournoi['date'];
    $comment_tournoi = $row_tournoi['comment'];

    	if ($id_tournoi == $table) {
    		$tuc = "checked";
    } else { $tuc = ""; } }
       echo "<input type=\"checkbox\" name=\"id_tournoi[]\" value=\"$id_tournoi\" $tuc> $lieu_tournoi $date_tournoi - $tuc<br />";
     }
Comment faire pour implémenter mon tableau?

Merci d'avance