PHP / Recuperer la valeur d'une generation

[Résolu/Fermé]
Signaler
Messages postés
94
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 juin 2012
-
Messages postés
94
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 juin 2012
-
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

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
852
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
94
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 juin 2012
18
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 ^^.
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
852
Ne pas oublier de passer le statut de la discussion en "résolu" si c'est le cas (je l'ai fais)
Messages postés
94
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 juin 2012
18
Oui désolé, j'ai oublié ^^

bye