Bonjour à tous !
Je suis en ce moment sur le développement de mon site (actuellement en ligne) et je voudrais gérer de façon simple les Messages Privés. Je me suis donc tourné vers JS et, jusque là, tout marchait (à peu près ) bien. Seul problème (détecté ? ), je passe en paramètre de ma fonction JS le message et, si celui-ci contient un retour à la ligne, le script ne fait rien. Je dépose ici les codes concernés :
bt_recept.php :
<?php
session_start();
include("interdiction.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "fr">
<head>
<title>EAgLe : votre agenda en ligne</title>
<meta http-equiv = "Content-Type" content = "text/html; charset = iso-8859-1" />
<link rel = "stylesheet" media = "screen" title = "Design de l'index" href = "Designs/des_actions_evenements.css" />
<link rel = "shortcut icon" type = "image/x-icon" href = "favicon.ico" />
<!-- [if IE] -->
<style type = "text/css">
p
{
font-family: Arial, serif;
font-size: 16px;
}
</style>
<!-- [endif] -->
</head>
<body>
<script type = "text/javascript" src = "afficher_message.js"></script>
<?php
$jour_cal = htmlspecialchars($_GET['jour_cal']);
$mois_cal = htmlspecialchars($_GET['mois_cal']);
$annee_cal = htmlspecialchars($_GET['annee_cal']);
$lien_accueil = 'index.php';
$page_accueil = 'page d\'accueil';
$lien_bt_rcpt = 'bt_rcpt.php?jour_cal=' . $jour_cal . '&mois_cal=' . $mois_cal . '&annee_cal=' . $annee_cal;
$page_bt_rcpt = 'boîte de réception';
$delai_rechargement = 3;
if (isset($_SESSION['membres_pseudo_connexion']))
{
mysql_connect("mysql.*.fr", "*", "*");
mysql_select_db("*");
$repreq1 = mysql_query("SELECT * FROM mp WHERE mp_destinataire = '" . $_SESSION['membres_pseudo_connexion'] . "' ORDER BY mp_id DESC") or die(mysql_error());
$repreq2 = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM mp WHERE mp_destinataire = '" . $_SESSION['membres_pseudo_connexion'] . "'") or die(mysql_error());
$donreq2 = mysql_fetch_array($repreq2);
$fichier = fopen('Boite/boite_' . $_SESSION['membres_pseudo_connexion'] . '.tmp', 'r+');
fseek($fichier, 0);
fputs($fichier, $donreq2['nbre_entrees']);
fclose($fichier);
if (isset($_POST['supprimer']))
{
while ($donreq1 = mysql_fetch_array($repreq1))
{
if ($_POST['message_' . $donreq1['mp_id']] != NULL)
{
echo '<p class = "centre"><img src = "Designs/ok.jpg" alt = "Correct : " />Le message "' . $donreq1['mp_sujet'] . '" a été supprimé.';
echo '<br />Aller à la <a href = "' . $lien_bt_rcpt . '">' . $page_bt_rcpt . '</a>.<hr /></p>';
mysql_query("DELETE FROM mp WHERE mp_id = '" . $donreq1['mp_id'] . "'") or die(mysql_error());
}
}
}
else
{
if ($donreq2['nbre_entrees'] != 0)
{
echo '<table><tr><th></th><th>De</th><th>Sujet</th></tr>';
while ($donreq1 = mysql_fetch_array($repreq1))
{
$repreq3 = mysql_query("SELECT mp_message FROM mp WHERE mp_sujet = '" . $donreq1['mp_sujet'] . "'") or die(mysql_error());
$donreq3 = mysql_fetch_array($repreq3);
$donreq3['mp_message'] = nl2br($donreq3['mp_message']);
echo '<tr><td><form method = "post"><input type = "checkbox" name = "message_' . $donreq1['mp_id'] . '" id = "message_' . $donreq1['mp_id'] . '" /><label for = "message_' . $donreq1['mp_id'] . '"></td>';
echo '<td>' . $donreq1['mp_emetteur'] . '</td>';
echo '<td id = "messagecache"><a href = "#" onclick = "javascript:afficher(\'' . $donreq1['mp_sujet'] . '\', \'' . $donreq3['mp_message'] . '\', \'' . $donreq1['mp_id'] . '\');"><span id = "changer' . $donreq1['mp_id'] . '">Ouvrir : </span><strong>' . $donreq1['mp_sujet'] . '</strong></a><p style = "display:none;" id = "affichage' . $donreq1['mp_id'] . '"></p></td></label></tr>';
}
}
if ($donreq2['nbre_entrees'] != 0)
{
echo '</table><p class = "centre"><input type = "submit" value = "Supprimer" name = "supprimer" /></p></form>';
}
else
{
echo '<p class = "centre"><img src = "Designs/nok.jpg" alt = "Incorrect : " />Vous n\'avez pas de message.</p>';
}
echo '<p class = "centre"><a href = "accueil.php?jour=' . $jour_cal . '&mois=' . $mois_cal . '&annee=' . $annee_cal . '">Retour au calendrier</a></p>';
}
mysql_close();
}
else
{
echo '<p class = "centre"><img src = "Designs/nok.jpg" alt = "Incorrect : " />N\'essayez pas de tricher...';
echo '<br />Aller à la <a href = "' . $lien_accueil . '">' . $page_accueil . '</a>.</p>';
}
?>
<p id = "piedpage">Cette page est valide <a href = "http://validator.w3.org/check?uri=referer">XHTML 1.0 Strict</a> et CSS 2.1.<br /> Le site EAgLe est hébergé gratuitement par <a href = "http://www.*.fr/">*</a>.</p>
</body>
</html>
C'est bizarre, quand je regarde la source générée par FF, j'ai l'impression que le HTML est généré dans la fonction.
Pour le code, j'ai oublié de fermer une balise <p> (erreur de copie) mais ça ne change rien à mon problème.
Ah en fait le truc, c'est que quand tu mets les <br /> avec PHP, il effectue un passage à la ligne, et ça ne plaît pas trop à JS qui considère la chaîne du message incomplète.
La solution apparemment pourrait être de mettre :
<br />
Normalement ça marche.
Par contre, j'ai aussi remarqué que tes <label> sont mal placés. Faudrait que tu revoies ça (ça n'a rien à voir avec ton problème actuel hein).
Oui, mais si je passe le message à htmlspecialchars() avnt de l'envoyer à ma fonction, comment mon texte est-il interprété après passage à ma fonction afficher() ?
Pour les <label>, j'ai fait ça un peu à l'arrache hier soir...
Pour les messages suivants, je ne serai pas là dans l'après-midi, donc je répondrai ce soir.
Non : tes \n servent a rien et ne sont pas pris en compte à l'affichage. vires les.
Oui : dommage. essaie de les remplacer par '\n' la chaine de caractère.
<br /> c'est pour un retour à la ligne à l'affichage
\n c'est pour un retour à la ligne dans le code source(et dans les textarea et autres champs texte)
essaie. Le parseur html de ton navigateur remplace n'impore quelle suite d'espace, tabulation, saut de ligne par un seul et unique espace, en dehors d'un élement <pre> (et d'une ruse de sioux en CSS qui marche pas sur IE6)
Bonjour,
Je me permets de poster un nouveau message pour clore le sujet. En effet, je me suis accordé un petit temps de réflexion pendant les cours ennuyeux (ça m'a laissé pas mal de temps pour cogiter autrement dit ) et ai enfin trouvé une solution alternative. Pour ceux qui seraient dans un cas similaire au mien, je donne mon nouveau code (vous allez voir, c'était tout bête, mais il fallait que je me donne le temps de le trouver ).
bt_recept.php :
<?php
session_start();
include("interdiction.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "fr">
<head>
<title>EAgLe : votre agenda en ligne</title>
<meta http-equiv = "Content-Type" content = "text/html; charset = iso-8859-1" />
<link rel = "stylesheet" media = "screen" title = "Design de l'index" href = "Designs/des_actions_evenements.css" />
<link rel = "shortcut icon" type = "image/x-icon" href = "favicon.ico" />
<!-- [if IE] -->
<style type = "text/css">
p
{
font-family: Arial, serif;
font-size: 16px;
}
</style>
<!-- [endif] -->
</head>
<body>
<script type = "text/javascript" src = "afficher_message.js"></script>
<?php
$jour_cal = htmlspecialchars($_GET['jour_cal']);
$mois_cal = htmlspecialchars($_GET['mois_cal']);
$annee_cal = htmlspecialchars($_GET['annee_cal']);
$lien_accueil = 'index.php';
$page_accueil = 'page d\'accueil';
$lien_bt_rcpt = 'bt_rcpt.php?jour_cal=' . $jour_cal . '&mois_cal=' . $mois_cal . '&annee_cal=' . $annee_cal;
$page_bt_rcpt = 'boîte de réception';
$delai_rechargement = 3;
if (isset($_SESSION['membres_pseudo_connexion']))
{
mysql_connect("*", "*", "*");
mysql_select_db("*");
$repreq1 = mysql_query("SELECT * FROM mp WHERE mp_destinataire = '" . $_SESSION['membres_pseudo_connexion'] . "' ORDER BY mp_id DESC") or die(mysql_error());
$repreq2 = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM mp WHERE mp_destinataire = '" . $_SESSION['membres_pseudo_connexion'] . "'") or die(mysql_error());
$donreq2 = mysql_fetch_array($repreq2);
$fichier = fopen('Boite/boite_' . $_SESSION['membres_pseudo_connexion'] . '.tmp', 'r+');
fseek($fichier, 0);
fputs($fichier, $donreq2['nbre_entrees']);
fclose($fichier);
if (isset($_POST['supprimer']))
{
while ($donreq1 = mysql_fetch_array($repreq1))
{
if ($_POST['message_' . $donreq1['mp_id']] != NULL)
{
echo '<p class = "centre"><img src = "Designs/ok.jpg" alt = "Correct : " />Le message "' . stripslashes($donreq1['mp_sujet']) . '" a été supprimé.';
echo '<br />Aller à la <a href = "' . $lien_bt_rcpt . '">' . $page_bt_rcpt . '</a>.<hr /></p>';
mysql_query("DELETE FROM mp WHERE mp_id = '" . $donreq1['mp_id'] . "'") or die(mysql_error());
}
}
}
else
{
if ($donreq2['nbre_entrees'] != 0)
{
echo '<form method = "post">';
echo '<table><tr><th></th><th>De</th><th>Sujet</th><th>Date</th></tr>';
while ($donreq1 = mysql_fetch_array($repreq1))
{
$repreq3 = mysql_query("SELECT mp_message FROM mp WHERE mp_id = '" . $donreq1['mp_id'] . "'") or die(mysql_error());
$donreq3 = mysql_fetch_array($repreq3);
echo '<tr><td><form method = "post"><input type = "checkbox" name = "message_' . $donreq1['mp_id'] . '" id = "message_' . $donreq1['mp_id'] . '" /></td>';
echo '<td>' . $donreq1['mp_emetteur'] . '</td>';
echo '<td id = "messagecache"><a href = "#" onclick = "javascript:afficher(\'' . $donreq1['mp_id'] . '\');"><span id = "changer' . $donreq1['mp_id'] . '">Ouvrir : </span><strong>' . stripslashes($donreq1['mp_sujet']) . '</strong></a><p style = "display:none;" id = "affichage' . $donreq1['mp_id'] . '">' . nl2br(stripslashes($donreq3['mp_message'])) . '</p></td>';
$donreq1['mp_date'] = preg_replace("#^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$#", "le $3/$2/$1 à $4:$5:$6", $donreq1['mp_date']);
echo '<td>Envoyé ' . $donreq1['mp_date'] . '</td></tr>';
}
}
if ($donreq2['nbre_entrees'] != 0)
{
echo '</table><p class = "centre"><input type = "submit" value = "Supprimer" name = "supprimer" /></p></form>';
}
else
{
echo '<p class = "centre"><img src = "Designs/nok.jpg" alt = "Incorrect : " />Vous n\'avez pas de message.</p>';
}
echo '<p class = "centre"><a href = "accueil.php?jour=' . $jour_cal . '&mois=' . $mois_cal . '&annee=' . $annee_cal . '">Retour au calendrier</a>';
}
mysql_close();
}
else
{
echo '<p class = "centre"><img src = "Designs/nok.jpg" alt = "Incorrect : " />N\'essayez pas de tricher...';
echo '<br />Aller à la <a href = "' . $lien_accueil . '">' . $page_accueil . '</a>.</p>';
}
?>
<p id = "piedpage">Cette page est valide <a href = "http://validator.w3.org/check?uri=referer">XHTML 1.0 Strict</a> et CSS 2.1.<br /> Le site EAgLe est hébergé gratuitement par <a href = "*">*</a>.</p>
</body>
</html>
Pour faire simple, les changements consistent à passer en paramètre l'ID du message, puis afficher le message caché par "display:none;" par l'intermédiaire de JS. Simplissime, non ?
Sur ce, je souhaite une bonne soirée à tous et remercie chaleureusement tous ceux qui ont passé du temps à essayer de m'aider à résoudre mon problème.
Passer un message contenant un <br />
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
mais ça ne marche pas. Je ne sais plus quoi faire...