Version complète: sur le forum Webmaster Hub : include et passage de variable dans l'URL
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Nils
Bonjour,

L'exécution de la ligne suivante s'avère impossible, je devinne (assez) vaguement pourquoi, mais je ne trouve pas de parade, quelqu'un pourrait-il m'expliquer ce qui se passe, et qu'elle serait la parade pour le résulat désiré : appel de page par du code PHP avec passage de paramètres dans l'URL.
$mavar="1";
include_one("ma_page.php?mavar=$mavar");
(l'erreur dit que la page est introuvable, bien que le système renvoit bien : ma_page.php?mavar=1 ; sans le passage de var la ligne s'exécute bien)
Merci, Nils.
sarc
Pourtant, ça devrait marcher, c'est donc que ma_page.php n'existe pas, tout simplement !
Nils
maleureusement si, mais, autre chose:
ma_page.php appelle par include ma_page_form.php qui appelle par <action> ma_page_traitement.php qui rappelle par include ma_page.php
ce serait cette boucle qui pose problème peut-être ?
sarc
LoL, donne les bouts de script STP, ca sera plus clair, on est le soir la biggrin.gif
Titag
Bonjour,

D'abord tu doit parler de la fonction include_once c'est bien ca ?

Ensuite, l'appel comme tu dis ne se fait pas de cette maniere.

Un include sert a mettre un bout de code ecrit dans un fichier, dans un autre fichier.
Lorsque tu fait un include 'mapage.php" ce n'est pas du tout comme si tu tape l'adresse du script dans un navigateur.

Donc la solution consite a faire :
CODE
$mavar = 1;
include_once("mapage.php");
et à faire en sorte que le script de mapage.php utilise bien la variable $mavar smile.gif
sarc
oula.. oui, vraiment fatigué moi !! biggrin.gif
Effectivement IMSTP6.gif jvais me prendre ma semaine de congés tongue.gif
Nils
Voici la boucle de mes 3 pages:

CODE
// page : admin_page_href_creer-services.php
<?
// récupération de date_resa et de autonum_QR de la page précédente.
$autonum_QR = $_GET["autonum_QR"];
$date_resa = $_GET["date_resa"];

// récupération des coordonnées du réservant par autonum_QR.
// récupération de la réservation à la date $date_resa.
// récupération des services existants pour cette demande de réservation par num_enreg_IR.
?>
<html<head></head><body>
<?php
include_once("admin_form_inc_creer-services.php");
?>
</body></html>


HTML
<!-- page : admin_form_inc_creer-services.php-->
<!-- affichage du réservant-->
<!-- affichage de la réservation-->

<? // affichage des services existants?>

<form name="ajout_dun_service" action="admin_proc_act_ajout-service.php?autonum_IR=<?echo $row_IR -> autonum_IR;?>" method="post">
<!--saisie des datas-->
<input type="submit" name="enregistrer" value="Enregistrer">
</form>


CODE
//page : admin_proc_act_ajout-service.php
<?
$num_enreg_IR = $_GET ["autonum_IR"];

// récupération des datas du formulaire: $_POST[];
// mise à jour de la base;

$autonum_QR="3"; //pour test
$date_resa="2"; //pour test
//include_once("admin_page_href_creer-services.php"); ligne qui marche, mais pas de var.
include_once("admin_page_href_creer-services.php?autonum_QR=$autonum_QR&date_resa=$date_resa"); //ligne qui marche pas
?>


Voilà, merci Sarc.
Nils
Merci Titag, bon, entre temps, à la demande de Sarc, j'ai mis des bouts du code.
En effet, je comprends bien qu'un include sert à inclure !, mais alors comment appeler une nouvelle fois ma première page, dans la dernière (la 3ième) ?
Je crois que j'ai un serpent qui se mord la queue là !
sarc
CODE
echo $row_IR -> autonum_IR


Quelle est cette variable ?

Si tu as juste un formulaire, moi je te conseille d'utiliser une fonction plutôt...

CODE
function formulaire(arg)
{
...
}


Déjà, pas besoin de l'inclure... Ensuite, ton forum il se redirige vers la même page, et tu teste ton $_POST, s'il est non vide c'est que le formulaire a été validé...
Bref, si le script est pas trop gros, tu peux tout faire en une seule page biggrin.gif
Anonymus
Dans ton 3e script, il faut que tu rajoutes une variable :
CODE
$from_include="YES";

Dans le premier script, au lieu de :
CODE
$autonum_QR = $_GET["autonum_QR"];
$date_resa = $_GET["date_resa"];

tu mets
CODE
if (@$from_include=="YES"){
$autonum_QR = $_GET["autonum_QR"];
$date_resa = $_GET["date_resa"];
}
Nils
Hello Nico,
Ok, en fait, c'est bien ce que j'avais auparavant, un peu sous une autre forme. Mais un bug me donnait systématiquement le dernier enregistrement dans $date_resa dans un certain cas de figure... C'est pour ça que j'ai voulu passer $date_resa et $autonum_IR dans l'url, pour garder la bonne valeur, mais je vais réfléchir à une autre solution vu que ça n'est pas possible par un include.
Mais en fait, tu me confirmes donc que je peux écrire un truc du genre le serpent qui se mord la queue, ça gène pas. mais je crains de quand même perdre le contenu de $autonum_IR et $date_resa, bon, je vais tester tout ça avec des échos ...
l'@ sert a cacher les messages du système ?, pourquoi l'utiliser ici ? => if (@$from_include=="YES"), je crois que j'ai trouvé => au premier passage la variable n'existe pas encore !
un grand merci à tous, à+, nb. smile.gif
Anonymus
Dans le second, tu n'inclus rien, tu fais juste un formulaire qui pointe vers.. Mais ce n'est pas un include.[STOP]

Dans le premier, tu inclus le second, [STOP]

Dans le troisieme, tu inclus le premier, qui inclus le second [STOP]

Où est le serpent qui se mord la queue ?

Il aurait pu se mordre la queue, si tu avais fais un include du troisieme dans le second, par exemple, là la boucle aurait été infinie, mais ca bug très vite dans ces cas là.

Pour ce qui est de ton formulaire, tu ne devrais pas mettre les variables
dans l'url, mais comme données du formulaire. Ils seraient passé par la méthode POST, qui est à mon avis plus 'sympa'. Elle ne laisse pas voir les variables dans la barre d'adresse. Pour ce qui est de récupérer les variables après, au lieu de $_GET[truc], tu fais $_POST[truc].

Pour le _AT_ c'est pour que les messages d'alerte/d'erreur ne s'affichent pas. Je te l'ai mis, parce qu'en fonction de la config. du serveur, ca aurait pu te générer une erreur. Mais tu peux l'enlever.

Voilà.
Nils
ok, je comprends, effectivement, le second casse la boucle !
Et au deuxième tour, ma nouvelle première page est crée par mon troisième qui appelle mon premier. C'est vrai, ça marche sans accros.
Merci.
Bon, je viens de tester, je passe dans l'<action> de mon deuxième, mes deux variables récalcitrantes pour les avoir dans mon troisième, et ça marche quand mon premier est rappelé, j'ai bien le bon contenu dans mes 2 vars, c'est tout ce qui manquait.
merci(bis) (as-tu vu mon autre post dans le salon ?)
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.