8791 sujets

Développement web côté serveur, CMS

Bonjour à tous!

Je me retrouve avec un petit problème. Je souhaite afficher un formulaire à l'aide de echo, donc en php. Seulement, j'ai une erreur et je vois d'où elle vient mais je ne sais pas comment la résoudre.

echo "<table border=\"1px solid black\">
<form name=\"admin\" method=\"post\" action=\"<?php $_SERVER['PHP_SELF'];?>\">
<tr><td>Corps :</td><td><?php
$oFCKeditor = new FCKeditor('FCKeditor1') ;
$oFCKeditor->BasePath = 'le_path' ;
$oFCKeditor->Value = $contenu;
$oFCKeditor->Create() ;
?>
</td></tr>
<tr><td><input type=\"submit\" name=\"maj\" value=\"Mettre à jour\" /></td></tr>
</form>
</table>";


L'erreur générée est la suivante :
a écrit :
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/jpcfranc/www/tests/GD/administration/formation_edit.php on line 25


La ligne 25 est celle de <?php $_SERVEUR.. etc. Si je remplace par un nom de page, le formulaire s'affiche bien! J'ai mal du échapper le <?php etc...

Une idée? Smiley smile

Merci d'avance à tous!
Modifié par taggeur (28 Jul 2008 - 09:36)
Ton problème vient que tu mets une balise php dans une balise php, voici la correction :

echo "<table border=\"1px solid black\">

<form name=\"admin\" method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">

<tr><td>Corps :</td><td>";

$oFCKeditor = new FCKeditor('FCKeditor1') ;

$oFCKeditor->BasePath = 'le_path' ;

$oFCKeditor->Value = $contenu;

$oFCKeditor->Create() ;

?>

</td></tr>

<tr><td><input type=\"submit\" name=\"maj\" value=\"Mettre à jour\" /></td></tr>

</form>

</table>";


Quand tu mets du code dans une balise echo ""; mais le php dans la syntaxe suivante ".$variable."
J'avais marqué le sujet en [résolu] mais j'ai un nouveau problème donc pour éviter de rouvrir un sujet, je poste ici Smiley smile

<?php
//Requête
$req=("SELECT * FROM page WHERE nom ='" . $page . "'");
$result=mysql_query($req) or die ('Erreur :'.mysql_error());

while($ligne=mysql_fetch_assoc($result))
{
$contenu=$ligne['contenu'];
//echo $contenu;
echo "<table border=\"1px solid black\">
<form name=\"admin\" method=\"post\" action='" . $_SERVER['PHP_SELF']; . "'\">
<tr><td>Corps :</td><td><?php
$oFCKeditor = new FCKeditor('FCKeditor1') ;
$oFCKeditor->BasePath = '/fckeditor/' ;
$oFCKeditor->Value = '';
$oFCKeditor->Create() ;
?>
</td></tr>
<tr><td><input type=\"submit\" name=\"maj\" value=\"Mettre à jour\" /></td></tr>
</form>
</table>";


}
?>


L'erreur est la suivante
a écrit :
Catchable fatal error: Object of class FCKeditor could not be converted to string in C:\Program Files\EasyPHP 2.0b1\www\GD\administration\edition.php on line 27


La ligne 27 est cele-ci :
a écrit :
$oFCKeditor = new FCKeditor('FCKeditor1') ;


J'ai donc pensé qu'il fallait enlever le <?php ... ?>, comme dans l'erreur avant, mais ça ne marche quand même pas...

Vous pouvez m'aider? Merci d'avance Smiley lol
Salut taggeur,

Je tiens tous d'abord à t'avertir que je suis novice en PHP et que donc mes conseils ne sont pas forcément juste...
Mais je vais quand même dire ce que je pense... On c'est jamais. Smiley cligne

Alors déjà je vois une erreur. Tu ferme 2fois ta balise <?php
la première fois ici:

$oFCKeditor->Create() ;
?>
</td></tr>

et la deuxième fois tous en bas...
Je pense donc que tu devrait enlever celui que je t'indique au dessus car il n'ai d'aucune utilité... Si tu fait ça il faudra quand même que tu continue à mettre entre guillemet les td tr ... qui suivent.
Sinon autre possibilité (personnellement je trouve plus simple dans ce cas) ce serait de laisser comme tu as fait mais alors il faut que tu modifie ta dernière ligne par <?php } ?> et non pas juste } ?>

Sinon pour l'erreur que tu indique ne serait-ce pas quelque chose comme ça plutôt?:

$oFCKeditor = "new {$_FCKeditor['FCKeditor1']}" ;

Je ne connais pas FCKeditor donc je ne sais pas vraiment comment ce logiciel fonctionne mais en général quand tu as quelque chose qui s'écrit $variable= texte nom_variable['champ'] il faut ajouter des guillemets, concaténé la variable et surtout pour récupérer la valeur d'une variable comme nom_variable['champ'] il faut mettre un $_ devant.

Je sais pas si je suis très claire mais en gros voila ce qu'il faudrait changer :

$oFCKeditor = "new $_FCKeditor['FCKeditor1']";
$oFCKeditor->BasePath = '/fckeditor/' ;
$oFCKeditor->Value = '';
$oFCKeditor->Create() ;
?> //on ferme la balise php pour afficher du html 

</td></tr>
<tr><td><input type="submit" name="maj" value="Mettre à jour" /></td></tr>
</form>
</table>

<?php "} ?> //C'est certainement pas la meilleur solution et je ne sais pas si le guillemet, qui ferme ton echo, est bien positioné... [sweatdrop] 


Tous ça est mon avis de débutant et donc certainement composé d'erreur... Smiley rolleyes
Bonne chance
Modifié par Dim (28 Jul 2008 - 14:25)
Dim a écrit :
en général quand tu as quelque chose qui s'écrit $variable= texte nom_variable['champ'] il faut ajouter des guillemets, concaténé la variable et surtout pour récupérer la valeur d'une variable comme nom_variable['champ'] il faut mettre un $_ devant.
Euh... quoi Smiley rolleyes ?

Ce qui est sûr c'est que
<?php
echo "blabla <?php ... ?> blabla";
?>
ne peut pas fonctionner...
Salut Heyoan,
Effectivement j'ai pas du être très claire... Smiley sweatdrop

Mais juste pour savoir si je n'ai pas dit trop de bêtise, que pense tu du code que j'ai essayé de corrigé?
Et bien puisque tu me le demandes et avec sincérité (et sans méchanceté aucune Smiley cligne ) :

1) tu débutes tout juste et comme je t'y invitais dans un précédent post ce serait mieux de ne rien dire plutôt que d'embrouiller la personne qui pose une question.

2) ta "solution" est en partie incomplète et en partie fausse donc doublement embrouillante.

3) ça me semble inopportun de "squatter" un sujet pour t'auto-former et demander si tu n'as pas dit trop de bêtises Smiley biggol !

<Edit>
4) en tous les cas tu me sembles très motivé pour apprendre et dépanner les autres et je pense que tu vas progresser très vite !
</Edit>



@taggeur > la syntaxe devrait plutôt ressembler à ça :
<?php
//Requête
$req=("SELECT * FROM page WHERE nom ='" . $page . "'");
$result=mysql_query($req) or die ('Erreur :'.mysql_error());

while($ligne=mysql_fetch_assoc($result))
{
$contenu=$ligne['contenu'];
//echo $contenu;
?>
<table border="1px solid black">
<form name="admin" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<tr><td>Corps :</td><td>";
<?php
$oFCKeditor = new FCKeditor('FCKeditor1') ;
$oFCKeditor->BasePath = '/fckeditor/' ;
$oFCKeditor->Value = '';
$oFCKeditor->Create() ;
?>
</td></tr>
<tr><td><input type="submit" name="maj" value="Mettre à jour" /></td></tr>
</form>
</table>
<?php } ?>
Et je ne parle que de la syntaxe car le code en lui même n'a aucun sens : tu fais une boucle à partir d'une requête dont tu n'utilises pas les valeurs retournées et cependant pour chaque résultat trouvé tu vas créer une table et un formulaire Smiley rolleyes !

J'aurais tendance à dire que ça ne risque pas de marcher comme ça...

As-tu été voir directement des exemples dans la FAQ et dans les forums de FCKeditor ?
Modifié par Heyoan (28 Jul 2008 - 15:20)
Heuuu!!! Smiley confused
1) Je l'avais pas pris comme ça mais effectivement... (doigt cousu!!!) Smiley sweatdrop
2) Bein euuu Smiley rolleyes j'embrouillerai plus personne c'est promis.
3) J'avais pas posé la question sous cet angle de vue mais à y réfléchir... c'est un peut vrai Smiley confused
4) Effectivement je viens de me découvrir une passion pour l'entraide sur ce magnifique et sympathique forum...
Pour ce qui est de la progression on verra Smiley cligne .

Solution: je reviens l'année prochaine quand je commencerais à toucher le php... Smiley cligne
A++
@ Heyoan : Les valeurs de la boucle seront utilisées après, je veux d'abord arriver à afficher au moins le formulaire lol.

Une fois cela fait, la valeur $ligne['contenu'] servira à remplir le champ texte de FCKeditor.

Pour la boucle je ne sais pas si c'est judicieux, mais je voulais que la variable $ligne['contenu'] affiche le contenu selon la page demandée.

Il y a peut-être, eu sûrement même, une autre solution plus appropriée...

Merci pour l'aide Smiley smile
Bonjour à tous!

J'ai retravaillé le code précédent qui donne ce code-ci.
<?php
include("../includes/config.php");
$page=$_GET['page'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Administration de la page <?php echo $page; ?></title>
</head>

<body>
<h1 align="center">Administration de la page <?php echo $page; ?></h1>
<?php
echo $page;
//Requête
$req=("SELECT * FROM page WHERE nom ='" . $page . "'");
$result=mysql_query($req) or die ('Erreur :'.mysql_error());

while($ligne=mysql_fetch_assoc($result))
{
$contenu=$ligne['contenu'];
//echo $contenu;
?>
<table border="1px solid black" align="center">
<form name="admin" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<tr><td>Corps :</td><td><textarea name="contenu" cols="30" rows="5"><?php echo $ligne['contenu']; ?></textarea></td></tr>
<tr><td><input type="submit" name="maj" value="Mettre à jour" /></td></tr>
</form>
</table>
<?php 
$_POST['contenu']=$contenu;
$contenuok=stripslashes($contenu);
$req=("UPDATE page SET contenu='". $contenu . "' WHERE page='". $page ."'") or die("Erreur mise à jour:" .mysql_error());

} ?>


J'ai une erreur lorsque je valide les modifications : la variable page utilisée dans la requête de mise à jour n'est pas connue (undefined variable page etc).

Comment faire pour que cela marche?

Merci d'avance Smiley smile