Récupérer une variable multiple...

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 variable multiple...

Re: Récupérer une variable multiple...

par keush » 20 févr. 2015, 19:13

J'ai étudié un peu, lu et vu des tutos, et j'ai finalement trouvé une solution. J'ai ainsi créé ma première class php et ma première fonction.
Tout fonctionne au petit poil pour le moment :-) Merci pour votre aide qui m'est chaque fois d'un grand secours !

Voici le script de ma class :
class iptc 
    {
        function idp($file, $iptc) 
        { 
            GetImageSize($file, $info);
            $v = iptcparse($info["APP13"]);
            $idp = $v[$iptc][0];
            return $idp;
        }
    }
Les différentes meta iptc qui m'intéressent structurées en tableau :
   $idp=array();
    $idp[id] = $iptc = '2#005';
    $idp[nom] = $iptc = '2#105';
    $idp[description] = $iptc = '2#120';
    $idp[©] = $iptc = '2#116';
Enfin, j'appelle ma class chaque fois que j'en ai besoin comme ceci :
 $result = new iptc;   
 echo($result->idp("img001.jpg", $idp[id]));
Vos remarques et commentaires sont bienvenues ! :-)

Re: Récupérer une variable multiple...

par @rthur » 20 févr. 2015, 09:54

$id indique un chemin spécifique, or mes images sont disséminées dans différent répertoire. Comment faire pour résoudre ce problème ?
Regarde du côté de la fonction glob() qui permet de récupérer tous les fichiers vérifiant un certain masque (pour ne récupérer que les *.jpg) qui sont dans un répertoire et ses sous-répertoires :
http://php.net/glob

Re: Récupérer une variable multiple...

par sirakawa » 20 févr. 2015, 09:53

Avant de t"aventurer, vérifie biel le comportement de getimagesize

Des répertoires imbriqués ou non?
Tu peux faire cette boucle pour chaque répertoire; il suffit de stocker l'info dans le tableau $Liste
$rang =1;
while repertoire1
{
}
while repertoire2
{
}

Re: Récupérer une variable multiple...

par keush » 20 févr. 2015, 01:43

Merci pour ce début. Je débute et j'essaie de bien comprendre ton code, mais déjà une chose m'échappe. $id indique un chemin spécifique, hors mes images sont disséminées dans différent répertoire. Comment faire pour résoudre ce problème ?

Merci.

Re: Récupérer une variable multiple...

par sirakawa » 19 févr. 2015, 21:08

VOILA PEUT ETRE UN DÉBUT
<?php
$liste = array();
$dir = "/home/bilou/livres/";
$rang = 1;
$info = array();
// Ouvre un dossier bien connu, et liste tous les fichiers
if (is_dir($dir)) 
	{
    	if ($dh = opendir($dir)) {
        	while (($file = readdir($dh)) !== false) 
			{
           	 	$extension = pathinfo($file,  PATHINFO_EXTENSION);
				
					switch ($extension)
                                        {
					case "jpg":
					case "png":
						//getimagesize est en minuscules

						getimagesize($dir.$file,  $info);
						if (isset($info["APP13"])) 
						{
    						$iptc = iptcparse($info["APP13"]);

							//j'ai trouvé chez moi des images JPG sans index '2#005'
							$idp = $iptc['2#005'][0] ;
							$Liste[$rang]['idp'] = $idp;
							$Liste[$rang]['nom'] = $file;
						}
						
						$rang++;
					break;
					default:

				}

       	 	}
        	closedir($dh);
    }
print_r($Liste);
}
?>

Re: Récupérer une variable multiple...

par keush » 19 févr. 2015, 18:56

Complément d'info à mon problème avec du code :

Voici comment je récupère l'idp de mes photos :
GetImageSize(ROOT_IMG . "aaa/bbb/img01.jpg", $info);
$iptc = iptcparse($info["APP13"]);
$idp = $iptc['2#005'][0];
Je dois malheureusement répéter ce code pour chaque image - Je ne sais pas encore programmer une fonction php -
Pour éviter tout conflit entre les variables doublons ($info, $iptc, $idp, etc.), je leur ai toute ajouté un suffixe différent ($info_img01, $info_img02, etc.)... je sais, ça fait un code super lourd, mais c'est en attendant de trouver une solution plus light.

Chaque idp est lié à un bouton et ce bouton doit la transmettre non pas avec GET mais avec une session.

Voilà et merci d'avance ! :)

Re: Récupérer une variable multiple...

par keush » 19 févr. 2015, 18:42

Merci pour ta réponse, mais je ne comprends pas le code. À quoi sert GET ici ? Je ne souhaite pas passer idp dans l'url...

Re: Récupérer une variable multiple...

par tof73 » 19 févr. 2015, 18:29

if(isset($_SESSION['idp'])){
$_SESSION['idp'][] = $_GET['tonid'];
}
else{
$_SESSION['idp'] = array();
$_SESSION['idp'][] = $_GET['tonid'];
}

Re: Récupérer une variable multiple...

par keush » 19 févr. 2015, 18:22

Ola,

Mea culpa, je n'étais pas clair dans mes explications et je me suis même un peu embrouillé :?
Explication de la phrase incomprise : Je voulais parler des sessions et non de GET. Si quelqu'un a une solution pour que cela fonctionne avec les sessions, je prends !

Quelques infos concernant la structure de ma page :

Page source : Elle contient plusieurs liens possédant chacun un id (je le nomme idp) qui doit être récupérer dans la page de destination, page unique pour tous les liens. L'idp en question est un n° unique qui provient de meta IPTC récupérées dans des photos.
Donc, valeur numérique différente pour chaque idp. Avec une session ( $_SESSION['idp'] ), la valeur idp récupérée dans la page de destination correspond à la dernière valeur enregistrée en fin de page source. Je ne sais pas si je suis très clair.

Re: Récupérer une variable multiple...

par sirakawa » 18 févr. 2015, 22:11

Il ne serait pas plus simple et plus évolutif d'avoir un tableau des ID en mettant ses checkbox?
<?PHP
$ids = array();
$nbgals= 5;
for ($i =1; $i <=$nbgals;$i++)
{
	$val = rand(1000,3000);
while (in_array ($val, $ids))
{
	$val = rand(1000,3000);
}
$ids[$i] = $val;
}
$chaine = "
<form method= 'post' action ='dieu.php'>";
for ($i =1; $i <=$nbgals;$i++)
{
	$id = $ids[$i];
	$chaine .= "
	<input type = 'checkbox' name = '$id' value = '$id' />
	";
}
$chaine .= "<button type = 'submit' > Afficher</button></form>";
print "$chaine";
?>

Re: Récupérer une variable multiple...

par xTG » 18 févr. 2015, 15:50

Pareil j'ai pas compris...
Côté page de destination tu récuperas l'id qui a été cliqué, n'est-ce pas le but ?

Re: Récupérer une variable multiple...

par ynx » 18 févr. 2015, 15:44

Salut,

Je ne comprend pas ta phrase suivante :
Ça ne peut évidement pas fonctionner car côté page de destination, je ne peux récupérer que la variable $id la plus récemment stockée, donc toujours la même et
quelque soit le bouton sur lequel j'ai cliqué !
A partir de l'exemple :
<a href="galery.php?idp=1234">BOUTON01</a>
<a href="galery.php?idp=5678">BOUTON02</a>
-> si je clique sur BOUTON01, la variable $_GET['idp'] aura pour valeur 1234
-> si je clique sur BOUTON02, la variable $_GET['idp'] aura pour valeur 5678

Donc coté page de destination (galery.php), tu peux donc récupérer n'importe quel identifiant via la variable $_GET['idp'] en fonction du bouton cliqué.

Bonne journée

Récupérer une variable multiple...

par keush » 18 févr. 2015, 12:13

Bonjour,

Je cherche un moyen d'attribuer différentes valeurs à une même variable au seins d'une même page. Cette variable me servirait à attribuer un ID unique pour chacun des boutons de ma page.
Exemple bouton01 à pour id = 123 ; bouton02 à pour id = 456 ; etc.
Si je ne veux utiliser qu'un seul nom de variable ($id) c'est afin d'éviter d'avoir un code trop lourds côté page de destination avec par exemple $id01, $id02, $id03, etc.

Au départ, je voulais faire simple :
<a href="galery.php?idp=1234">BOUTON01</a>
<a href="galery.php?idp=5678">BOUTON02</a>
Puis je récupérais la variable de départ dans ma page de déstination avec $_GET (je pourrais aussi me servir des sessions)

Ça ne peut évidement pas fonctionner car côté page de destination, je ne peux récupérer que la variable $id la plus récemment stockée, donc toujours la même et
quelque soit le bouton sur lequel j'ai cliqué !

Je pourrais donc utiliser plusieurs nom de variable $id01, $id02, $id03, etc. mais ça alourdirait considérablement mon code, surtout côté page de destination ou je traite
mes variables pour n'en récupérer que des chaînes avec substr. Bref, j'ai beau retourner le problème dans tous les sens, je ne sais pas comment m'y prendre pour écrire un code qui soit le plus limpide et le plus léger possible.

Mais je me dis qu'il existe sans doute une façon de faire, une méthode...

Quelqu'un pourrait-il me mettre sur la voie ?

Merci par avance.