Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire un lien vers une news avec ?id=

Sujet résolu
    30 novembre 2011 à 18:49:53

    Bonjour !
    Aujourd'hui je me retrouve confronté à un problème auquel je ne m'attendais pas.
    Présentation du cas :
    J'affiche une liste des 5 dernières news en affichant leur titre.

    Problème :
    J'aurais voulu mettre le lien direct vers la news correspondante.

    Le code :
    <?php
            require "./includes/config.php";
            mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD);
            mysql_select_db(DB_BDD);
            
            $sql="SELECT * FROM news ORDER BY id DESC LIMIT 5";
            $req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
            while($data=mysql_fetch_assoc($req)){
            echo "<li><p>{$data["titre"]}<p></li>";
            }
            ?>
    


    J'ai essayé
    <?php
    echo "<a href'http://artistik.ethnies.free.fr/index.php?id={$data["id"]}'><li><p>{$data["titre"]}<p></li><a/>";
    

    mais cela ne marche pas.
    J'ai pensé à un If/Else, mais je ne sais pas comment faire.

    Merci d'avance.
    mangasource
    • Partager sur Facebook
    • Partager sur Twitter
      30 novembre 2011 à 18:57:54

      Bonjour,

      Ta balise a devrait être autour du titre lui-même, pas autour du li.
      Et si ce n'est pas ça dis nous ce c'est le problème exactement ? Le lien qui est mal construit ou qui ne marche pas ?
      • Partager sur Facebook
      • Partager sur Twitter
        30 novembre 2011 à 19:05:06

        @philodick, exact !
        Alors, dans la barre d'adresse, cela affiche bien
        http://artistik.ethnies.free.fr/index.php?id=id_de_la_news

        Seulement, cela affiche toute les news. Je ne veux afficher que celle correspondant à l'id.
        • Partager sur Facebook
        • Partager sur Twitter
          30 novembre 2011 à 19:07:49

          Ben peut-être, mais qu'il y a-t-il dans index.php ?
          • Partager sur Facebook
          • Partager sur Twitter
            30 novembre 2011 à 19:32:03

            Ceci :

            <?php
            	require "./includes/config.php";
            	mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD);
            	mysql_select_db(DB_BDD);
            	
            	$sql="SELECT * FROM news ORDER BY id DESC";
            	$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
            	while($data=mysql_fetch_assoc($req)){
            		echo "<div id='news'><h1>{$data["titre"]}</h1>";
            		echo "<p>{$data["contenu"]}</p>";
            		echo "<h5 align=\"right\">Ecrit le&nbsp;".date("j/m/Y",strtotime($data["date"]))."</h5></div>";
            	}
            ?>
            
            • Partager sur Facebook
            • Partager sur Twitter
              30 novembre 2011 à 19:51:20

              Comment veux-tu qu'il sélectionne la bonne news si tu ne donne pas l'id dans ta requête ?
              <?php
              	require "./includes/config.php";
              	mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD);
              	mysql_select_db(DB_BDD);
              	
              	$sql='SELECT * FROM news WHERE id='.mysql_real_escape_string($_GET['id']);
              	$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
              	while($data=mysql_fetch_assoc($req)){
              		echo "<div id='news'><h1>{$data["titre"]}</h1>";
              		echo "<p>{$data["contenu"]}</p>";
              		echo "<h5 align=\"right\">Ecrit le&nbsp;".date("j/m/Y",strtotime($data["date"]))."</h5></div>";
              	}
              ?>
              
              • Partager sur Facebook
              • Partager sur Twitter
                30 novembre 2011 à 19:57:34

                Citation

                Erreur SQL !
                SELECT * FROM news WHERE id=
                You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1



                J'ai changé la ligne :
                <?php
                $sql='SELECT * FROM news WHERE id='.mysql_real_escape_string($_GET['id']);
                


                Par :
                <?php
                $sql='SELECT * FROM news WHERE id='.mysql_real_escape_string($_GET['id']).'';
                


                Mais cela me renvoi la même erreur.


                • Partager sur Facebook
                • Partager sur Twitter
                  30 novembre 2011 à 20:02:56

                  Il faut bien sûr que tu vérifies l'existence de '$_GET ['id']. Si c'est vide ça ne marchera pas.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 novembre 2011 à 20:06:20

                    Il y a bien un id dans ma BDD.

                    D'ou doit venir $_GET ['id'] ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 novembre 2011 à 20:50:26

                      Quand tu as un lien comme :
                      <a href="http://artistik.ethnies.free.fr/index.php?id=id_de_la_news">Lien</a>
                      

                      et que tu cliques dessus, tu récupères dans la page 'index.php' la variable '$_GET['id'] qui vaut 'id_de_la_news'.
                      Donc pour que cette variable existe, il faut que tu aies cliqué sur le lien en question.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 novembre 2011 à 21:13:14

                        Salut toi! :p La je vien de finir de crée mon site et j'étais dans la meme galère que toi...
                        Mais tien moi g crée un page
                        news.php (indexant les 7 premiers news avec les 100 premiers caracteres)
                        viewnews.php (La reponse a ton probleme ^^) :p

                        news.php :
                        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                        </head>
                        
                        <body>
                        <div class="contenant">
                        <div class="contenu">
                        <h1>A la une !</h1>
                        <?php
                        // Connexion à la base de données
                        try
                        {
                        
                        $sql2 = "SELECT COUNT(id) FROM billets";
                        $result2 = mysql_query($sql2) or exit ( mysql_error () );
                        	// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
                           
                           if(mysql_num_rows($result2) > 0)
                        	{
                        	
                        	// On met dans une variable le nombre de messages qu'on veut par page
                        	$nombreDeMessagesParPage = 7; // Essayez de changer ce nombre pour voir :o)
                        	// On récupère le nombre total de messages
                        	$sql3 = 'SELECT COUNT(*) AS nb_messages FROM billets';
                        	$retour_count = mysql_query($sql3);
                        	$donnees = mysql_fetch_assoc($retour_count);
                        	$totalDesMessages = $donnees['nb_messages'];
                        	// On calcule le nombre de pages à créer
                        	$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
                        	// Puis on fait une boucle pour écrire les liens vers chacune des pages
                        	echo 'Page : ';
                        	for ($i = 1 ; $i <= $nombreDePages ; $i++)
                        	{
                            echo ' || <a href="news.php?page=' . $i . '">' . $i  . '</a> ';
                        	}
                        		if (isset($_GET['page']))
                        		{
                                $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
                        		}
                        	else // La variable n'existe pas, c'est la première fois qu'on charge la page
                        	{
                                $page = 1; // On se met sur la page 1 (par défaut)
                        	}
                        			$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
                        			$sql = 'SELECT id, auteur, Titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr, id_sha1 FROM billets ORDER BY date_creation DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage;
                        $reponse = mysql_query($sql) or exit ( mysql_error() );
                        			while ($row = mysql_fetch_assoc($reponse))
                        				{
                        				$contenu = stripslashes(html_entity_decode(nl2br(substr(htmlspecialchars($row['contenu']), 0, 100))));
                        				?>
                        				<h3 class="non_h3">
                        				<a href="<?php echo ROOTPATH; ?>/membres/viewnews.ph?news_sha=<?php echo htmlspecialchars($row['id_sha1']);?>&news_id=<?php echo htmlspecialchars($row['id']);?>"><?php echo htmlspecialchars($row['Titre']);?></a>
                        				le <em class="important"><?php echo $row['date_creation_fr']; ?></em> par <em class="important"><?php echo htmlspecialchars($row['auteur']);?></em>
                        				</h3>
                        			<?php echo $contenu  ?></p> </br>
                        </p>
                        				<br />
                        				<?php
                        				}
                        	}
                        else
                        	{
                        ?>
                        <p>Il n'y a pas de news pour le moment si vous voulez en crée un, </br><a href="<?php echo ROOTPATH; ?>/membres/create-news.php">Crée un news</a></p>
                        <?php
                        	}
                        				
                        	}
                        catch(Exception $e)
                        {
                            die('Erreur : '.$e->getMessage());
                        }
                        							?>
                        </div>
                        </div>
                        							<?php
                        	  include("../include/footer.php");
                        							?>
                        </body>
                        </html>
                        <?php
                        
                        }
                        else
                        {
                        ?>
                        <meta http-equiv="refresh" content="0;URL=<?php echo ROOTPATH; ?>/interdit.php">
                        
                        <?php
                        }
                        


                        viewnews.php :

                        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                        </head>
                        
                        <?php
                        $formulaire_new_id = $_GET['news_id'];
                        $formulaire_new_sha = $_GET['news_sha'];
                        include('../include/haut.php'); //contient le doctype, et head.
                        if(isset($_SESSION['membre_id']))
                        {
                        if(isset($formulaire_new_id) && isset($formulaire_new_sha))
                        {
                        $sql2 = "SELECT id, auteur, Titre, contenu, DATE_FORMAT(date_creation, '%d/%m/%Y à %Hh%imin%ss') AS date_creation_fr, id_sha1 FROM billets WHERE id_sha1 =\"" . $formulaire_new_sha . "\"";
                        $sql_count = "SELECT COUNT(id) AS count_comments FROM commentaires";
                        $sql3 = "SELECT id, id_billet, auteur, DATE_FORMAT(date_creation, '%d/%m/%Y à %Hh%imin%ss') AS date_creation_comments FROM commentaires WHERE id_billet =\"" . $formulaire_new_sha . "\"";
                        $result2 = mysql_query($sql2) or exit ( mysql_error () );
                        $result3 = mysql_query($sql_count) or exit ( mysql_error());
                        $row2 = mysql_fetch_assoc($result2);
                        $row3 = mysql_fetch_assoc($result3);
                        $titre_view = htmlspecialchars($row2['Titre']);
                        $auteur_view = htmlspecialchars($row2['auteur']);
                        $date_view = htmlspecialchars($row2['date_creation_fr']);
                        $contenu_view = stripslashes(html_entity_decode(nl2br(htmlspecialchars($row2['contenu']))));
                        $titre = $titre_view;
                        echo '
                        <body>
                        <div class="contenant">
                        <div class="contenu">';
                        
                        echo '<h1>' .  $titre_view . '</h1>';
                        echo '<h3>le<span class="important"><em> ' . $date_view . '</em></span> par <span class="important"><em>' . $auteur_view . '</em></span></h3>';
                        echo '<p>' . $contenu_view . 
                        '</p>
                        <br />
                        <br/>
                        <br/>
                        <hr/>
                        ';
                        if($row3['count_comments'] > 0)
                        {
                        echo '<h4>Il y a ' . $row3['count_comments'] . 'commentaires.</h4></br>';
                        echo '<br/><br/> ';
                        
                        }
                        else
                        {
                        echo '<h4>Il n\'y a pas de commentaires.</h4>';
                        }
                        echo '<hr/>
                        <textarea style="width:459px; height:300px; text-align:center">
                        	</textarea></div></div></body></html>
                        ';
                        }
                        }
                        else
                        {
                        ?>
                        <meta http-equiv="refresh" content="0;URL=<?php echo ROOTPATH; ?>/interdit.php">
                        
                        <?php
                        }
                        	  include("../include/footer.php");
                        							?>
                        
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 novembre 2011 à 21:47:15

                          <?php
                          
                          if (isset($_GET['id']) && $_GET['id'] > 0) {
                            $sql = ''; // Requête pour une news précise
                          } else {
                            $sql = ''; // Requête pour toutes les news
                          }
                          
                          ?>
                          


                          C'est pas très sorcier.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 décembre 2011 à 12:51:51

                            Lol oui c'est vrai j'avez pas remarqué --" merci..
                            Sa marche en tout cas^^
                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 décembre 2011 à 19:34:27

                              Merci à tous !
                              Le problème est résolu !

                              Autre problème si vous pouvez m'aider :
                              http://www.siteduzero.com/forum-83-708 [...] html#r6882845
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Faire un lien vers une news avec ?id=

                              × 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.
                              • Editeur
                              • Markdown