8791 sujets

Développement web côté serveur, CMS

Bonsoir, le titre étant peu explicite je vous explique mon problème.

Je veux écrire du code php/html dans un fichier afin de l'exploiter dans une autre page, le soucis, le script s'écrit correctement mais me provoque une erreur de parse juste au niveau de l'affichage de ma variable $age qui est numérique.

je vous donne le code en espérant que vous puissiez m'aider s'il vous plait.

	$fichier= fopen("chemin_absolu/fichier_auto.php", "a+");
	fwrite($fichier, "
	<?php
				echo'<table border=\"1\" align=\"center\" height=\"100\" width=\"350\">';
				echo'<tr>';
				echo'	<td width=\"90\" rowspan=\"4\">\"image\"</td>';
					
				echo'</tr>';
				echo'<tr>';
					echo'<td valign=\"top\">'.$prenom.$nom.'</td>';
				echo'</tr>';
				echo'<tr>';
					echo'<td>'$age'</td>'; //sa bloque ici  a l'affichage
				echo'</tr>';
				echo'<tr>';
					echo\"<td> \".$fonction.\"</td>\";
				echo'</tr>';
				echo'</table>';
	?>");
			
	fclose($fichier);



merci d'avance aux courageux Smiley cligne
Modifié par Hooli (27 May 2010 - 18:36)
Salut,

Il manque les points (pour la concaténation) avant et après la variable $age.

$fichier= fopen("chemin_absolu/fichier_auto.php", "a+");
fwrite($fichier, "
	< ?php
			echo '<table border=\"1\" align=\"center\" height=\"100\" width=\"350\">';
			echo '<tr>';
			echo '	<td width=\"90\" rowspan=\"4\">\"image\"</td>';
			echo '</tr>';
			echo '<tr>';
			echo '	<td valign=\"top\">'.$prenom.' '.$nom.'</td>';
			echo '</tr>';
			echo '<tr>';
			echo '	<td>'.$age.'</td>';
			echo '</tr>';
			echo '<tr>';
			echo '	<td>'.$fonction.'</td>';
			echo '</tr>';
			echo '</table>';
	? >");
fclose($fichier);


Cela devrait resoudre le problême.

PS : Attention, j'ai écris < ?php et ? > (remarque l'espace) parce que le code ne s'affichait pas autrement.
Modifié par Eric2A (27 May 2010 - 02:53)
Bonsoir, tout d'abord je voudrais te remercier pour ta réponse dans un certains sens elle marche.

Mais le résultat n'est pas exploitable malheureusement du moins pas complètement après la correction chez moi. À l'affichage de ce code par mon navigateur voici ce qui apparait au dessus du tableau :
< ?php echo''; echo''; echo' '; echo''; echo''; echo''; echo''; echo''; echo''; echo''; echo''; echo""; echo''; echo'


et en dessous la fermeture de la balise php, d'autre part les champs dans le tableau affichent les points de concaténations.

Si vous aviez une autre idée à me donner car là je sèche Smiley cligne
Petite réflexion qui pourrait aider à résoudre le problème : ceci :

$coyote= 'bipbip';
fwrite($fp, "echo $coyote;");

écrit dans le fichier
echo bipbip;
.
Si ça paraît être à n'en pas douter une évidence ici, ça ne fait pas forcément tilt dans ton code à toi...

Je suis donc d'avis qu'il faut soit échapper les $, soit utiliser les simple quotes au lieu des doubles. Tes variables ne sont visiblement pas interprétées au bon moment.
Modifié par QuentinC (27 May 2010 - 09:09)
Là, cela devrait être bon
$fichier= fopen("chemin_absolu/fichier_auto.php", 'a+');
$s ="< ?php\n".
$s.="<table border=\"1\" align=\"center\" height=\"100\" width=\"350\">\n";
$s.="<tr>\n<td width=\"90\" rowspan=\"4\">\"image\"</td>\n</tr>\n";
$s.="<tr>\n<td valign=\"top\">".$prenom.' '.$nom."</td>\n</tr>\n";
$s.="<tr>\n<td>".$age."</td>\n</tr>\n";
$s.="<tr>\n<td>".$fonction."</td>\n</tr>\n";
$s.="</table>\n";
$s.="? >";
fwrite($fichier,$s);
fclose($fichier);

Comme précédemment, il faut supprimer l'espace pour "< ?php" et "? >"... Je suis obligé de les mettre ici sinon le message ne s'affiche dans le post. Bizarre.
Re bonjour à toutes et tous, finalement le soucis est réglé pour ceux qui voulaient la solution voilà ce qui marche parfaitement. Comme quoi c'est parfois bizarre mais logique au fond.

	fwrite($fichier, "
	
				<table border= \"1\" align=\"center\" height=\"100\" width=\"350\">
				<tr>
				<td width=\"90\" rowspan=\"4\">\"image\"</td>
				</tr>
				<tr>
				<td valign=\"top\">$prenom $nom</td>
				</tr>
				<tr>
				<td>$age </td>
				</tr>
				<tr>
				<td>$fonction</td>
				</tr>
				</table>
	");