Image 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 : Image de news

par Ryle » 22 nov. 2008, 21:41

Ca se fait en deux étapes.

La première, en javascript, c'est la saisie. Il te faut permettre à ton visiteur d'insérer des balises dans son message, comme sur ce forum. (bon, c'est pas obligatoire, il peut aussi se les palucher à la main, mais c'est quand même moins pratique ;))

Deuxième étape, au moment de l'affichage de la news, remplacer grace à php les balises bbcode par les balises html correspondantes. Pour le remplacement tu peux utiliser du str_replace() ou des expressions régulières (preg_replace()).

Une recherche de "bbcode" sur le forum devrait te donner pas mal d'idées/exemples :)

par Invité » 22 nov. 2008, 16:32

c'est bon, maintenant avec :echo '<img src="'.$data['chmImg'].'" alt="..." />'; ca marche ;) merci a vous.

Mais il y a autre chose, comment puis-je faire pour que lorsqu'on rédige la news on la rédige en bbcode pour le gras, les couleurs, les lien...??

par jojolapine » 22 nov. 2008, 15:43

oups pardon, j'avais cru que tu enregistrais directement <img ... /> dans ta bdd, ... ben je vois pas non plus ou ça peut coincer...
Qu'est-ce que tu entends par
bien il se réécrit tel quel sans afficher l'image dans ma news.

par Ryle » 22 nov. 2008, 15:14

Je viens de faire un essai, y a pas de problème particulier à première vue... faut juste spécifier une url globale dans le champ image (http://..../image.ext) et elle s'affiche correctement :)

Concernant ton message d'erreur lors de l'envoi du formulaire, c'est un header() ligne 26 du fichier insert_news.php qui ne peut s'exécuter (donc l'enregistrement qui précède a bien fonctionné), tout simplement parce que des données ont déjà été envoyée au navigateur à la ligne 1 (output started at /home/pulsion/www/a/insert_news.php:1)

En gros, tu dois avoir une ligne blanche, un espace, du code html, un echo, ou n'importe quoi d'autre qui est envoyé au navigateur avant l'ouverture de la balise "<?php". Et comme t'as déjà commencé à envoyer des données à l'utilisateur, php peut plus le rediriger vers une autre page :)

par Invité » 22 nov. 2008, 14:55

Désolé mais je ne voit pas ou est mon htmlentities() de trop :s

par jojolapine » 22 nov. 2008, 14:38

Tu as un htmlentities() de trop...
Mais je ne sais pas si c'est une bonne idée de stocker du code html dans ta base de donnée, pourquoi ne pas stocker simplement le chemin vers l'image et faire qqch comme ça après:
echo '<img src="'.$data['chmImg'].'" alt="..." />';

Image de news

par This is Siny » 22 nov. 2008, 14:16

Bonjour,

J'ai un problème avec mes news, j'ai réussi a créé 4 champs Auteur - Titre - Image - News .
Ils se placent a la bonne place et tout, mais lorsque dans le champ image j'insère le code html de l'image et bien il se réécrit tel quel sans afficher l'image dans ma news.

index.php :
 
   <blockquote class="news">

 <!-- code HTML avant l'affiche des news (tout dépend comment est constitué votre site) -->
 <?php
 // on inclut l'affichage de nos news  
 include ('news.php');  
 ?>
 <!-- code HTML après l'affiche des news (tout dépend comment est constitué votre site) -->

   </blockquote>
news.php
 
	<?php
    // on se connecte à notre base  
    $base = mysql_connect ('****.************.***', '*******', '********');  
    mysql_select_db('********', $base);  
     
    // lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)  
    $sql = 'SELECT * FROM `news` LIMIT 0, 30 ';   
     
    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
   $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
    
   // on compte le nombre de news stockées dans la base de données  
   $nb_news = mysql_num_rows($req);  
    
   if ($nb_news == 0) { 
      echo 'Aucune news enregistrée.';  
   }  
   else { 
      // si on a au moins une news, on l'affiche 
      while ($data = mysql_fetch_array($req)) { 
    
         // on décompose la date 
         sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec); 
  
         // on affiche les résultats 
		 ?> 
		 <div id="mainbar">
		    <blockquote class="news">
    <h2>
     <?php echo '' , htmlentities(trim($data['titre'])) , '';?> 
     <span><a href="#"> <?php echo '', htmlentities(trim($data['auteur']));?></a> <em><?php echo '   Post&eacute;e le : ' , $jour , '/' , $mois , '/' , $an , ' &aacute; ' , $heure , ':' , $min , ':' , $sec ?></em></span>
    </h2>
       <p class="news_img"> <img src="<?php echo '' , htmlentities(trim($data['image'])) , '';?>"/></p>
       <p class="p1">
<?php echo '' , nl2br(htmlentities(trim($data['texte_news']))) , '<br />'; ?>
        </p> 
    <p class="readmore"><a href="#"><img src="img/more_news.jpg" alt="read more" /></a></p>
    <p class="news_comments"><a href="#">[3] Comments.</a> &nbsp; 
    Latest By Author ~ <small>on: November 15 2008 19:51h</small></p>
   </blockquote>
   </div>
        
         
          
     <?php     
      }  
   }  
   // on libère l'espace mémoire alloué à cette requête  
   mysql_free_result ($req);  
    
   // on ferme la connexion à la base de données  
   mysql_close ();  
   ?> 



insert_news.php
 
<?php
// on teste si le formulaire a été validé  
if (isset($_POST['go']) && $_POST['go']=='Poster la news') { 
 // on se connecte à notre base 
    $base = mysql_connect ('****.************.***', '*******', '********');  
    mysql_select_db('********', $base);  
  
    // on teste la déclaration de nos variables 
    if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['image']) || !isset($_POST['news'])  ) { 
        $erreur = 'Les variables nécessaires au script ne sont pas définies.'; 
  } 
    else { 
      if (empty($_POST['auteur']) || empty($_POST['titre'])  ||   empty($_POST['image']) || empty($_POST['news']) ) { 
         $erreur = 'Au moins un des champs est vide.'; 
       } 
       // si tout est bon, on peut commencer l'insertion dans la base 
        else { 
         // lancement de la requête d'insertion 
           $sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string($_POST['image']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['news']).'")';  
  
          // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
         mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
           // on ferme la connexion à la base de données 
            mysql_close(); 
          // on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez placé cette page dans un répertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'accès afin de retomber sur la page d'accueil du site. 
          header('http://www.pulsion.tonsite.biz/a/news.php'); 
            // on termine le script courant 
            exit(); 
         } 
      }  
 }  
  ?>
  <html>
  <head>
  <title>Insertion d'une nouvelle news</title>
  </head>
   
  <body>
    
   <!-- on fait pointer le formulaire vers la page traitant les données -->
   <form action="insert_news.php" method="post">
  <table>
   <tr><td>
   <span class="gras">Auteur :</span>
   </td><td>
   <input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
   </td></tr><tr><td>
  <span class="gras">Titre :</span>
  </td><td>
   <input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
   </td></tr><tr><td>
  <span class="gras">Image :</span>
  </td><td>
   <input type="text" name="image" maxlength="50" size="50" value="<?php if (isset($_POST['image'])) echo htmlentities(trim($_POST['image'])); ?>">
   </td></tr><tr><td>
  <span class="gras">News :</span>
   </td><td>
   <textarea name="news" cols="50" rows="10"><?php if (isset($_POST['news'])) echo htmlentities(trim($_POST['news'])); ?></textarea>
   </td></tr><tr><td><td align="right">
  <input type="submit" name="go" value="Poster la news">
   </td></tr></table>
  </form>
  <?php
  // on affiche les erreurs éventuelles  
   if (isset($erreur)) echo '<br /><br />',$erreur;  
   ?>
   </body>
  </html> 



http://www.pulsion.tonsite.biz/a/
http://www.pulsion.tonsite.biz/a/insert_news.php (je ne l'ai pas encore protégé.)

2ème problème, moins important, lorsque j'envoie ma news a partir de insert_news, j'ai un message d'erreur, mais la news s'affiche quand même

Merci

This is siny ;)[quote][/quote]