Titre: [Résolu]Erreur dans une variable
Posté par: calenfeaion le le 13-03-2006 a 21:23:06
Bonjour à tous,
Voilà, j'essaye de mettre le contenu d'une page dans un variable mais je rencontre quelques difficulté, voici le code de la variable en question :
Code:
$ecriture = " <?php ########################### DEBUT DE LA CONFIGURATION ########################## // Paramètre de connection au serveur MySQL $bdd['host'] = '".$_POST['host']."'; // Serveur hôte $bdd['user'] = '".$_POST['user']."'; // Nom d'utilisateur $bdd['mdp'] = '".$_POST['mdp']."'; // Mot de passe $bdd['bdd'] = '".$_POST['bdd']."'; // Nom de la base de donnée $bdd['table'] = '".$_POST['table']."'; // Nom de la table du script ############################ FIN DE LA CONFIGURATION ########################### $cbdd = mysql_connect ($bdd['host'], $bdd['user'], $bdd['mdp']) OR die ('<div class='blocErreur'></div>Connexion à MySQL impossible : '.mysql_error().'</div>');
mysql_select_db ($bdd['bdd']) OR die ('<div class='blocErreur'>Sélection de la base de données impossible :'.mysql_error().'</div>'); ?>";
|
|
Quand j'execute la page avec la variable dedans, PHP me revois :Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in "la page" on line 36
|
|
Et voici la ligne 36 :
Code:
$bdd['host'] = '".$_POST['host']."'; // Serveur hôte
|
|
Une idée ?
Merci d'avance, Calen
PS: je suis sous Linux avec le navigateur Firefox et les caractères dans les balises code me paresse bien petit... Normal ? |
Titre: Re:Erreur dans une variable
Posté par: vertigo_76 le le 13-03-2006 a 23:33:14
Essaye ca plutot tu as des problème avec les cotes:
$bdd['host'] = "'".$_POST['host']."'"; // Serveur hôte |
Titre: Re:Erreur dans une variable
Posté par: domeconnection le le 14-03-2006 a 16:11:16
pourquoi tu veux les cotes?
$bdd['host'] = $_POST['host']; // Serveur hôte
|
Titre: Re:Erreur dans une variable
Posté par: calenfeaion le le 14-03-2006 a 18:47:06
pourquoi tu veux les cotes? $bdd['host'] = $_POST['host']; // Serveur hôte
|
|
Je m'excuse si je n'ai pas été clair, enfaite le code ce trouve dans une variable ($ecriture ici) et, après l'envoi du formulaire (par methode POST) les variables $_POST['qqchose'] sont sensé être remplacé par les saisies de l'internaute, le tout formant une seul et unique variable. D'où les quotes ;) Dites moi si je ne suis pas clair :-\
Essaye ca plutot tu as des problème avec les cotes:
$bdd['host'] = "'".$_POST['host']."'"; // Serveur hôte
|
|
Euh... Je ne vois pas l'intêret de mettre des "'" ???
Calen |
Titre: Re:Erreur dans une variable
Posté par: vertigo_76 le le 14-03-2006 a 19:53:00
Re
Disons que comme tu as mis une simple cote suivi d'une double j'ai pensé que tu souhaitais stocker 'MaBase' dans ta variable.
Si tu ne veux que la variable il te suffit d'enlever les cote et le point :
########################### DEBUT DE LA CONFIGURATION ########################## // Paramètre de connection au serveur MySQL $bdd['host'] = $_POST['host']; // Serveur hôte $bdd['user'] = $_POST['user']; // Nom d'utilisateur $bdd['mdp'] = $_POST['mdp']; // Mot de passe $bdd['bdd'] = $_POST['bdd']; // Nom de la base de donnée $bdd['table'] = $_POST['table']; // Nom de la table du script ############################ FIN DE LA CONFIGURATION ###########################
Par contre avant de faire ça tu devrais tester l'existence de tes variables POST et qu'elle correspondent a une valeur que tu attends afin d'éviter les surprises.
Bon c'est vrai que vu les infos que tu attends les cotes de ma première réponse ne servait a rien :P |
Titre: Re:Erreur dans une variable
Posté par: calenfeaion le le 14-03-2006 a 21:06:14
Enfaite si j'ai mis des ". et des ." c'est justement parce que si je ne les met pas, et bien ça ne fonctionne pas non plus :-\
Donc,
Code:
$bdd['host'] = '$_POST['host']'; // Serveur hôte
|
|
ne fonctionne pas mieux que
Code:
$bdd['host'] = '".$_POST['host']."'; // Serveur hôte
|
|
Calen |
Titre: Re:Erreur dans une variable
Posté par: vertigo_76 le le 14-03-2006 a 21:58:14
Non il ne faut pas de cote du tout.
$bdd['host'] = $_POST['host']; // Serveur hôte
de plus pour savoir si ta variable est bin rensaigné tu peux faire un test tout simple que tu enlevera après:
If(isset($_POST['host']){ echo 'La variable host a pour valeur : '.$_POST['host']; }else{ echo 'La variable host ne contient pas de valeur'; } |
Titre: Re:Erreur dans une variable
Posté par: calenfeaion le le 15-03-2006 a 17:31:47
Re
Bon, je réexplique tout le truc (c'est dur...) Enfaite les variables $_POST[truc'] sont recueillies via un formulaire envoyer par l'internaute.
Je veux que ces variables $_POST['truc'] soit remplacé par leurs valeurs dans la variable $ecriture.
Puis la variable $ecriture est écrite dans un fichier sous le forme : $bdd['host'] = 'LaValeurDe $_POST['truc']'; // Serveur hôte
Donc, la variable $ecriture, une fois écrite dans le fichier, génère elle même des variables...
J'espère que cette fois si c'est la bonne 8)
PS: Merci vertigo de t'interressé à mon problème tordu :P |
Titre: Re:Erreur dans une variable
Posté par: vertigo_76 le le 15-03-2006 a 21:03:14
Ok dis moi si je me trompes. Tu cherches a permettre de générer un fichier sur disque qui contient la config saisie dans le formulaire sous la forme d'une déclaration d'un Array().
Pourrais tu mettre le formulaire aussi stp. |
Titre: Re:Erreur dans une variable
Posté par: tavman le le 16-03-2006 a 07:52:49
Bon, je sais pas si tu l'a fait alors... Peut etre as-tu oublier de déclarer ton array... Alors rajoutte
$bdd = array();
tout en haut. Sinon, ca vient peut etr ede ton mysql_select_db qui est censé recevoir 2 attributs (en tout cas, je suis a l'habitude de lui en envoyer 2 moi mais bon).
Essaye d'enlever tes OR die, et si ca vient de la, alors met qu'un seul espace entre
$cbdd = mysql_connect ($bdd['host'], $bdd['user'], $bdd['mdp'])
et
OR die ('<div class='blocErreur'></div>Connexion à MySQL impossible : '.mysql_error().'</div>');
je voit pas trop pourquoi ca viendrai de la mais... on sais jamais.
Bon... Et puis t'as une erreur sur les lignes de tes OR die :
OR die ('<div class='blocErreur'></div>Connexion à MySQL impossible : '.mysql_error().'</div>');
regarde les quotes et tu comprendra... Ce serait mieux comme ceci :
OR die ("<div class='blocErreur'></div>Connexion à MySQL impossible : ".mysql_error()."</div>");
Enfin je pense. |
Titre: Re:Erreur dans une variable
Posté par: calenfeaion le le 16-03-2006 a 17:37:05
@Tavman J'ai déclaré mon array mais le message est juste reporté à la ligne 37 :D Pour se qui est de la connection à la base de donnée, le problème n'est pas là car j'utilise déjà cette partie du code dans mes autres pages, par contre pour les quotes, j'avais pas vu ::)
Bon, voici le code complet de la page :
Code:
<?php ################################################################################ # PAGE PRINCIPALE DE CALEN_LIVREDOR # ################################################################################ # Nom du script: Calen_livredor # # Version du script: Bêta1 # # Dernière modification: 12/03/2006 # # Auteur: Calenfeaion # ################################################################################
// Variable des étapes $etapeCourante = $_POST['etape']; $etapeSuivante = $_POST['etape'] +1;
if(isset($_POST['submit'])) { // Le formulaire à été envoyé, on le traite $fichierMysql = "../Config/mysql_connect2.php"; // Chemin du fichier de configuration $ecriture = " <?php
################################################################################ # FICHIER DE CONFIGURATION DE CALEN_LIVREDOR # ################################################################################ # Nom du script: Calen_livredor # # Version du script: Bêta1 # # Dernière modification: 13/03/2006 # # Auteur: De Coster Julien # ################################################################################ # Merci d'utiliser Calen_script, # # Bienvenue dans le fichier de configuration du script calen_livredor # # veuillez lire le readme dans le dossier Installation pour plus # # d'information sur la marche à suivre pour installer correctement le script. # ################################################################################
########################### DEBUT DE LA CONFIGURATION ########################## // Paramètre de connection au serveur MySQL $bdd = array(); // Déclaration du tableau $bdd['host'] = '$_POST['host']'; // Serveur hôte $bdd['user'] = '$_POST['user']'; // Nom d'utilisateur $bdd['mdp'] = '$_POST['mdp']'; // Mot de passe $bdd['bdd'] = '$_POST['bdd']'; // Nom de la base de donnée $bdd['table'] = '$_POST['table']'; // Nom de la table du script ############################ FIN DE LA CONFIGURATION ########################### $cbdd = mysql_connect ($bdd['host'], $bdd['user'], $bdd['mdp'])
OR die ('<div class=\'blocErreur\'></div>Connexion à MySQL impossible : '.mysql_error().'</div>');
mysql_select_db ($bdd['bdd'])
OR die ('<div class=\'blocErreur\'>Sélection de la base de données impossible :'.mysql_error().'</div>');
################################ !!! A LIRE !!! ################################ # /!\ Pour tout se qui est relatif au design du livre d'or se rendre dans le # # fichier styles.php se trouvant dans le dossier Config du script ! /!\ # ################################################################################ ?>"; if(file_exists($fichierMysql)) { // Vérifie que le fichier mysql_connect existe $fo = fopen($fichierMysql, "W+"); // On ouvre le fichier $result = fwrite($fo, $ecriture); // On génére le fichier fclose($fo); // Fermeture du fichier if(!$result) { print '<div class="blocErreur">Génération du fichier de connection échouer. Votre serveur accepte-t-il les manipulations de fichier? [ fopen(), fwrite() et fclose() ]</div>'; } } else { print '<div class="blocErreur">Le fichier de configuration à MySQL est inexistant !</div>'; } } else { // Le formulaire n'a pa encore été envoyé, on l'affiche // Informations sur l"étape print "<p>Entrer ici vos paramètre de connection à votre Base de donnée MySQL.</p>";
// affiche le formulaire print ' <form action="index.php" method="POST"> <table> <tr> <td>Host :</td> <td><input type="text" name="host" /></td> </tr> <tr> <td>Nom d"utilisateur :</td> <td><input type="text" name="user" /></td> </tr> <tr> <td>Mot de passe :</td> <td><input type="text" name="mdp" /></td> </tr> <tr> <td>Nom de la base de donnée :</td> <td><input type="text" name="bdd" /></td> </tr> <tr> <td>Nom de la table pour Calen livre :</td> <td><input type="text" name="table" value="calen_livredor" /></td> </tr> <tr> <td colspan="2" align="center"> <input type="hidden" name="etape" value="'.$etapeCourante.'" /> <input type="submit" name="submit" value="Généré le fichier de connection à MySQL" /> </td> </tr> </table> </form>'; } ?>
|
|
Le message d'erreur :| Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /srv/www/htdocs/calen_livre/Installation/etape-2.php on line 37 |
|
Et La Fameuse Ligne 37
Code:
$bdd['host'] = '$_POST['host']'; // Serveur hôte
|
|
Je précise que le code est à sa version "primaire" et que donc je n'est pas mis les vérifications etc etc ;)
Encore merci pour tout votre interêt, Calen |
Titre: Re:Erreur dans une variable
Posté par: vertigo_76 le le 16-03-2006 a 18:13:02
soit je suis vraiment trop crevé soit il y a un truc et dans ce cas la faut m'expliquer mais pourquoi met tu des quote avant et apres $_POST['host']?
$bdd['host'] = '$_POST['host']'; // Serveur hôte
=> pour moi vu que tu mets une quote avant le $ il considère que ce qui se trouve apres est du texte a metre dans la variable puis quand php rencontre la quote avant le mot host c'est la fin du texte et il attend une instruction.
Comme tu lui fournie le mot host et que ce n'est pas une instruction valide il te met une erreur.
Enfin c'est comme ca que je le voit, peut etre qu'il faut que j'aille me coucher. :-[
$bdd['host'] = $_POST['host']; // Serveur hôte
|
Titre: Re:Erreur dans une variable
Posté par: calenfeaion le le 16-03-2006 a 19:21:37
Arf, mince en faite c'est :
Code:
// Paramètre de connection au serveur MySQL $bdd = array(); // Déclaration du tableau $bdd['host'] = '".$_POST['host']."'; // Serveur hôte $bdd['user'] = '".$_POST['user']."'; // Nom d'utilisateur $bdd['mdp'] = '".$_POST['mdp']."'; // Mot de passe $bdd['bdd'] = '".$_POST['bdd']."'; // Nom de la base de donnée $bdd['table'] = '".$_POST['table']."'; // Nom de la table du script
|
|
Je t'explique, une fois que les valeurs des variables $_POST['truc'] sont mis dans la variable $ecriture et bien le fichier mysql_connect2.php généré sera sous le forme de $bdd['host'] = 'LaValeur'; // Serveur hôte
Car si je ne mettrais pas les quotes, et bien une fois le fichier écrit, cela donnerais : $bdd['host'] = LaValeur; // Serveur hôte Ce qui me renverrais forcement une erreur... D'où l'utilité des quotes
Calen |
Titre: Re:Erreur dans une variable
Posté par: tavman le le 16-03-2006 a 22:36:14
heuuu dans ce cas, peut etre que tu ferai bien de faire comme ca :
Code:
| $bdd['host'] = '"' . $_POST['host'] . '"'; // Serveur |
|
histoire d'écrire :
Code:
et pas ca :
Code:
t'as vraiment des problèmes avec tes quotes toi... |
Titre: Re:Erreur dans une variable
Posté par: calenfeaion le le 19-03-2006 a 19:52:51
Re
Désoler pour le retard, mais pas eu le temps de répondre. Alors, revenons au problème. :D
Alors quand je même ton code, càd :
Code:
$bdd['host'] = '"' . $_POST['host'] . '"'; // Serveur
|
|
Et bien j'ai :Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /srv/www/htdocs/calen_livre/Installation/etape-2.php on line 37
|
|
Pour résumer: sa change rien du tout!
Pour le faite que j'ai des problèmes avec les quotes : En faite, je n'ai jamais vu des ' " ' . Je ne vois pas du tout où tu veux en venir avec un tel système. Sa ne rime à rien, tu mets un ' puis un " (donc tu finis la variable) puis tu met un ' ??? De plus la valeur de la variable est mis entre doubles quotes... Enfin, je comprends rien à ton raisonnement. Explique stp.
Calen |
Titre: Re:Erreur dans une variable
Posté par: calenfeaion le le 19-03-2006 a 21:23:22
Voilà, c'est fini, j'ai trouvé la solution 8)
En faite, c'est avec ton histoire de quote, sa ma donné un idée. J'ai remplacé les " par des ' et inversement, et, me demandé pas pourquoi, mais sa marche :D
La variable corriger qui fonctionne :
Code:
$ecriture = ' <?php
################################################################################ # FICHIER DE CONFIGURATION DE CALEN_LIVREDOR # ################################################################################ # Nom du script: Calen_livredor # # Version du script: Bêta1 # # Dernière modification: 19/03/2006 # # Auteur: calenfeaion # ################################################################################ # Merci d\'utiliser Calen_script, # # Bienvenue dans le fichier de configuration du script calen_livredor # # veuillez lire le readme dans le dossier Installation pour plus # # d\'information sur la marche à suivre pour installer correctement le script. # ################################################################################
########################### DEBUT DE LA CONFIGURATION ########################## // Paramètre de connection au serveur MySQL $bdd = array(); // Déclaration du tableau $bdd[\'host\'] = "'. $_POST['host'].'"; // Serveur $bdd[\'user\'] = "'.$_POST['user'].'"; // Nom d\'utilisateur $bdd[\'mdp\'] = "'.$_POST['mdp'].'"; // Mot de passe $bdd[\'bdd\'] = "'.$_POST['bdd'].'"; // Nom de la base de donnée $bdd[\'table\'] = "'.$_POST['table'].'"; // Nom de la table du script ############################ FIN DE LA CONFIGURATION ########################### $cbdd = mysql_connect ($bdd[\'host\'], $bdd[\'user\'], $bdd[\'mdp\'])
OR die (\'<div class=\'blocErreur\'></div>Connexion à MySQL impossible : \'.mysql_error().\'</div>\');
mysql_select_db ($bdd[\'bdd\'])
OR die (\'<div class=\'blocErreur\'>Sélection de la base de données impossible :\'.mysql_error().\'</div>\');
################################ !!! A LIRE !!! ################################ # /!\ Pour tout se qui est relatif au design du livre d\'or se rendre dans le # # fichier styles.php se trouvant dans le dossier Config du script ! /!\ # ################################################################################ ?>';
|
|
Merci pour ton aide Vertigo ;)
Calen |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|