|
 Posté le 01/05/2011 @ 18:46 |
Petit astucien
| Salut,
Bon je me prend la tête la dessus depuis trois plombes alors je viens vous demander. J'ai une erreur dans mon JS parce-qu'il y a des retours à la ligne dans la $contenu que je souhait afficher. J'ai tester de multiples solutions rien ne marche. Je vous précise que je suis sous linux puisque apprement c'est différent pour les \n ou \r. Voici le dernier code que j'ai tenté :
value ="<?php echo "$contenu"; $contenu = str_replace("\r",'',$contenu); // pas de retour chariot $contenu = str_replace("\n",'\n',$contenu); // on transforme le caractère retour de ligne en \n $contenu = str_replace("'","\'",$contenu); // puis faut pas oublier les apostrophes echo "alert('$contenu')"; ?>";
Merci d'avance pour vos réponses!!
|
|
|
|
|
|
Posté le 02/05/2011 à 10:16 |
Maître astucien | 
Puisque personne ne répond...
D'abord par du JS, mais du PHP.
As-tu tenté avec un tout bête <br> en fonction str_replace ?
@+ |
|
Posté le 02/05/2011 à 12:29 |
Petit astucien
| OUi j'ai tenté <br> sans résultat. Ce que j'ai mis marche maintenant ça plantait a cause d'un nl2br qui venait en rajouter après que je les ai enlevé!
Cependant j'ai un nouveau soucis. Une nouvelle erreur dans firebug "missing ; before statement". J'ai cherché sur internet et apparement c'est assez générale comme probleme!
Donc je vous envoie deux contenus de news. Un qui passe un qui fait planter le javascript.
celui qui passe:
value ="<p>tttt \' ttttt</p>\n<p>ttt</p>\n<p> </p>\n<p>tttt</p>";
Celui qui passe pas :
value ="Les préventes pour la soirée du Gala commencent aujourd\'hui (3 février) et auront lieu les mardi et mercredi de 9h45 à 16h.\nLes places pour la soirée seront mises en vente plus tard.\nRetrouvez toutes les informations complémentaires dans la rubrique Evènements -> <a href="index.php?rubrique=gala">Gala</a>";
Voilà si vous avez une idée de ce qui peut faire planter le script et de ce que je dois remplacer du coup ...
|
|
Posté le 02/05/2011 à 14:21 |
Astucien
| Bonjour
Edit :
value ="Les préventes pour la soirée du Gala commencent aujourd\'hui (3 février) et auront lieu les mardi et mercredi de 9h45 à 16h.\nLes places pour la soirée seront mises en vente plus tard.\nRetrouvez toutes les informations complémentaires dans la rubrique Evènements -> rubrique=gala">Gala";
J'y connais pas assez mais ne serait-ce pas parce que tu as oublié rubrique="gala" et <a href="..xxxxxphp"
  
Modifié par eliot3 le 02/05/2011 14:25 |
|
Posté le 02/05/2011 à 15:01 |
Petit astucien
| euh... J'ai pas tout capté les guillemets sont bons il me semble. |
|
Posté le 02/05/2011 à 15:07 |
Astucien
| |
|
Posté le 02/05/2011 à 15:26 |
Maître astucien | Si tu avais une page à nous montrer...
C'est Plus démonstratif.
@+ |
|
Posté le 02/05/2011 à 15:27 |
Petit astucien
| Je ne pense pas qu'il y est besoin de guillemets pour "gala", et je ne pense pas non plus que les guillements puissent faire planter le javascript de toute façon! |
|
Posté le 02/05/2011 à 15:28 |
Petit astucien
| |
|
Posté le 02/05/2011 à 15:34 |
Petit astucien
| Le voici ci ça peut vous aider.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> <head> <title>TinyMCE Test</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<!-- OF COURSE YOU NEED TO ADAPT NEXT LINE TO YOUR tiny_mce.js PATH --> <script type="text/javascript" src="tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript"> tinyMCE.init({ mode : "textareas", theme : "advanced", // le thème choisi pour l'éditeur, laissez advanced si vous voulez avoir tous les choix de plugins etc.... plugins : "advimage,fullscreen,preview,emotions,insertdatetime,save", //les plugins que vous allez utiliser //les barres de boutons de 1 à 3 theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,|,sub,sup,charmap,|,undo,redo,|,outdent,indent,|,link,unlink,save,|,insertdate", theme_advanced_buttons2 : "forecolor,backcolor,|,fontsizeselect,fontselect,formatselect,|,image,emotions,|,cleanup,removeformat,|,fullscreen,preview", theme_advanced_buttons3 : "", // theme_advanced_toolbar_location : "top", //où se place la toolbar, theme_advanced_toolbar_align : "center", //l'alignement de celle ci theme_advanced_statusbar_location : "bottom", //Où se positionnera la barre de statut content_css : "../templates/TinyMCE.css", //lien vers le css utilisé plugin_insertdate_dateFormat : "%d/%m/%Y", // le format de la date pour le plugin insertdatetime plugin_insertdate_timeFormat : "%H:%M:%S", //pareil sauf que c'est le format de l'heure //les attributs autorisé pour les balises citées. Exemple, la balise hr n'acceptera que les attributs class, widht, size et noshade extended_valid_elements : "hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style],a[href|name]", // theme_advanced_resize_horizontal : true, //redimensionnement horizontal (oui ou non). theme_advanced_resizing : true //redimensionnement vertical (oui ou non) }); </script> </head> </html> <?php if ($_SESSION['connect'] <=1) // on teste si l'utilisateur est modérateur ou admin, pour qu'il puisse accéder à la partie admin { echo '<h2>Vous n\'êtes pas autorisés à accéder à cette page.<br/><br/><br/> <a href="../index.php">Retour au site</a>'; } else { ?>
<script type="text/javascript"> <!-- function confirmation(id,date) { var answer = confirm("Supprimer la news "+id+" du "+date+" ? Cette action est irreversible.") if (answer){ window.location = "admin.php?rubrique=admin_news&supprimer_news="+id; } else{ } } //--> </script>
<?php // création du flux RSS include('../flux_rss_news.php'); rebuild_rss();
// ---------- script de création/modification de news --------------- if ($_POST['titre'] != "" AND $_POST['contenu'] != "" AND $_POST['pseudo'] != "") // on vérifie si les formulaires ont été remplis {
$nouveau_titre = addslashes($_POST['titre']); // on ajoute les caracteres d'échappement $nouveau_contenu = addslashes($_POST['contenu']); $nouveau_pseudo = addslashes($_POST['pseudo']); mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo if ($_POST['id'] == 0) //si l'id = 0, c'est à dire si ce n'était pas une news en modification (donc nouvelle) { $timestamp = time(); //on prend l'heure et la date mysql_query("INSERT INTO news_site VALUES('', '$nouveau_titre', '$nouveau_contenu', '$timestamp', '$timestamp', '$nouveau_pseudo' ,'oui', '', '')"); //on crée une nouvelle entrée dans la bdd } else //sinon, si c'est une news à modifier { $id_a_modifier = $_POST['id']; mysql_query('UPDATE news_site SET titre="' . $nouveau_titre . '", contenu="' . $nouveau_contenu . '", timestamp_modification="'.$_POST['timestamp_modification'].'", pseudo="'. $nouveau_pseudo .'" WHERE id="'.$id_a_modifier.'"'); //ben... on la modifie pardi ! } mysql_close(); } // fin du premier if
// ------------------- script d'ajout d'image_news ----------------- // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($_FILES['image_news']) AND $_FILES['image_news']['error'] == 0) { // Testons si le fichier n'est pas trop gros if ($_FILES['image_news']['size'] <= 1000000) { // Testons si l'extension est autorisée $infosfichier = pathinfo($_FILES['image_news']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // testons si la taille de l'image est autorisée $maxwidth = 1024; $maxheight = 2000; $image_sizes = getimagesize($_FILES['image_news']['tmp_name']); if ($image_sizes[0] <= $maxwidth AND $imagesizes[1] <= $maxheight) { // On peut valider le fichier et le stocker définitivement move_uploaded_file($_FILES['image_news']['tmp_name'], '../images/image_news/' .$donnees_proposer_news['id'].'.'.$extension_upload); mysql_query('UPDATE news_site SET extension="'.$extension_upload.'" WHERE id="'.$donnees_proposer_news['id'].'"');// on stocke l'extension dans la bdd echo "<center><strong>L'envoi a bien été effectué !</strong></center><br/>"; } else { echo 'Image trop grande'; } } } }
// ------------------- script de validation de news -------------------- if (isset($_GET['valider_news'])) { $id_a_valider = $_GET['valider_news']; mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo mysql_query('UPDATE news_site SET valide="oui" WHERE id="'.$id_a_valider.'"'); //on valide la news qu'il faut mysql_close(); } //fin du if isset
// ------------------- script d'invalidation de news -------------------- if (isset($_GET['invalider_news'])) { $id_a_valider = $_GET['invalider_news']; mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo mysql_query('UPDATE news_site SET valide="non" WHERE id="'.$id_a_valider.'"'); //on invalide la news qu'il faut mysql_close(); } //fin du if isset
// ------------------- script de suppression de news -------------------- if (isset($_GET['supprimer_news'])) { $id_a_supprimer = $_GET['supprimer_news']; mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo mysql_query("DELETE FROM news_site WHERE id='$id_a_supprimer'"); //on supprime la news qu'il faut mysql_close(); } //fin du if isset
// ------------------- script de suppression de commentaires -------------------- if (isset($_GET['supprimer_commentaire'])) { $id_a_supprimer = $_GET['supprimer_commentaire']; mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo mysql_query("DELETE FROM commentaires_news WHERE id='$id_a_supprimer'"); //on supprime le commentaire qu'il faut mysql_close(); } //fin du if isset
// ------------------- script d'acceptation de commentaires -------------------- if (isset($_GET['accepter_commentaire'])) { $id_a_valider = $_GET['accepter_commentaire']; mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo mysql_query('UPDATE commentaires_news SET modere="oui" WHERE id="'.$id_a_valider.'"'); //on valide la news qu'il faut mysql_close(); } //fin du if isset
// ------------------- script de refus de commentaire -------------------- if (isset($_GET['refuser_commentaire'])) { $id_a_valider = $_GET['refuser_commentaire']; mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo mysql_query('UPDATE commentaires_news SET modere="non" WHERE id="'.$id_a_valider.'"'); //on invalide la news qu'il faut mysql_close(); } //fin du if isset
// ------------------- affichage des news -----------------------// mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo
$reponse = mysql_query("SELECT * FROM news_site ORDER BY id DESC"); // On se déconnecte de MySQL mysql_close(); ?> <h1>Les news</h1> <center><table border="4px ridge"> <tr> <th>Pseudo</th> <th>Titre</th> <th>Date</th> <th>Dernière Modification</th> <th>Modifier</th> <th>Supprimer</th> <th>Valide</th> <th>Valider</th> <th>Commentaires</th> <th>Image</th> </tr> <?php mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo while ($donnees = mysql_fetch_array($reponse)) //on affiche dans un tableau les données et les liens vers les utilitaires { $date_et_heure = date("d/m/Y \a H\hi", $donnees['timestamp']);
echo '<tr> <td>'.$donnees['pseudo'] . '</td> <td><a href="admin.php?rubrique=admin_news&voir_news='.$donnees['id'].'">'.$donnees['titre'] . '</a></td> <td>'. $date_et_heure . '</td>';
if ($donnees['timestamp_modification'] != 0) { $date_modification = date("d/m/Y", $donnees['timestamp_modification']); $heure_modification = date("H\hi", $donnees['timestamp_modification']); echo '<td>'.$date_modification . ' à ' . $heure_modification . '</td>'; } // fin du if timestamp modif else { echo '<td> </td>'; }
echo '<td>'. '<a href="admin.php?rubrique=admin_news&modifier_news='.$donnees['id'] . '">Modifier</a></td> <td>';?> <a href="javascript:confirmation(<? echo $donnees['id'].",'{$date_et_heure}'"; ?>)">Supprimer</a></td> <?php if ($donnees['valide'] == "oui") { echo '<td>Oui</td> <td><a href="admin.php?rubrique=admin_news&invalider_news='.$donnees['id'].'">Invalider</a></td>'; } else { echo '<td>Non</td> <td><a href="admin.php?rubrique=admin_news&valider_news='.$donnees['id'].'">Valider</a></td>'; } $nbre_commentaires_a_moderer = mysql_fetch_array(mysql_query('SELECT COUNT(*) AS nbre_entrees FROM commentaires_news WHERE id_news='.$donnees['id'].' AND modere="non"')); echo '<td><a href="admin.php?rubrique=admin_news&commentaires_news='.$donnees['id'].'">Modérer ('.$nbre_commentaires_a_moderer['nbre_entrees'].')</a></td>';
if ($donnees['extension'] != "") { echo '<td><a href="../images/image_news/'.$donnees['id'].'.'.$donnees['extension'].'">'.$donnees['id'].'.'.$donnees['extension'].'</a></td>'; } else { echo '<td>Aucune</td>'; } echo '</tr>';
} // fin du while de listage de tableau mysql_close(); ?>
</table></center>
<h2><a href="admin.php?rubrique=admin_news&modifier_news=oui">Ajouter une News</a></h2> <h2><a href="../index.php?rubrique=news">Page de news sur le site</a></h2> <h2><a href="admin.php">Retour à la page d'Administration</a></h2> <h2><a href="../index.php">Retour à l'accueil</a></h2>
<?php // ---------------------- affichage du contenu des news ------------------------------- if (isset($_GET['voir_news'])) { mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo $reponse = mysql_query('SELECT * FROM news_site WHERE id="'.$_GET['voir_news'].'"'); mysql_close(); while ($donnees = mysql_fetch_array($reponse)) { $date = date('d/m/Y', $donnees['timestamp']); echo '<center><strong>'.stripslashes($donnees['titre']).'</strong><br/>par '.$donnees['pseudo'].' le '.$date; echo '<br/> '.stripslashes($donnees['contenu']); echo '<br/><img src="../images/image_news/'.$donnees['id'].'.'.$donnees['extension'].'"/>'; if ($donnees['timestamp_modification'] != 0) { $date_modification = date("d/m/Y", $donnees['timestamp_modification']); $heure_modification = date("H\hi", $donnees['timestamp_modification']); echo '<br/><em> (Dernière modification le '. $date_modification . ' à ' . $heure_modification . ')</em>'; }
echo '<br/></center>'; } // fin while }
// ---------------------- modification de news ------------------------------- if (isset($_GET['modifier_news'])) { $id = $_GET['modifier_news']; if (isset($id)) { mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo $reponse_rediger_news = mysql_query("SELECT * FROM news_site WHERE id='$id'"); $donnees_rediger_news = mysql_fetch_array($reponse_rediger_news); $titre = stripslashes($donnees_rediger_news['titre']); $contenu = stripslashes($donnees_rediger_news['contenu']); $pseudo_rediger_news = stripslashes($donnees_rediger_news['pseudo']); // On se déconnecte de MySQL mysql_close(); echo '<center><strong>Modification de la news numero '.$id.'</strong></center><br/>'; } else { $id = "0"; } ?> <form action="admin.php?rubrique=admin_news" method="post" enctype="multipart/form-data"> <label for="pseudo">Pseudo :</label><input type="text" name="pseudo" value="<?php echo $pseudo_rediger_news;?>"/><br/> <label for="message">Titre :</label><input type="text" name="titre" value="<?php echo $titre;?>"/><br/> <div align=center> <label for="contenu">Contenu :</label><br/><span id="content_placeholder"></span> <script language="javascript" type="text/javascript"> with (document.getElementById ("content_placeholder")) { with (appendChild (document.createElement ("TEXTAREA"))) { name = "contenu"; cols = 45; rows = 8; value ="<?php $contenu = str_replace("\r",'',$contenu); // pas de retour chariot $contenu = str_replace("\n",'\n',$contenu); // on transforme le caractère retour de ligne en \n $contenu = str_replace("'","\'",$contenu); // puis faut pas oublier les apostrophes
echo stripslashes("$contenu"); ?>"; } } </script> </div> <br/> <noscript> The editor requires scripting to be enabled. </noscript> <noscript>mce:3</noscript> <input type="hidden" name="id" value="<?php echo $id;?>" /> L'envoi d'une image est limité au fichiers jpg, png et gif, dont la taille n'excède pas 1024*1024 pixels et 1Mo.<br/> <input type="file" name="image_news"/><br /> <?php if ($id != 0) // on teste si c'est une modification { $timestamp_modification = time(); ?> <input type="hidden" name="timestamp_modification" value="<?php echo $timestamp_modification;?>" /> <?php } ?> <input type="submit" value="Envoyer" /> </form> <?php echo '<center><a href="../images/image_news/'.$donnees_rediger_news['id'].'.'.$donnees_rediger_news['extension'].'"><img src="../images/image_news/'.$donnees_rediger_news['id'].'.'.$donnees_rediger_news['extension'].'"/></a><center>'; }
// ---------------------------- affichage des commentaires ----------------------- if (isset($_GET['commentaires_news'])) { mysql_connect("localhost", $sql_login, $sql_pass); // Connexion à MySQL mysql_select_db("corpo"); // Sélection de la base corpo $reponse_commentaires = mysql_query('SELECT * FROM commentaires_news WHERE id_news='.$_GET['commentaires_news']); echo '<center><table border="4px ridge"><tr> <th>News id</th> <th>Pseudo</th> <th>Commentaire</th> <th>Heure et date</th> <th>Supprimer</th> <th>Modérer</th> </tr>'; while ($donnees_commentaires = mysql_fetch_array($reponse_commentaires)) { echo '<tr> <td>'. $donnees_commentaires['id_news'].'</td> <td>'. $donnees_commentaires['pseudo'].'</td> <td>'. $donnees_commentaires['commentaire'].'</td> <td>'.date("d/m/Y \a H\hi", $donnees_commentaires['timestamp']).'</td> <td><a href="admin.php?rubrique=admin_news&commentaires_news='.$_GET['commentaires_news'].'&supprimer_commentaire='.$donnees_commentaires['id'].'">Supprimer</a></td>'; if ($donnees_commentaires['modere'] == "non") { echo '<td><a href="admin.php?rubrique=admin_news&commentaires_news='.$_GET['commentaires_news'].'&accepter_commentaire='.$donnees_commentaires['id'].'">Accepter</a></td>'; } elseif ($donnees_commentaires['modere'] == "oui") { echo '<td><a href="admin.php?rubrique=admin_news&commentaires_news='.$_GET['commentaires_news'].'&refuser_commentaire='.$donnees_commentaires['id'].'">Refuser</a></td>'; } echo '</tr>'; } // fin du while listeur des commentaires mysql_close(); } // fin du if d'affichage des commentaires
} // fin de tests de numéro connect ?>
|
|
Posté le 02/05/2011 à 15:38 |
Maître astucien | niko973 a écrit :
Vous voulez le code?

Oui mais que le code qui plante, pas la mer toute entière 
Pas la peine de décourager d'avance des âmes charitables.
Cesi soit dit en passant, pourquoi tant de JS ? 
Pour les miniatures, mouiiiiiii, mais à part des vérifs de formulaires etc. |
|
Posté le 02/05/2011 à 15:52 |
Maître astucien | A première vue c'est un beau m , la balise de fin de page </html> est trop haute (au premier coup d'oeil).
Surtout qu'au dessous du code PHP, JS et HTML est présent...
Mais ce n'est peut-être pas le code d'une page entière ?
Si tonton passe par là, il va s'énerver, car tout est mélangé = les 3 langages ci-dessus 
@+ |
|
Posté le 02/05/2011 à 15:54 |
Petit astucien
| Le javascript ici sert de sécurité apparement. Pour évite que quelqu'un désactivant son javascript puisse bidouiller mon formulaire enfin ça sort d'un tuto hein :).
Le code qui plante (je pense) est la partie en gras. J'ai tout mis pour que si jamais c'était nécessaire vous puissez comprendre le contexte. Ce système de news est basé sur celui du tutoriel du site du zéro. L'incrustation de TinyMCE (ce qui plante) vien elle d'un autre site dont je ne rappel plus le nom. Quelque chose vous inspire-t'il ? |
|
Posté le 02/05/2011 à 15:56 |
Petit astucien
| Haha! J'espère qu'il ne s'énervera pas trop fort! Ce n'est pas moi qui est fait ce site (même si apparement il est imparfait je suis loin d'être capable de faire aussi bien). Cette page est une rubrique de admin.php. Donc je ne pense pas qu'on puisse dire que c'est une page entière. |
|
Posté le 02/05/2011 à 16:08 |
Maître astucien | Niko, oui mais pourquoi de est si haut ?
Surtout que bien plus bas existe un tableau en HTML 
Quelque chose vous inspire-t'il ?
Oui, j'en ai vu du code, mais là c'est un beau b 
En plus il n'y a aucune indentation, uen horreur pour un programmeur !
Presque impossible de d'y retrouver, par exemple dans les boucles et les conditions... 
Courage Niko  Modifié par Jean-Pierre le 02/05/2011 16:12 |
|
Posté le 02/05/2011 à 16:20 |
Petit astucien
| Oui bon ok le code est bordélique. Les indentation ont du disparaitre au copié/collé je les ai dans Kate.
Au final mon problème réside dans l'unique partie en gras. Sur les histoires de remplacements de \ / \n\r <br> et autres! |
|
Posté le 02/05/2011 à 16:35 |
Maître astucien | Je ne suis pas un spécialiste du PHP, loin de là, mais je sais que l'autre fois j'ai tourné en rond durant des heures, à cause de simples quotes devant être à la place de doubles quotes (ou le contraire) :
$contenu = str_replace("\r",'',$contenu); // pas de retour chariot $contenu = str_replace("\n",'\n',$contenu); // on transforme le caractère retour de ligne en \n $contenu = str_replace("'","\'",$contenu);
à tester... en changeant (j'ai rien changé hein)
|
|
Posté le 02/05/2011 à 16:39 |
Astucien
| |
|
|
|
|
|