Passer une variable d'une page a une autre

Mammouth du PHP | 725 Messages

07 juil. 2011, 07:50

Bonjour!

Je fais une requete dont je recupere mes donnee d'une BDD, je recois par exemple 10 recultats, alors je voudrais effectuer un clique et transmettre l'id de la valeur cliquee vers une autre page pour l'utiliser dans une autre requete:
SELECT * FROM table;

num_rows = 10

while () {
echo '<a href="index.php?page=resultat">'.$valeur.'</a>';
}
donc j'aurais un resultat:
valeur1
valeur2
valeur3
..
valeur10
sans mettre l'id au lien, comment puis je transferrer mon ID vers l'autre page?

avec la session il transmet le dernier id qui est 10, meme chose avec hidden.

merci

ViPHP
xTG
ViPHP | 7331 Messages

07 juil. 2011, 08:13

Si tu ne veux pas le passer en clair dans l'url il faut passer par POST.
Donc avec un formulaire avec un champ en hidden.

Mammouth du PHP | 725 Messages

08 juil. 2011, 05:28

Si tu ne veux pas le passer en clair dans l'url il faut passer par POST.
Donc avec un formulaire avec un champ en hidden.
je l'ai essaye par ce code et ca marche pas, un id vide:

page1.php
echo '<form method="POST" action="page2.php">';
	    foreach($tabl_ti as $row_ti)
        {
echo '<input type="hidden" name="id" value="'.$row_ti->id.'" />';
page2.php:
page 2
<?php

print_r($_POST);

if(IsSet($_POST['id']))
{
	echo 'existe';
		
}
else
{
	echo 'not found';
}

?>

ViPHP
xTG
ViPHP | 7331 Messages

08 juil. 2011, 08:02

D'une part je vois un souci, tu fais une boucle sur un champ input ayant le même nom...
D'autre part comment postes-tu ton formulaire ?

Mammouth du PHP | 725 Messages

10 juil. 2011, 04:32

D'une part je vois un souci, tu fais une boucle sur un champ input ayant le même nom...
D'autre part comment postes-tu ton formulaire ?
j'ai mis l'id dans le nom de l'input, et je transmets mes variables par la method POST

Mammouth du PHP | 2278 Messages

10 juil. 2011, 10:45

Déja on peut mettre <input type='text'...> pour voir la valeur passée, ce qui renseignera sur ce qu'on a vraiment écrit.
Mettre un print_r($_POST) au début de la page réceptrice.
Remplacer <...name='id'..> par <...name= 'id[]'...> (paire de crochets; je me sers des quotes simples parce que je passe tout par print...)..
Et on devrait commencer à entrevoir la solution...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 725 Messages

10 juil. 2011, 12:29

print_r me retourne un array vide

et pour l'id[] je l'ai mis en variable

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

10 juil. 2011, 12:59

Si l'array est vide, c'est que rien n'est envoyé en post... ton formulaire est-il bien fermé ? comment indiques-tu quelle ligne est envoyée ?

Montre nous le code complet de ta boucle plutôt que des fragments de codes incomplets qui ne permettent pas de voir ce que tu fais :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 2278 Messages

10 juil. 2011, 15:30

tenter :
<input type = 'text'...> au lieu de <input type= 'hidden'...> pour voir ce que input a dans le ventre
puis /ou
avant :

Code : Tout sélectionner

foreach($tabl_ti as $row_ti) { echo '<input type="hidden" name="id" value="'.$row_ti->id.'"

Code : Tout sélectionner

print_r ($table_ti); foreach($tabl_ti as $row_ti) { echo '<input type="text" name="id" value="'.$row_ti->id.'"
puis si ce print_r montre les valeurs que tu attends:

Code : Tout sélectionner

foreach($tabl_ti as $row_ti) { print_r($row_ti); echo '<input type="text" name="id" value="'.$row_ti->id.'"
de toutes façons il faut name= 'id []'
essaie pour voir avec

Code : Tout sélectionner

for ($i= 1; $i <5; $i++); print "<input type= 'text' name= 'essai' value ='$i'> <input type= 'text' name= 'tablo[]' value ='$i'>"; endfor;
et print_r($_POST); dans le script appelé....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 725 Messages

11 juil. 2011, 02:30

voila le code en entier:
<?php
	
	echo '<form method="POST" action="page2.php">';
	    foreach($tabl_ti as $row_ti)
        {
			echo '<input type="hidden" name="'.$row_ti->id.'" value="'.$row_ti->id.'" />';
        	if ($i%4 == 0) echo '<tr align="center">';
			$i++;
			
			$_pic = $path2sh.$row_ti->sh_tran.'.png';
			
			$check = new Valid_File_Check($_pic);
				if($check->isValid($_pic)){
    				$pic = '<img src="'.$_pic.'" width="100" height="100">';
					} else {
    				$pic = '<img src="'.$path2sh.'UnknownProfile.png" width="100" height="100">';
    				}
					
			
			echo '<td width="160">';
			echo $pic.'<br>';
			echo '<span class="Span01">';
			echo '<a href="'.$row_tilawa->sheikh_tran.'.html" class="info"><b>'.$row_ti->she_br.'</b></a>';
			echo '<span>';
			echo '</td>';

     if ($i%4 ==0)echo "</tr>";
     
}
echo '</form>';
}
echo '</table>';

?>

ViPHP
xTG
ViPHP | 7331 Messages

11 juil. 2011, 08:10

Faut pas chercher plus loin...
<table><form><input /><tr>
C'est valide ça en HTML ? Non...
Commences par avoir un HTML qui n'est pas sorti du chapeau d'un magicien et qui n'a pas trois jambes et ensuite on pourra peut être partir sur de bonnes bases de debug si cela n'arrange pas la chose. :)

Mammouth du PHP | 2278 Messages

11 juil. 2011, 10:53

Il y a quand même des outils avec Firefox et Opera qui aideraient beaucoup à savoir où ça en est.
Je répète de mettre 'text' à la place de 'hidden' pour voir si les valeurs qu'on croit passer sont bien présentes.
Une autre solution est d'afficher le code source de la page.
Une troisième est d'utiliser la console d'erreur de Firefox ET celle d'Opera, plus tatillon et plus bavard sur les erreurs...)
Enfin, si le print_r sur la page réceptrice dit Array() c'est que rien n'a été transmis :
sans quoi on aurait une liste de noms de champs style [toto]=>12.
Une question bête : il m'est arrivé lors de changements de présentation de mes pages de ne pas mettre le bouton submit et </form>
dans le bon ordre, ou d'oublier le </form>; alors pour peu qu'il y ait un autre <form> plus loin...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 725 Messages

11 juil. 2011, 12:21

le meme probleme:
<?php
echo '<form method="POST" action="sheikh.php">';
echo '<table width="600" align="center" cellpadding="3" border="0">';
echo '<tr align="center" bgcolor="#42afdc"><td colspan="4">';
echo '</td></tr>';

		    foreach($tabl_ti as $row_ti)
        {
	        	if ($i%4 == 0) echo '<tr align="center">';
			$i++;
			
				
			$sh_pic = $path2sh.$row_ti->sh_tran.'.png';
			
			$check = new Valid_File_Check($sh_pic);
				if($check->isValid($sh_pic)){
    				$pic = '<img src="'.$sh_pic.'" width="120" height="100">';
					} else {
    				$pic = '<img src="'.$path2sh.'UnknownProfile.png" width="120" height="100">';
    				}
					
			
			echo '<td width="160">';
			echo '<input type="text" name="'.$row_ti->id.'" value="'.$row_ti->id.'" />';
			echo '<div class="Span02">'.$pic.'</div>';
			echo '<span class="Span01">';
			echo '<a href="'.$row_ti->sh_tran.'.html" class="info"><b>'.$row_ti->sh_a.'</b></a>';
			echo '<span>';
			echo '</td>';

     if ($i%4 ==0)echo "</tr>";
     
}
}
echo '</table>';
echo '</form>';

?>

Mammouth du PHP | 2278 Messages

11 juil. 2011, 22:16

voit-on quelque chose dans le input:
echo '<input type="hidden" name="'.$row_ti->id.'" value="'.$row_ti->id.'" />';
Si c'est nom, ça vient d'avant:

foreach($tabl_ti as $row_ti)
print"$row_ti"; ou print_r($row_ti);
et ça devrait indiquer comment continuer.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 725 Messages

12 juil. 2011, 02:55

voit-on quelque chose dans le input:
echo '<input type="hidden" name="'.$row_ti->id.'" value="'.$row_ti->id.'" />';
Si c'est nom, ça vient d'avant:

foreach($tabl_ti as $row_ti)
print"$row_ti"; ou print_r($row_ti);
et ça devrait indiquer comment continuer.
avec un print_r ca me donne:
stdClass Object ( [id] => 43 [sh_a] => nom1 [sh_tr] => prenom1 [nationality] => nat1 [country_code] => na [sh_url] => url1 [count] => 1 [views] => 12 [qu] => 1 [ana] => 0 [dk] => 0 [dr] => 0 [BTV] => 0 [tl] => 0 [anam] => 0 [sr] => 0 [fi] => 0 [Pub] => 0 [ah] => 0 [ad] => 0 [Misc] => 0 )