Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 28/05/2007, 13h05   #1
Invité de passage
 
Inscription : avril 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 15
Points : 0
Points : 0
Par défaut mettre du code dans la création d'un fichier php

bonjour tout le monde !

Je vais essayer d'être clair dans le problème que je veux vous exposer.

Je veux génèrer des fichiers php de manière dynamique dans mon appli, en gros suivant les choix de l'utilisateur, le nom dans la balise html "title" change etc...

Pour cela j'utilise une variable

$var = "je mets ici toute ma page php";

Bon ca marche !

Mais quand je veux inclure du code php dans cette même génération, ca me pose problème. je m'explique...

exemple :
---------
dans ma variable $var, j'ai une requête à une ligne :
$var = requet("SELECT nom FROM table WHERE id_utilisateur='$id' ");
(exemple ou l'id était égal à 1)

Quand le fichier est généré, on a
= requet("SELECT nom FROM table WHERE id_utilisateur='1' ");

il n'y a plus mon "$var" !!

Il y a surement un moyen pour contourner ce problème !

merci d'avance pour vos réponses !
steam_o_roll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 13h32   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Pourrait-on avoir le code en question ? PHP cherchera à interpoler (remplacer une variable par sa valeur) dans les chaînes délimitées par des double quotes. Ce n'est plus le cas si le caractère dollar est échappé (précédé d'un backslash) ou lorsque l'on utilise des chaînes délimitées par des simple quotes.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 14h20   #3
Invité de passage
 
Inscription : avril 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 15
Points : 0
Points : 0
Citation:
Envoyé par julp
Ce n'est plus le cas si le caractère dollar est échappé (précédé d'un backslash)
désolé je ne vois pas ce que tu veux dire

je ne peux pas donner mon code entier pour le moment, mais le problème que j'ai et expliquer au dessus ! (je n'ai pas été très clair, j'ai utilisé 2 fois $var )

Je vais retenter d'expliquer avec un autre exemple :
--------------------
pour info:
---------
$nom = TOTO;
$i = 1;
dans un fichier a part:
function requet(){...}; //renvoie le résultat de la requete
--------------------

$mon_fichier = "
<html>
<head>".$nom."</head>
<body>
<?php
include(requete.php);
$var = requet("SELECT nom FROM table WHERE id_utilisateur='$id'");
?>
....
</body>
</html>
";

quand mon fichier est crée, je l'édite pour voir ce que ca donne et j'ai :
<html>
<head>TOTO</head>
<body>
<?php
include(requete.php);
= requet("SELECT nom FROM table WHERE id_utilisateur='1'");
?>
....
</body>
</html>

Et là c'est le drame

Il a voulu assigner des valeurs à mes variables !!!

Donc comment faire pour que ca ne se fasse pas ! merci bien
steam_o_roll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 14h53   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Syntaxiquement j'aurais plutôt écrit :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$mon_fichier = "
<html>
<head>".$nom."</head>
<body>
<?php
include('requete.php');
\$var = requet(\"SELECT nom FROM table WHERE id_utilisateur='$id'\");
?>
....
</body>
</html>
";
Ou :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$mon_fichier = '
<html>
<head>'.$nom.'</head>
<body>
<?php
include("requete.php");
$var = requet("SELECT nom FROM table WHERE id_utilisateur=\'' . $id . '\'");
?>
....
</body>
</html>
';
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 14h57   #5
Invité de passage
 
Inscription : avril 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 15
Points : 0
Points : 0
et donc avec le \$var ca marchera ??

si c'est le cas je teste ca ce soir
steam_o_roll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 15h14   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Soit :
Code :
1
2
3
4
5
<?php
$var = 3;
echo "\$var vaut $var";
echo '$var vaut ' . $var;
?>
Donne toutes deux "$var vaut 3". Comme je le disais plus haut, dans une chaîne délimitée par des double quotes ("), PHP cherchera à interpoler la variable, c'est à dire à la remplacer par sa valeur et qui si elle n'est pas définie sera remplacée par rien (une chaîne vide). On ne retrouve pas ce comportement avec des quotes simples (').

Un peu de lecture si vous le souhaitez : Apostrophes ou guillemets, lesquels choisir ?.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 15h31   #7
Invité de passage
 
Inscription : avril 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 15
Points : 0
Points : 0
merci beaucoup ! je vais tester ca !
steam_o_roll est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h44.


 
 
 
 
Partenaires

Hébergement Web