Page précédente | Page suivante | Page : 1 2

pb en combinant "boucle while" + "isset"
Hors ligne Jekkil Le 27/03/2006 à 01:04 Profil de Jekkil Configuration de Jekkil
Bonjour,
J'ai un problème avec un bout de programme.

Ce que j'ai :
- une liste de thèmes rangés dans une base de données
- une page "précédente" sur laquelle j'ai un checkbox par thème

Ce que je veux faire :
- si le thème a été coché, aller chercher dans la base données les éléments correspondants et les afficher sur la page "suivante"

Ce que j'ai essayé de faire :
- j'ai fait une boucle while sur les thèmes. En faisant un isset($_POST['theme']) j'espérais pouvoir récupéré mes éléments.

Le PROBLEME :
- comment faire varier la valeur de theme dans l'isset ???
J'ai essayé en utilisant une variable à l'intérieur des crochets du POST, ça n'a pas marché.
J'ai aussi essayé ça : qui n'a pas marché :

   $post = "_POST['".$theme."']";
   if (isset(${$post})) ...

J'ai aussi essayé avec la variante : $post = "\$_POST['".$theme."']";

Je suis à court d'idées.
Merci d'avance à ceux qui jetteront un oeil à mon problème.
Hors ligne Malalam Le 27/03/2006 à 10:34 Profil de Malalam Configuration de Malalam
Hello,

tu devrais montrer ton bout de formulaire, aussi. Là je ne comprends pas bien comment tu as construits tes checkboxes.
Hors ligne Jekkil Le 27/03/2006 à 11:13 Profil de Jekkil Configuration de Jekkil
Bonjour Malalam,
Voici comment je présente mes checkbox :


<?
$retour
= mysql_query("SELECT theme FROM theme ORDER by theme");
$don = mysql_fetch_array($retour);

// j'affiche les thèmes en plusieurs colonnes, ce qui explique les boucles for (j'ai au préalable compter le nombre de thèmes à l'aide d'une requête)

for ($part=1;$part<=4;$part++) {
     for ($i=0;$i<$limit;$i++) {
          ?><label><input type="checkbox" name="<?echo $don['theme'];?>"/> <?echo $don['theme'];?></label>
<?
     
}
}
Hors ligne Malalam Le 27/03/2006 à 12:05 Profil de Malalam Configuration de Malalam
Pourquoi tu utilises des checkboxes ? je suppose qu'un seul thème doit être sélectionné, non ? Auquel cas il vaut mieux passer par des boutons radio.
Bref...



<label><input type="checkbox" name="theme" value="<?php echo $don['theme'];?>"/> <?php echo $don['theme'];?></label>


Et tu récupères le thème coché dans $_POST['theme'] justement. (le dernier coché, ici)

Si tu veux donner la possibilkité d'en récupérer plusieurs :



<label><input type="checkbox" name="theme[]" value="<?php echo $don['theme'];?>"/> <?php echo $don['theme'];?></label>



et tu récupères dans un tableau $_POST['theme'] = array (...) tes thèmes cochés.
Hors ligne Jekkil Le 27/03/2006 à 12:42 Profil de Jekkil Configuration de Jekkil
On peut faire ça ?

Ca simplifie vachement ! Merci beaucoup Malalam !
J'essaie ça dans l'après-midi... là, je dois filer en cours.

J'avais pensé aux radios et si je les avais utilisés, je n'aurais pas eu ce problème. Mais je veux pouvoir choisir plusieurs thèmes en même temps, c'est pour ça que je dois rester sur checkbox.

Je reviendrai poster un message pour dire si ça a bien marché.
Hors ligne Webdeb73 Le 27/03/2006 à 23:26 Profil de Webdeb73 Configuration de Webdeb73
Pour infos :

1/ Utilises les balises <?php à la place de <?. Voici un petit lien pour justifier mes propos :

http://frederic.bouchery.free.fr/?2004/07/16/4-[...]

2/ Préfère mysql_fetch_assoc() à mysql_fetch_array() car plus rapide.

++
Hors ligne Jekkil Le 28/03/2006 à 17:56 Profil de Jekkil Configuration de Jekkil
Tout d'abord, merci Malalam : j'ai pu faire exactement ce que je voulais avec les checkbox.

Webdeb73 : Ok, je vais jeter un oeil. Il n'y a aucune raison pour que je suive pas ton conseil.

Merci à vous deux !
Hors ligne Webdeb73 Le 29/03/2006 à 09:43 Profil de Webdeb73 Configuration de Webdeb73
Nouvelle précision concernant la différence mysql_fetch_array et mysql_fetch_assoc :

- mysql_fetch_array fait une copie du tableau retourné (cad 2 tableaux identiques) mais le premier est indexé avec des clé chiffrées commençant par 0 et le second est indexé par des index alphanumériques (ex: $don['theme']; ).

Donc il vaut mieux utiliser mysql_fetch_assoc dans ton cas afin d'éviter de la copie inutile de tableaux ( => optimisation ) ou bien utiliser mysql_fetch_array() avec MYSQL_ASSOC en second paramètre.

++
Hors ligne Anthony Le 29/03/2006 à 10:13 Profil de Anthony Configuration de Anthony
Fou du volant
Salut,

ou encore mysql_fetch_row() qui reste encore plus rapide :-)
--
Hors ligne Webdeb73 Le 29/03/2006 à 10:34 Profil de Webdeb73 Configuration de Webdeb73
Webmaster a écrit :
Salut,

ou encore mysql_fetch_row() qui reste encore plus rapide :-)


mysql_fetch_row() n'est plus vraiment utilisé.

Page précédente | Page suivante | Page : 1 2

Aide informatique | Communauté d'entraide informatique | Aide informatique | Forum d'assistance informatique | Forum-Vista | Formation informatique | Forum Informatique | Devenir partenaire