8792 sujets

Développement web côté serveur, CMS

Hello je débute en php et j'ai l'impression de faire face à une erreur simple mais je ne trouve la solution nul part.

Je voudrais utiliser :

<?php
include("lettre.php?page=lettre&id=1");
?>


Bien évidemment cela donne une erreur.

Que mettre à la place ??
Modifié par Bellami (04 Oct 2006 - 14:26)
Administrateur
Hello,


Comme tu as pu le lire dans le sujet d'Annonce de ce salon, le but du forum Alsacréations n'est pas de répondre à des questions portant sur vos premiers pas en PHP, ou l'apprentissage des technologies serveurs en général, mais bien des interactions entre les langages serveurs et les Standards.

Je ne vais pas fermer ce sujet car des réponses pourraient t'être apportées, mais je préfère te signaler qu'il ne faut peut-être pas t'attendre à un miracle et qu'il serait préférable de consulter un forum dédié à PHP Smiley cligne
Bonjour.

l'include, en php, se charge d'ouvrir un fichier et d'en recopier le contenu
à l'endroit où il est appelé.

la syntaxe est include "nom_fichier.ext"

Dans votre cas, vous ajoutez des paramètres normalement passé en "GET",
à l'aide du point d'interrogation et séparés par un &.

include("lettre.php?page=lettre&id=1");

Vous pouvez modifier l'appel comme suit:

$page = "lettre";
$id = 1;
include("lettre.php?page=lettre&id=1");


Par ailleurs, il faut modifier le code de lettre.php pour qu'il lise les variables
$page et $id alternativement à $_GET["page"] et $_GET["id"]

Il faut veiller à ce que lettre.php puisse accepter les deux variables
directement, et ne les surcharger que si $_GET est renseigné..
Modifié par GeorgesM (01 Oct 2006 - 14:36)
Georges, dans votre solutio il ya deux choses que je ne comprends pas.

$page = "lettre";
$id = 1;
include("lettre.php?page=lettre&id=1");

Pourquoi dans le include l'appel ne change pas ?

Et, je n'ai pas compris ce qu'il faut mettre dans "lettre.php"
Administrateur
Bonjour,

$page = "lettre";
$id = 1;
include("lettre.php");

plutôt Smiley smile

EDIT: yop, les 2 assignations remplacent ce que ferait GET. Include prend le nom d'un fichier et c'est tout.
Enfin sauf que cliquer sur un lien utilisant un passage par paramètres GET et faire un include côté serveur n'ont rien à voir ...
Modifié par Felipe (01 Oct 2006 - 15:22)
Administrateur
Bellami a écrit :
Et, je n'ai pas compris ce qu'il faut mettre dans "lettre.php"

Est-ce que lettre.php correspond à une "vraie" page web avec Doctype, <html> et tout ça ou bien c'est destiné à être inclus dans un autre script PHP?
Il faut que ce soit la 2ème solution pour que cela fonctionne.

Exemple de lettre.php destiné à être inclus:
echo "<p>lettre vaut $lettre et i vaut $i (c'est le script qui m'a inclus qui a assigné ces valeurs aux variables lettre et i)</p>";


Exemple de lettre.php destiné à être affiché tel quel par un navigateur:
echo '<!doctype html head title /title /head body (hum)';
echo '<h1>je suis une page web indépendante qui utilise la méthode GET</h1>';
echo "<p>lettre vaut $_GET['lettre'] et i vaut $_GET['i']</p>";
echo '</body></html>';

Modifié par Felipe (01 Oct 2006 - 15:28)
Pour l'include j'ai donc :

$page = "lettre";
$id = "1";
include("lettre.php")


et pour "lettre.php" j'ai :

$page = "$_GET["page"]";
$id = "$_GET["id"]";


Résultat : Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING
pour "lettre.php"
Modifié par Bellami (01 Oct 2006 - 15:36)
Administrateur
1ère erreur: tu ne peux pas utiliser de guillemets comme ça entre les guillemets qui délimitent une chaîne. Il faut les échapper (ou utiliser des ' à l'intérieur des " ).
EDIT: oups ici, tu n'aurais pas besoin des " extérieurs de toute façon. $a = $b; suffit.

Ensuite si tu inclues un fichier lettre.toto dans un script PHP, son contenu se retrouve copié-collé dans le script. Or si tu définis à la ligne précédente les valeurs de tes 2 variables, le script ne doit pas aller chercher celles-ci dans le tableau GET. Fais un echo $lettre; ou var_dump($lettre); pour t'en convaincre.
GET ne sert que pour passer des variables d'une page à l'autre, si tu fais un include ce n'est qu'une page qui se prépare sur le serveur et qui sera envoyée au navigateur, revois le tutoriel sur include() ou la doc PHP sur require/include à ce propos Smiley cligne
Modifié par Felipe (01 Oct 2006 - 15:50)
Salut tout le monde Smiley biggrin

juste pour info il semblerait qu'un include avec un chemin absolu
par exemple
[b]include('http://127.0.0.1/Test/include/page.php');[/b]
oblige à utiliser la forme page.php?var1=aaa&var2=bbb et la récupération avec $_GET

cf. ce topic

D'autre part (mais ça n'a rien à voir) l'affichage des balises de code sous IE laisse à désirer :

upload/8634-affichageco.gif


@+