Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/06/2008, 12h02   #1
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
Par défaut [PHP-JS] Une variable PHP dans une autre page

Bonjour tout le monde, j'ai un souci : j'arrive pas à passer ma variable php d'une page à l'autre en url.

Après de nombreux essais dans mon code global sans résultat, je me suis fait 2 pages .php hyper simples :

La première contient :
Code :
1
2
 
<a href="recepvar.php?nom=Chouchou>Le lien affiché</a>
La 2ème :

Code :
1
2
 
<?php echo 'Bienvenue sur cette page, ' . $nom; ?>
Alors quand j'utilise le lien : j'ai une nouvel fenêtre qui m'indique :


Notice: Undefined variable: nom in C:\Documents and Settings\bla\bla\bla\site\recepvar.php on line 1
Bienvenue sur cette page,

Alors que dans l'adresse de la page nous avons :

http://127.0.0.1/site/recepvar.php?nom=Chouchou

Mais pourquoi alors, je ne peux pas utiliser cette variable?
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 12h04   #2
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
si les variables global sont a off tu dois passer par la syntaxe adequate
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 12h08   #3
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
Merci, t'as mis fin à mes tortures.
Je vais tenter maintenant sur l'ensemble de mon code
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h33   #4
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
Bon voila que je passe aux choses plus sérieuses et que rien ne fonctionne.

En fait, la variable que je souhaite de récupérer c'est une $_POST['auteur], d'un formulaire. je souhaiterais de la passer dans une autre page via URL.

Je ne veux pas la récupérer avec un submit. En effet, je voudrais mettre à la disposition des utilisateurs un lien qui leur permet d'aller sur une autre page ou ils auront les informations qui prennent beaucoup de place.

Par exemple, j'ai une sortie de requête SQL, ici, le titre, le nom de l'auteur et le résumé d'un livre que je voudrais proposer sous forme d'un lien vers une autre page. Puisqu'un résumé devient vite encombrant dans un tableau.

Je pensais faire un href vers une page ou je traiterait la requête qui me permettra d'afficher le résume du livre choisit par l'utilisateur.

Il y a peut être un autre moyen de gérer cette affichage?

Cordialement,
Nooby.
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h23   #5
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

Je pense avoir à peu près compris ce que tu veux faire, mais qu'est-ce qui ne fonctionne pas ?

A première vue, il faut que tu crées une page comme resume.php, et que tu fasses des lien vers cette page de la forme resume.php?id_livre=12

C'est ça ?
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h26   #6
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
avec un POST tu dois avoir un submit (plus ou moins transparent avec du javascript)

avec un GET tu peux transferer des variables avec de simple lien href
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h33   #7
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
J'essaie de suivre une autre piste.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
$resultat=mysql_query($sql) or die ("requète non executé");
if (! $resultat) { echo "Erreur requete"; exit;} 
while ($ligne=mysql_fetch_array($resultat))
{
echo '<tr>';
echo '<td>'.$ligne["titre"].'</td>';
echo '<td>'.$ligne["nomAuteur"].' '.$ligne["prenomAuteur"].'</td>';
echo '<td>'.$ligne["libelleTypeAuteur"].'</td>';
echo '<td>'.$ligne["anneeEdition"].'</td>';
echo '<td><a href="#" OnClick="aproposde()">Consulter résumé</a></td>';
echo '</tr>'."\n";
}
echo '</table>'."\n"; 
mysql_free_result($resultat);
mysql_close($connexion);
}?>
 
<form method="POST">
<textarea name="auteur"></textarea>
<input type='hidden' name='codeLivre' value='<?php echo $ligne["codeReference"]; ?>'/>
<input type="submit" value="OK"/>
</form>
Ma requête fonctionne correctement. J'ai vérifié.
la fonction aproposde() :

Code :
1
2
3
4
5
6
7
8
9
 
<script language="javascript">
<!--
function aproposde()
{
window.open("resume.php", "aproposde", "toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=no, copyhistory=no, width=500, height=500, left=300, top=50");
}
//-->
</script>
Et dans ma page resume.php, je tente juste pour le moment d'afficher la valeur récupérée :

Code :
1
2
3
4
5
 
<?php
$codeLivre=$_POST['codeLivre'];
echo 'Bienvenue sur cette page, ' .$codeLivre;
?>
Mais ceci ne fonctionne toujours pas.
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h35   #8
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
c'est normal que ton form n'ai pas d'action ?
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h40   #9
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
@Eusebe : oui, t'as bien compris, le id_livre est un résultat d'une requête.

@Chtipitou: il a pas d'action car le traitement se fait sur la même page (là ou il y a le formulaire) ,j'airais pu mettre une action pour que mon formulaire appelle lui-même.
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h43   #10
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
et sur la page generee le code HTML est correct ? le echo est bon dans le form ?
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h58   #11
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
Arf, echo est bon que si je le place dans mon while. Je sais plus quoi faire pour recup mon identifiant du livre dans ma page resume.php.
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h07   #12
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Il ne faut pas que tu fasses
Code :
window.open("resume.php", "aproposde", "toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=no, copyhistory=no, width=500, height=500, left=300, top=50");
Mais :
Code :
window.open("resume.php?codelivre=<?php echo $ligne["codeReference"]; ?>", "aproposde", "toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=no, copyhistory=no, width=500, height=500, left=300, top=50");
Dans le premier cas, tu ne passes pas de paramètres à ta page...

Et dans ce cas, dans ta page resume.php, tu peux y accéder par $_GET['codelivre'], et pas $_POST['codelivre'].

Edit : je n'avais pas fait attention, c'est une fonction javascript appelée dans ton code. Si tu veux conserver cette structure, il faut que ta fonction prenne en paramètre le code du livre, et l'utilise dans la création du lien.
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h18   #13
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
Merci, mais maintenant, rien ne se passe si on clic sur le lien. Avant, j'avais une fenêtre qui s'ouvrait.
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h22   #14
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bon, on va commencer par éliminer le javascript...

Si tu remplaces :
Code :
<a href="#" OnClick="aproposde()">Consulter résumé</a>
par :
Code :
<a href="resume.php?codelivre=<?php echo $ligne["codeReference"]; ?>">Consulter résumé</a>
Ca donne quoi ?
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h27   #15
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
J'étais en train de le tester :

Notice: Undefined index: codeLivre in C:\Documents and Settings\bla\bla\bla\site\resume.php on line 8
Bienvenue sur cette page,

Et voilà ce qu'il y a dans l'adresse :

http://127.0.0.1/site/resume.php?codelivre=%3C?php%20echo%20$ligne[
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h28   #16
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Citation:
Envoyé par Nooby Voir le message
J'étais en train de le tester :

Notice: Undefined index: codeLivre in C:\Documents and Settings\bla\bla\bla\site\resume.php on line 8
Bienvenue sur cette page,
Et quelle est l'adresse ce cette page ?
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h36   #17
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
Je viens de re-tester echo dans la première page.
Code :
1
2
 
echo $ligne["codeReference"];
Il affiche bien l'identifiant de mon livre.

Un problème de syntaxe dans l'écriture de href?
Pour résumer, dans ma page généréee, j'écris :

Code :
1
2
3
 
$codeLivre=$_GET['codelivre'];
echo 'Bienvenue sur cette page, ' .$codeLivre;
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h39   #18
Futur Membre du Club
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 59
Points : 18
Points : 18
Citation:
Envoyé par Eusebe Voir le message
Et quelle est l'adresse ce cette page ?
http://127.0.0.1/site/resume.php?codelivre=%3C?php%20echo%20$ligne[
Nooby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h45   #19
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Je n'avais pas fait attention que ton lien était déjà dans un echo

Fais plutôt ça :
Code :
echo '<td><a href="resume.php?codelivre='.$ligne["codeReference"].'>Consulter résumé</a></td>';
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h50   #20
Membre confirmé
 
Inscription : mai 2006
Messages : 196
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 196
Points : 278
Points : 278
Salut, ton code PHP n'a pas été exécuté car ta page JavaScript ne passe pas par l'interpréteur PHP (tu peut configurer sa dans apache) donc du coup tu as le code PHP brut dans ton url :o hihi. Mais en fait sa sert a rien, je viens de regarder ton code que tu as mis au debut et en fait ton script ne marchera jamais comme sa :o car tu re utilise $ligne pour assigner une valeur a ton boutton input qui est caché mais ceci n'est pas dans une boucle, donc ou que tu clique tu aura toujours le meme résumé, c'est ta fonction aproposde() qui doit tout faire et ce dans ton while qui lit ta requête (t'aura pas besoin de mettre du PHP dans le JS en +) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
//PHP
 
$resultat=mysql_query($sql) or die ("requète non executé");
if (! $resultat) { echo "Erreur requete"; exit;} 
while ($ligne=mysql_fetch_array($resultat))
{
echo '<tr>';
echo '<td>'.$ligne["titre"].'</td>';
echo '<td>'.$ligne["nomAuteur"].' '.$ligne["prenomAuteur"].'</td>';
echo '<td>'.$ligne["libelleTypeAuteur"].'</td>';
echo '<td>'.$ligne["anneeEdition"].'</td>';
 
/*
 * C'est ici que tu dois mettre ton code de Reference, lors du clic
 */
echo '<td><a href="#" OnClick="aproposde( \''.$ligne['codeReference'].'\' )">Consulter résumé</a></td>';
 
echo '</tr>'."\n";
}
echo '</table>'."\n"; 
mysql_free_result($resultat);
mysql_close($connexion);
}?>
Et la fonction aproposde() :

Code :
1
2
3
4
5
6
7
8
9
10
 
<script language="javascript">
<!--
function aproposde( codeReference )
{
//Tu concatene ta variable a l'url ici
window.open("resume.php?codeLivre="+codeReference, "aproposde", "toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=no, copyhistory=no, width=500, height=500, left=300, top=50");
}
//-->
</script>
Sa devrait mieux marcher
meliandah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h13.


 
 
 
 
Partenaires

Hébergement Web