Problèmes d'affichage de news

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problèmes d'affichage de news

Re: Problèmes d'affichage de news

par Fre3z69 » 19 janv. 2013, 22:00

Salutation, il y a pas mal à redire sur ton script, mais l'essentiel c'est qu'on peux t'aider ^^

Perso, je te conseillerais de reprendre entièrement ton script, d'affiner un peux les URL que tu envoie, et pourquoi n'utilise tu pas l'id que tu met en GET, et ensuite pour afficher la news tu refait un requête, et tu l'affiche tout simplement?

Si ça peux t'aider, j'avais fait un script de news qui utilise ajax, regarde si ça ne t'aiderais pas plus.
J'utilise PDO pour les requête SQL mais le fonctionnement est similaire, et de plus ça t'affiche la news directement sur la page où tu liste les news.

[Edit ...]

Voici un petite correction sommaire, afin de te mettre sur la voie (bien que ça règle ton soucis au passage ^^)
Je renommer les champs des tables, vu que j'ai utiliser ma table de news pour les test, oublie pas de les modifier.

Pour appeler la page d'affichage de la news complète (ici article.php):
<span class="suite"><a href="article.php?id=<?php echo $id; ?>">Lire la suite</a></span>
Dans ta page article.php
<?php
mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");

$retour = mysql_query('SELECT * FROM t_news  WHERE news_id="'.$_GET['id'].'"') or exit(mysql_error());
$donnees = mysql_fetch_array($retour);
  $id = $donnees['news_id'];
  $titre = $donnees['news_title'];
  $date = $donnees['news_date'];
  $contenu = $donnees['news_content'];
  $img = $donnees['news_icon'];
?>
                        <div class="news">
<?php echo $id; ?>
<h3>

                <span class="titre_news"><?php echo $titre; ?></span>
                <span class="petit"><em>le <?php $date = explode('-',$date); echo $date[2],'/',$date[1],'/',$date[0];
                ?></em></span>
</h3>
       
<p>
        <table>
                <tr>
                        <td id="image"><img src="<?php echo $img; ?>" height="175" /></td>
                        <td id="texte"><?php
                        $contenu = stripslashes($contenu);
                        $contenu = htmlspecialchars($contenu, ENT_NOQUOTES, 'ISO-8859-1'); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
                       
                        // On fait passer notre texte à la moulinette des regex
                        $contenu = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $contenu);
                        $contenu = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $contenu);
                        $contenu = preg_replace('#\[color=(orange)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $contenu);
                        $contenu = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $contenu);
                        $contenu = preg_replace('#\[url\](.+)\[/url\]#i', '<a href=\"$1\" target=\"_blank\">$1</a>', $contenu);
                        $contenu = preg_replace('#\[url=(.+)\](.+)\[/url\]#i', '<a href="$1" target=\"_blank\">$2</a>', $contenu);
                        $contenu = preg_replace("#\[img\](.+)\[/img\]#U", "<img src=\"$1\" alt=\"\" height=\"200\" />", $contenu);
                        $contenu = preg_replace("'\[(left|center|right|justify)\]'Ui", "<div style=\"text-align:\\1;\">", $contenu);
                        $contenu = preg_replace("'\[\/(left|center|right|justify)\]'Ui", "</div>", $contenu);
                        $contenu = preg_replace("'\[(0.90em)\]'Ui", "<span style=\"font-size:\\1;\">", $contenu);
                        $contenu = preg_replace("'\[/(0.90em)\]'Ui", "</span>", $contenu);
                       
                        // On crée les entrées en HTML (<br />).
                        echo nl2br($contenu);?>
       
                        </td>
                </tr>
        </table>
</p>
                        </div>
Voila, déjà c'est plus claire dans l'URL ^^ et ensuite le contenu s'affiche correctement.

Voila, en espérant que ça va t'aider un peux, et si tu as des questions, demande on essayeras de t'informer, afin que ton problème soit résolut

Cordialement

Problèmes d'affichage de news

par Sylia » 18 janv. 2013, 14:35

Bonjour,

J'ai un problème sur l'affichage d'un article de news et je n'arrive pas savoir d'où ça peut venir...
En fait, pour mes news, j'ai deux pages : une première qui appelle les 5 dernières news de ma bdd, la coupe après 450 caractères et permet d'afficher l'article complet dans une seconde page via un lien. Voilà le code de cette première page :
<?php
mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");
// On récupère les cinq dernières news.
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5') or exit(mysql_error());
while ($donnees = mysql_fetch_array($retour))
{
?>

			<div class="news">
			
<h3>

		<span class="titre_news"><?php echo $donnees['titre']; ?></span>
		<span class="petit"><em>le <?php $date = $donnees['date']; 
		$date = explode('-',$date);
		echo $date[2],'/',$date[1],'/',$date[0];
		?></em></span>
</h3>
    	
<p>
	<table>
		<tr>
			<td id="image"><img src="<?php echo $donnees['img']; ?>" height="150" /></td>
			<td id="texte"><?php
			$contenu = stripslashes($donnees['contenu']);
			$contenu = htmlspecialchars($donnees['contenu'], ENT_NOQUOTES, 'ISO-8859-1'); // On rend inoffensives les balises HTML que le visiteur a pu rentrer

			// On fait passer notre texte à la moulinette des regex
			$contenu = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $contenu);
			$contenu = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $contenu);
			$contenu = preg_replace('#\[color=(orange)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $contenu);
			$contenu = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $contenu);
			$contenu = preg_replace('#\[url\](.+)\[/url\]#i', '<a href=\"$1\" target=\"_blank\">$1</a>', $contenu);
			$contenu = preg_replace('#\[url=(.+)\](.+)\[/url\]#i', '<a href="$1" target=\"_blank\">$2</a>', $contenu);
			$contenu = preg_replace("#\[img\](.+)\[/img\]#U", "<img src=\"$1\" alt=\"\" height=\"200\" />", $contenu);
			$contenu = preg_replace("'\[(left|center|right|justify)\]'Ui", "<div style=\"text-align:\\1;\">", $contenu);
			$contenu = preg_replace("'\[\/(left|center|right|justify)\]'Ui", "</div>", $contenu);
			$contenu = preg_replace("'\[(0.90em)\]'Ui", "<span style=\"font-size:\\1;\">", $contenu);
			$contenu = preg_replace("'\[/(0.90em)\]'Ui", "</span>", $contenu);
			?>

<?php // Nombre de caractère
  $max = 450;
  $id = $donnees['id'];
  $titre = $donnees['titre'];
  $date = $donnees['date'];
  $img = $donnees['img']; 
  if(strlen($contenu)>=$max)
  {
  // Met la portion de chaine dans $chaine
  $contenu=substr($contenu,0,$max); 
  // position du dernier espace
  $espace=strrpos($contenu," "); 
  // test si il y a un espace
  if($espace)
  // si il y a 1 espace, coupe de nouveau la chaine
  $contenu=substr($contenu,0,$espace);
  // Ajoute ... à la chaine
  $contenu .= ' [...]'; 
  }
?>
			
<?php
// On crée les entrées en HTML (<br />).
echo nl2br($contenu);
?> 
			
<br/>
<span class="suite"><a href="http://www.monsite.com/article.php?id=<?php echo $id; ?>&titre=<?php echo $titre; ?>&date=<?php echo $date; ?>&img=<?php echo $img; ?>&contenu=<?php echo $donnees['contenu']; ?>">Lire la suite</a></span>
			
			</td>
		</tr>
	</table>
</p>
			</div>

<?php
} // Fin de la boucle des <italique>news</italique>.
?>
Sur cette première page, les regex et les sauts de lignes fonctionnent. Mais sur celle de l'article complet, je n'ai aucun saut de ligne qui s'effectue et les deux liens que j'ai mis se fondent en un seul. C'est-à-dire, si j'écris [ulr=monsite.com/mapage1.php]Ma page 1[/url] Blablabla Ma page 2, j'obtiens au final : Ma page 2 avec comme adresse du lien : monsite.com/mapage1.php]Ma page 1[/url] Blablabla 20%[url=monsite.com.mapage2.php.

Voilà le code de cette 2e page :
<?php
mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");

mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['id'] . '\'') or exit(mysql_error())
?>
			<div class="news">
<?php echo $id; ?>
<h3>

		<span class="titre_news"><?php echo $_GET['titre']; ?></span>
		<span class="petit"><em>le <?php $date = $_GET['date']; 
		$date = explode('-',$date);
		echo $date[2],'/',$date[1],'/',$date[0];
		?></em></span>
</h3>
    	
<p>
	<table>
		<tr>
			<td id="image"><img src="<?php echo $_GET['img']; ?>" height="175" /></td>
			<td id="texte"><?php
			$contenu = stripslashes($_GET['contenu']);
			$contenu = htmlspecialchars($_GET['contenu'], ENT_NOQUOTES, 'ISO-8859-1'); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
			
			// On fait passer notre texte à la moulinette des regex
			$contenu = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $contenu);
			$contenu = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $contenu);
			$contenu = preg_replace('#\[color=(orange)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $contenu);
			$contenu = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $contenu);
			$contenu = preg_replace('#\[url\](.+)\[/url\]#i', '<a href=\"$1\" target=\"_blank\">$1</a>', $contenu);
			$contenu = preg_replace('#\[url=(.+)\](.+)\[/url\]#i', '<a href="$1" target=\"_blank\">$2</a>', $contenu);
			$contenu = preg_replace("#\[img\](.+)\[/img\]#U", "<img src=\"$1\" alt=\"\" height=\"200\" />", $contenu);
			$contenu = preg_replace("'\[(left|center|right|justify)\]'Ui", "<div style=\"text-align:\\1;\">", $contenu);
			$contenu = preg_replace("'\[\/(left|center|right|justify)\]'Ui", "</div>", $contenu);
			$contenu = preg_replace("'\[(0.90em)\]'Ui", "<span style=\"font-size:\\1;\">", $contenu);
			$contenu = preg_replace("'\[/(0.90em)\]'Ui", "</span>", $contenu);
			
			// On crée les entrées en HTML (<br />).
			echo nl2br($contenu);?>
	
			</td>
		</tr>
	</table>
</p>
			</div>
Quelqu'un verrait d'où peut venir le problème ?
Merci d'avance pour votre aide !