PHP / Recuperer la valeur d'une generation

Résolu/Fermé
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 - 10 août 2009 à 13:20
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 - 14 août 2009 à 10:47
Bonjour à tous,
Bon alors voila je vais tenter de faire le plus simple et clair possible.

Je suis en train de créer un système de petites annonce. Donc je génères automatiquement des miniatures d'annonce que j'affiche ensuite.

Là, pas de soucis tout marche comme il faut (pour l'instant ^^)

Mon problème vient du fait que lorsque je clique sur "Détails..." je voudrait récupérer l'id de mon annonce pour pouvoir enchainer sur une nouvelle requête qui ira récupérer toutes mes info.

Et le soucis est là. Comment récupérer cette id dans mon formulaire avec un $post sachant qu'étant issus d'une génération toutes les balises portent le même nom ?

Voici la génération construite a partir des éléments du tableau de données issu de ma requête :
	function GenerationAnnonceMin($TblRslt){
		
		//print_r($TblRslt);
		
		//
		//Déclaration des champs
		//
		$DescAnn = substr($TblRslt[5], 0, 100);
		$nb = count($TblRslt);			
		//Si une accroche est présente pour l'annonce
		if($TblRslt[0] == 'CheminNull'){
			//Définition de l'image accroche
			$ImgAcc = "<img class='DivAnnMin_ImgAcc' />";				
		}
		//Sinon
		else{
			//Définition de l'image accroche
			$ImgAcc = "<img src='".$TblRslt[0]."' class='DivAnnMin_ImgAcc' />";	
		}
		//Récuperation du logo
		if(($LogoRslt = RecupLogoAnn($TblRslt[3])) != false){
			$LogoAff = $LogoRslt;
		}
		else{
			$LogoAff = ("<img class='DivAnnMin_LogoAnnAff' />");
		}
		
		//Construction de la miniature				
		echo("<td>
				<div id='DivAnnMin'>
					<div class='DivAnnMin_CoinHautGauche'</div>
					<div class='DivAnnMin_CoinHautDroit'></div>
					<div class='DivAnnMin_CoinBasDroit'></div>
					<div class='DivAnnMin_CoinBasGauche'></div>
					<div id='DivAnnMin_Header'>
						<label class='DivAnnMin_LbTitre'>" . $TblRslt[4] . "</label>
						<label class='DivAnnMin_Prix'>" . $TblRslt[1] . " / " . $TblRslt[6] . "€</label>
					</div>
					<div id='DivAnnMin_Corps'>
						<input type='hidden' name='DivAnnMin_IdAnn' value='".$TblRslt[2]."' />
						<img src='" . $TblRslt[9] . "' class='DivAnnMin_ImgTof'/>
						" . $ImgAcc . "
						<br/>
						<label>" . $DescAnn . "...</label>
						<br/>
						" . $LogoAff . "
						<input type='submit' class='DivAnnMin_Details' name='DivAnnMin_Details' value='Plus de détails...'/>
					</div>
					<div id='DivAnnMin_Footer'>
						<label>Paru le " . $TblRslt[8] . "</label>
						<label class='DivAnnMin_CodeP'>Localité : " . $TblRslt[7] . "</label>
					</div>			
				</div>
			</td>");		
	}


Par défaut lorsque je clique sur "détail" il me récupère l'id de la dernière miniature générée.
L'id correspond a $TblRslt[2]

Voila, merci d'avance de votre aide

4 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 août 2009 à 13:46
Bonjour,

Le mieux pour ne pas trop changer ton code, serait en fait d'inclure la construction du formulaire dans ta fonction.
Ainsi tu n'aurais pas un formulaire pour toute tes lignes de résultats, mais un formulaire pour chaque ligne.
Ainsi plus de problème de variable nommée de la même manière dans l'unique formulaire, chaque ligne ayant le siens.

Sinon, une autre solution consisterait à ne rien changer du tout, si ce n'est :
- ajouter un champ caché 'blabla' au tout début de ton formulaire, de sorte qu'il n'y en ai qu'un seul
- dans ta fonction, ne pas déclarer un bouton de type submit mais simplement de type 'button'
- attribuer une fonction javascript sur évènement 'onclick' du bouton
- cette fonction javascript prend en paramètre la valeur de l'identifiant, et son but est de mettre à jour la valeur du champ unique caché avec cette valeur, puis de soumettre le formulaire (l'envoyé). Ainsi, ton ID sera toujours celui de la ligne sur laquelle l'utilisateur aura cliqué.

Tu sembles te débrouiller niveau code, donc je te laisse implémenter l'une de ces deux solutions ;) (sachant que ce ne sont pas les seules solutions possibles non plus)
1
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 18
10 août 2009 à 13:58
Ah merci kij_82 tu viens de me faire économiser quelques heures à chercher pour rien ^^.

J'ai implémenter la première solution, le rajout de form et sa marche impeccable, j'avoue que je n'y aurais pas penser tout seul, j'était en train de me pencher sur la seconde.

(Mais y a moins a écrire avec la première :P)

Merci en tout cas et merci du compliment lol, sa fait toujours plaisirs ^^.
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 août 2009 à 15:06
Ne pas oublier de passer le statut de la discussion en "résolu" si c'est le cas (je l'ai fais)
0
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 18
14 août 2009 à 10:47
Oui désolé, j'ai oublié ^^

bye
0