WYSIWYG de retour

Eléphant du PHP | 177 Messages

11 août 2006, 19:41

Salut tous
Voila je ramene le sujet suite au post de paul je crois qui cherchais a mettre conceptRTE en relation avec une BD.
Comme la chose me semblait interressante apres l'avoir fait avec des fichiers voici la version avec la BD.
Je viens vous solicité pour des conseils afin d'améliorer le code la logique...
voir meme toute sugestion qui permetterait d'améliorer la chose, un regard exterieure est souvent utile :).
voici le lien pour tester la bidouille http://aelurus.free.fr/bricole/wysiwyg/ ... onceptRTE/

et voici le code de l'index
<?php
$textepardefault="<h1>PowaAaAAaAa</h1>Bon ba il reste encore pas mal de trucs à faire...<br>Comment ça marche :)<br>Pour faire un nouveau document il suffit de mettre un titre et de mettre le texte voulu puis d'enregistrer.<br>Amélioration souhaitée:
<li>Remettre le popup lors de l'enregistrement</li>
<li>Permettre l'affichage du code</li>
<li>Probleme de hearder qui n'apparait pas en interne ???</li>"; 
$PHP_SELF=$_SERVER["PHP_SELF"];
$language = 'FR';
if (isset($_POST["action"])){$action = $_POST["action"];}else{$action = '';}
if (!isset($_POST["auteur"])){$auteur = 'Invité';}else{$auteur = htmlentities($_POST["auteur"]);}
if (isset($_POST["conceptRTEvalue"])){$texte= $_POST['rte'];}else{ $titre ="Nouvel article";$texte=$textepardefault; }
if (isset($_POST["supprimer"]))
	{
		$id_article = $_POST['titre1'];
		include_once'config.php';
		$sql = "DELETE FROM article WHERE id_article=$id_article";
		$resultat= mysql_query($sql) or die ("Impossible de se connecter : ".mysql_error());
		header("Location: http://aelurus.free.fr/bricole/wysiwyg/WYSIWYG+BD/conceptRTE/");
		exit;
	}
if (!isset($_POST["titre1"])){ $titre = htmlentities($titre); }
if (isset($_POST["titre"])){ $titre = htmlentities($_POST["titre"]); }
if (isset($_POST["Ouvrir"]) && $_POST["Ouvrir"]!="" )
	{$titre = htmlentities($_POST["titre1"]);

  }
echo "<html>";
echo "<head>";
echo "<title>Petite administration d'article stocker dans une base de donées</title>";
echo "<script language='JavaScript' type='text/javascript' src='conceptRTE.js'></script>";
echo "<link rel='STYLESHEET' type='text/css' href='style.css'>";
echo "</head>";
echo "<body>";

//============================================================================//
// ConceptRTE's description                                                   //
//============================================================================//

echo "<div class=row>&nbsp;</div>";
echo "<div class=rowTitle>Petit WYSIWYG lié à une base de données</div>";
echo "<div class=row>&nbsp;</div>";

//============================================================================//
// Selection de l'action                                                      //
//============================================================================//
echo "<form name='demo' action='' method='post'>";
echo "<p>Auteur - <INPUT class=texte  name='auteur' value='$auteur'></p>";
echo "Selectionner un document existant pour modification suppression :
	<select name='titre1' size='1' >";
		echo "<OPTION>";
		include_once 'config.php';
		$sql= 'SELECT id_article, titre FROM article ORDER BY date_pub DESC';
		$resultat= mysql_query($sql) ;
		while ($row = mysql_fetch_assoc($resultat))
		{
			$id_article = $row['id_article'];
			$titre1 = $row['titre'];
			echo "<option  value=$id_article >".$titre1."</option>";
        }
echo '</select>';

echo "  - <INPUT class=button type=submit name='Ouvrir' VALUE=' Ouvrir '>";
echo "  - <INPUT class=button type=submit name='supprimer' 
		VALUE=' Supprimer '> -<br></br>";

//============================================================================//
// ConceptRTE ouverture et recuperation des info dans la base de données	  //
//============================================================================//
if (isset($_POST["Ouvrir"])&& $_POST["Ouvrir"]!="")
	{
		include_once'config.php';
		$sql = "SELECT * FROM `article` WHERE `id_article`= '$titre'";
		$resultat= mysql_query($sql);
		while ($row = mysql_fetch_assoc($resultat))
		{
			$id_article = $row['id_article'] ;
			$titre = $row['titre'] ;
			$auteur = $row['auteur'] ;
			$date_pub = $row['date_pub'] ;
			$texte= nl2br($row['texte']);
			$conceptRTEvalue = $texte;
			$jour=substr($date_pub, 8, 2);
			$mois=substr($date_pub, 5, 2);
			$annee=substr($date_pub, 0, 4);
			$date=$jour.'/'.$mois.'/'.$annee;
		}
		echo "<input type=hidden name='id' value=$id_article>";
		echo "<br>l'auteur est <b> ".$auteur."</b><br> et la date de publication est 
		: ".$date."<br><br>";
	}
echo "Titre du document : <input type='textarea' name='titre' value='$titre'>
	<br /><br />";
echo "<div class=row>";
echo "<span class=rteColumn>";
echo "<script language='JavaScript' type='text/javascript'>";

$content = RTESafe($texte);

//============================================================================//
// Usage: initRTE(imagesPath, includesPath, cssFile, language)                //
//============================================================================//
echo "initRTE('images/', '', 'style.css', '$language');";


//============================================================================//
// Usage: writeRichText(fieldname, html, width, height, buttons)              //
//============================================================================//
echo "writeRichText('rte', '$content', 520, 200, true, false);";
echo "</script>";
echo "</span>";
echo "</div>";
echo "<div class=row>&nbsp;</div>";
echo "<div class=row>";
echo "<span class=label>Cliquez sur <u>Enregistrer</u> pour 'voir' et enregistrer le nouveau document cree ou sur modifier pour mettre a jour le document selectionne:</span>";
echo "<span class=field>-<input class=button type=button value='Enregistrer' onClick=\"updateRTE('rte');demo.action.value='show';demo.conceptRTEvalue.value = demo.rte.value;this.form.submit();\"> </span>";
echo "  - <INPUT class=button type=submit name='Modifier' VALUE='Modifier'
		onClick=\"updateRTE('rte');demo.conceptRTEvalue.value = demo.rte.value;this.form.submit();\">";
echo "</div>";
echo "<input type=hidden name='action'>";
echo "<input type=hidden name='conceptRTEvalue'>";

echo "</form>";

echo "</body>";
echo "</html>";

//============================================================================//
// Affichage du resultat, enregistrer, dans un pop up   //
//============================================================================//

if ($action == 'show') 
	{
		$conceptRTEvalue = str_replace(chr(92).chr(34),chr(34),$texte);
		include_once'config.php';
		$auteur=mysql_real_escape_string($auteur);
		$titre=mysql_real_escape_string($_POST['titre']);
		$texte=mysql_real_escape_string($conceptRTEvalue);
		$sql="INSERT INTO article VALUES ('','$titre' ,'$auteur' , now(), '$texte')";
		$resultat= mysql_query($sql);
		echo "<script>";
		echo "parameter = 'toolbar=no,menubar=no,
		location=no,resizable=no,status=no,scrollbars=yes,height=400,
		width=800,left=150,top=150';";
		//echo "OpenWin = this.open('$conceptRTEvalue', 'conceptRTEpopUp', parameter);";
		echo "</script>";
		header("Location: http://aelurus.free.fr/bricole/wysiwyg/WYSIWYG+BD/conceptRTE");
		exit;
	}
if (isset($_POST['Modifier']))
	{
		$rte=$_POST['rte'];
		$id=$_POST['id'];
		$conceptRTEvalue = str_replace(chr(92).chr(34),chr(34),$rte);
		include_once'config.php';
		$auteur=mysql_real_escape_string($auteur);
		$titre=mysql_real_escape_string($_POST['titre']);
		$texte=mysql_real_escape_string($conceptRTEvalue);
		$sql="UPDATE article SET  auteur='$auteur', texte='$texte' WHERE id_article='$id'";
		$resultat= mysql_query($sql);
		header("Location: http://aelurus.free.fr/bricole/wysiwyg/WYSIWYG+BD/conceptRTE/");
		exit;
    }


//============================================================================//
// providing safe data for ConceptRTE                                         //
//============================================================================//

function RTESafe($strText) {
	$tmpString = trim($strText);
   if ($tmpString == "") 
	{
      $tmpString = "<P class=MsoNormal style=\"MARGIN: 0cm 0cm 0pt\"></P>";
    }

	//convert all types of single quotes
	$tmpString = str_replace(chr(145), chr(39), $tmpString);
	$tmpString = str_replace(chr(146), chr(39), $tmpString);
	$tmpString = str_replace("'", "'", $tmpString);

	//convert all types of double quotes
	$tmpString = str_replace(chr(147), chr(34), $tmpString);
	$tmpString = str_replace(chr(148), chr(34), $tmpString);

	//replace carriage returns & line feeds
	$tmpString = str_replace(chr(10), " ", $tmpString);
	$tmpString = str_replace(chr(13), " ", $tmpString);

	return $tmpString;
}
echo "</form>";
?>
Bon soyez indulgents car je pense avoir pas mal massacré le code de base un grand merci d'avance.
PS : il y a aussi deux trois soucis liée au JS ne voulant pas faire de multipost je laisse le tout ici enfin voila :)