Tableau $_GET envoyé par des checkbox

Mammouth du PHP | 965 Messages

09 nov. 2007, 17:10

Bonjour,

Voila j'ai un script qui envoie les données de mes checkbox sous la forme de list[] par methode $_GET

Maintenant je dois faire une fonction qui me permet d'avoir la liste de tout les list[] pour les faire passer dans une fonction.

en fait la fonction est du type fonction_truc(array()); avec dans l'array la liste de tout les elements de mon list[]

j'ai tenter de faire un fonction_truc(array($_REQUEST['list'])); mais il ne fonctionne pas plus.

j'ai tenter de faire des boucles foreach avec array push style :

$tab = array();
for($i = 0; $i < $Count_list; $i++){ 
array_push($tab,"../**/".$_GET['list'][$i]);
}
Rien de plus je n'arrive pas a recuperer la liste des elements même en faisant un

fonction_truc($_GET['list']) ou fonction_truc(array($_GET['list']))

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 nov. 2007, 17:32

Je comprend pas vraiment ce que tu demandes, mais si toutes tes cases ont pour nom list[], alors $_GET['list'] sera un tableau contenant les valeurs des cases qui ont été cochées.

Du coup pour récupérer les valeurs une à une suffit d'une simple boucle foreach :
// pour chaque élément du tableau, on le stocke dans $element et on exécute le code 
foreach ($_GET['list'] as $element) { 
  echo $element; // affichage de l'élément ou appel de fonction ou ce que tu voudras :)
  ...
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 965 Messages

09 nov. 2007, 17:40

Je comprend pas vraiment ce que tu demandes, mais si toutes tes cases ont pour nom list[], alors $_GET['list'] sera un tableau contenant les valeurs des cases qui ont été cochées.

Du coup pour récupérer les valeurs une à une suffit d'une simple boucle foreach :
// pour chaque élément du tableau, on le stocke dans $element et on exécute le code 
foreach ($_GET['list'] as $element) { 
  echo $element; // affichage de l'élément ou appel de fonction ou ce que tu voudras :)
  ...
}
Merci pour ta reponse :)

En fait j'utilise une fonction d'une bibliotheque PHP pour la concaténation de PDF (oui j'ai aussi poster sur PHP5 pour la concaténation et maintenant ca marche !). Le probleme est que la fonction ressemble a ca :
class concat_pdf extends FPDI {

    var $files = array();

    function setFiles($files) {
        $this->files = $files;
    }

    function concat() {
        foreach($this->files AS $file) {
            $pagecount = $this->setSourceFile($file);
            for ($i = 1; $i <= $pagecount; $i++) {
                 $tplidx = $this->ImportPage($i);
                 $s = $this->getTemplatesize($tplidx);
                 $this->AddPage($s['h'] > $s['w'] ? 'P' : 'L');
                 $this->useTemplate($tplidx);
            }
        }
    }
}
Maintenant il faut rentrer les differents fichiers la dedans :

$pdf =& new concat_pdf();

$tab = array("../_medias/doc/programme/".$_REQUEST['list']);


foreach($_GET['list'] as $Element)
{ 
$pdf->setFiles($Element);
}
$pdf->concat();

$pdf->Output("PdfProgramme_".$_SESSION['login']."_".$_GET['Id'].".pdf", "D");
Voila seulement le foreach que tu m'indique ne marche pas et je comprends pas comment faire car apparement il recreer un tableau dans la fonction.

Et comme le $_GET['list'] est déjà un tableau :/

une idée ?

Mammouth du PHP | 965 Messages

09 nov. 2007, 17:43

ou par
$tab = array("../_medias/doc/programme/".$_REQUEST['list']);

foreach($tab as $Element)
{ 
$pdf->setFiles($Element);
}

Mammouth du PHP | 965 Messages

09 nov. 2007, 18:21

avec cette méthode :
foreach($_GET['list'] as $Liste)
{
$Liste = "../_medias/doc/programme/".$Liste;
$pdf->setFiles(array($Liste));
}
Il ne me retourne que le premier element du tableau, enfin il concaténe seulement le premier fichier...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 nov. 2007, 18:25

Pourquoi pas un POST ?

Que retourne :
print_r($_GET);
ça "../_medias/doc/programme/" je le mettrai bien dans la classe (dans setFiles)

Pourquoi passer un tableau en paramètre
$pdf->setFiles(array($Liste)); 
je pense que ce qui est attendu est un string (donc juste $List) pour le mettre ensuite dans le tableau "files" de la classe.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 965 Messages

09 nov. 2007, 18:43

Pourquoi pas un POST ?

Que retourne :
print_r($_GET);
ça "../_medias/doc/programme/" je le mettrai bien dans la classe (dans setFiles)

Pourquoi passer un tableau en paramètre
$pdf->setFiles(array($Liste)); 
je pense que ce qui est attendu est un string (donc juste $List) pour le mettre ensuite dans le tableau "files" de la classe.
Quel difference a passer les parametres en POST plutôt qu'en GET ?

par GET je peux voir exactement les données envoyées sans print_r

Pour le lien je ne vois pas ou le rajouter dans la classe puisque $files est un tableau.

Mammouth du PHP | 965 Messages

09 nov. 2007, 18:50

Pourquoi pas un POST ?

Que retourne :
print_r($_GET);
ça "../_medias/doc/programme/" je le mettrai bien dans la classe (dans setFiles)

Pourquoi passer un tableau en paramètre
$pdf->setFiles(array($Liste)); 
je pense que ce qui est attendu est un string (donc juste $List) pour le mettre ensuite dans le tableau "files" de la classe.
en utilisant :
foreach($_GET['list'] as $Liste)
{
$Liste = "../_medias/doc/programme/".$Liste;
$pdf->setFiles(array($Liste));
}
Il ne me renvois toujours que le premier element du tableau

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 nov. 2007, 20:17

:lol:
Oui peut être... je n'ai jamais utilsé cette "fonction" de concaténation de pdf donc je fais des suppositions pour voir si on avance or si tu ne réponds pas aux questions c'est sur qu'on avancera pas.

En post pour éviter que n'importe qui puisse "facilement" ajouter n'importe quoi à la suite de ton url.

Je n'ai jamais parlé de lien :?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 965 Messages

10 nov. 2007, 22:36

:lol:
Oui peut être... je n'ai jamais utilsé cette "fonction" de concaténation de pdf donc je fais des suppositions pour voir si on avance or si tu ne réponds pas aux questions c'est sur qu'on avancera pas.

En post pour éviter que n'importe qui puisse "facilement" ajouter n'importe quoi à la suite de ton url.

Je n'ai jamais parlé de lien :?
J'utilise une fonction que empeche de changer l'url.