récupérer un lien de la bbd et le mettre sur un titre récupéré

récupérer un lien de la bbd et le mettre sur un titre récupéré - SQL/NoSQL - Programmation

Marsh Posté le 17-12-2009 à 14:33:09    

Bonjour à tous,
 
 
Je suis entrain de faire un site web, une sorte de webzine avec beaucoup d'articles qui correspondent à des thèmes/catégories. Il y a à peu prés 6 catégorie thèmatique.
Un article = une page.
 
les pages s'accumulent mais c'est pas un souci.
 
Ce que je souhaiterais c'est un lien par catégorie qui renvoie l'internaute à une page rescenssant tous les articles de la catégorie avec une possibilité de recherche de mots clés ds tous les articles de cette catégorie.
 
 
donc voila ce que j'ai compris :
 
ds mon site j'ai 6 catégorie. (environnement,alternaltives, etc...)A chaque catégorie je peux aller sur une page qui recense tous les articles de la catéorie choisie.
 
Pour la catégorie "environnement", je crée une table "environnement" ds ma bdd.
 
ds cette table je met 8 champs dont j'insère du (contenu):
 
- ID en auto_increment
- catégorie (environnement)
- index (A -> car je souhaite faire un trie par odre alphabètique sur la page)
- titre (Agent Orange)
- contenu (petit résumé de l'article)
- Auteur (monsieur poireaux-cacahuète)
- lien ( "http://blabla.com/tataginette.php" ou ""/tataginette.php ou "lire l'article sur l'agent orange de M.poireaux cacahuète" et je ds ce cas je mets le lien ds ma page php ? )
- date_publication (34/13/2345)
 
Puis sur ma page php, j'apelle tous le "A" de la table "environnement" puis tous les "B"
 
 

Code :
  1. <h2>A</h2>
  2. <?php
  3. mysql_connect("localhost", "pseudo", "mot_de_passe" );
  4. mysql_select_db("nom_de_la_bbd" );
  5. // Sélectionnons les champs la table "environnement" dont le champs index est "A"
  6. $reponse = mysql_query("SELECT titre, contenu, auteur, lien, date FROM environnement WHERE indx='A'" );
  7. while ($donnees = mysql_fetch_array($reponse) )
  8. {
  9. ?>
  10. <?php echo $donnees['tire']; ?><br />
  11. <?php echo $donnees['contenu']; ?><br />
  12. Auteur : <?php echo $donnees['auteur']; ?><br />
  13. <?php echo $donnees['lien']; ?><br />
  14. Date de publication : <?php echo $donnees['date']; ?><br />
  15. <?php
  16. }
  17. mysql_close();
  18. ?>
  19. <hr/>
  20. <h2>B</h2>
  21. <?php
  22. mysql_connect("localhost", "pseudo", "mot_de_passe" );
  23. mysql_select_db("nom_de_la_bbd" );
  24. // Sélectionnons les champs la table "environnement" dont le champs index est "B"
  25. $reponse = mysql_query("SELECT titre, contenu, auteur, lien, date FROM environnement WHERE index='B'" );
  26. while ($donnees = mysql_fetch_array($reponse) )
  27. {
  28. ?>
  29. <?php echo $donnees['tire']; ?><br />
  30. <?php echo $donnees['contenu']; ?><br />
  31. Auteur : <?php echo $donnees['auteur']; ?><br />
  32. <?php echo $donnees['lien']; ?>
  33. Date de publication : <?php echo $donnees['date']; ?><br />
  34. <?php
  35. }
  36. mysql_close();
  37. ?>


Par contre je sais pas si je dois faire comme çà pour récup les donnée pour A et pour B.
 
 
J'aimerais donc aussi inclure sur cette page une fonction de recherche qui rechercherai des mots clés uniquement ds tous les pages php d'un seul dossier.
Peut etre que j'aurai seulement besoin de php ?
 
merci de m'aider a+


Message édité par Positiviste le 19-12-2009 à 11:30:31

---------------
ploum ploum tralala
Reply

Marsh Posté le 17-12-2009 à 14:33:09   

Reply

Marsh Posté le 17-12-2009 à 14:51:52    

Salut,
 
Ca ne me parait pas très bien parti...
Déjà ton "index", ça ne sert pas à grand chose, ou alors je n'ai pas compris, mais si tu fais en une seule requête :  
 
SELECT titre, contenu, auteur, lien, date FROM environnement
ORDER BY Index
 
tu auras tout dans l'ordre...
 
Après, je pense qu'il y a un gros problème de modèle... Si tu veux récupérer les articles qui concernent la catégorie "Environnement", il faut que tu mettes dans ta table Article un identifiant "ID_CAT", et que tu crées un table "Categorie", avec comme valeur, par exemple :  
ID_CAT : NOM_CAT
1 : Environnement
2 : Alternative
3 : ....
 
Dans ta table Article, tu auras donc, pour chaque article qui traite de l'environnement un champ "ID_CAT" à 1.
 
Il est ensuite très simple d'aller chercher tous les articles qui ont comme catégorie "Environnement", et si une autre catégorie se crée un jour, pas besoin de créer une nouvelle table...
 
Bon courage,

Reply

Marsh Posté le 17-12-2009 à 15:02:51    

merci.

 

En fait ce que je voulais faire avec ce index, c'est que sur ma page tous les articles n'apparissent pas ds l'odre alphabétique les uns à la suite des autres.

 

Mais une lettre <h2>A<h2/> et dessous tous les articles avec A ds "index" puis
 une barre de séparation genre <hr/> puis
une lettre <h2>B</h2> et dessous tous les articles avec B ds "index"

 

donc ds la page environnement sous la lettre A, une requête appellant tous les articles avec A ds index puis ds la meme page et sous la lettre B, une requête qui apelle tous les articles avec B ds index.

 

Par contre effectivement, il n'est pas nécessaire de créé une table par catégorie, mais je pense que c'est mieux pour l'instant si je souhaite en modifier une, la supprimer, et mieux trier.


Message édité par Positiviste le 17-12-2009 à 15:11:17

---------------
ploum ploum tralala
Reply

Marsh Posté le 17-12-2009 à 18:41:35    

resalut,
 
Peut insérer un lien relatif ds le contenu d'une table ?


---------------
ploum ploum tralala
Reply

Marsh Posté le 18-12-2009 à 11:11:48    

Euh, c'est une chaine de caractère non ? Après il faut construire le lien à partir de la chaine, mais le stockage dans la bdd, je ne vois pas ce qui peut poser problème (à part peut-être les caractères spéciaux à gérer pour ne pas impacter tes scripts)...

Reply

Marsh Posté le 18-12-2009 à 13:07:09    

question bête : plutôt que de réinventée la roue (en +, t'es bien parti pour nous la faire carrée ta roue :/), pourquoi tu n'utilises pas un CMS style Spip, joomla ou autre :??: Parce que si ton site a un peu de succès, faudra pas longtemps à qq'un pour te le hacker...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-12-2009 à 23:09:00    

slt à vous,
 
joomla y passait pas sur l'hébergeur mais spip si. mais j'avais envie d'apprendre un peu le html et le css.
 
de toute façon mon script pour récup les données il est foireux. j'ai une erreur de syntaxe.
 
j'ai réussi à faire çà pour le moment : http://www.desmotscrasseux.lautre.net
 
tous les liens ne sont pas j'essai déjà de structurer la page environnement.


Message édité par Positiviste le 18-12-2009 à 23:10:31

---------------
ploum ploum tralala
Reply

Marsh Posté le 19-12-2009 à 10:30:30    

:hello:

 

j'ai refait le script, çà fonctionne presque.

 
Code :
  1. <h2>A</h2>
  2. <?php 
  3.      mysql_connect('', '', '') OR die('Erreur de connexion à la base'); 
  4.      mysql_select_db('') OR die('Erreur de sélection de la base'); 
  5.      $requete = mysql_query('SELECT titre, date, liens, auteur FROM environnement') OR die('Erreur de la requête MySQL'); 
  6.      mysql_close(); 
  7.      /** 
  8.      * On récupère les données 
  9.      * Tant qu'une ligne sera présente, la boucle continuera 
  10.      */ 
  11.      while($resultat = mysql_fetch_assoc($requete))  //équivalent à  while($resultat = mysql_fetch_array($requete, MYSQL_ASSOC))
  12.      { 
  13.           echo '<p>Titre : '.$resultat['titre'].'. Date : '.$resultat['date'].'</p>'; 
  14. echo '<p>Auteur : '.$resultat['auteur'].'. Lire larticle : '.$resultat['liens'].'</p>';   
  15.      } 
  16. ?>
  17. <hr/>
 

le seul souci que j'ai maintenant, c'est les liens.

 

Avec le script actuel, çà affiche le lien sur la page mais il n'est pas cliquable et je voudrai qu'il soit en relatif.


Message édité par Positiviste le 19-12-2009 à 10:31:14

---------------
ploum ploum tralala
Reply

Marsh Posté le 19-12-2009 à 11:01:47    

Je ne sais pas sous quel format sont stockés tes liens dans ta table.
Mais par exemple :

Code :
  1. <?php echo "<a href=\"{$resultat['liens']}\">Lire la suite de m'article...</a>"; ?>


Mais je suis pas sur d'avoir bien compris ta question.

Reply

Marsh Posté le 19-12-2009 à 11:17:27    

salut et merci.

 

En fait jvoulais dire que je les mets en relatif ds ma BDD.

 

par contre j'ai finalement changé. Je souhaite seulement récupérer le titre ds la bdd et mettre dessus un lien qui est ds ma bdd.

 

genre quelque chose comme çà ?

 


Code :
  1. <?php  
  2.     mysql_connect('', '', '') OR die('');  
  3.     mysql_select_db('') OR die('Erreur de sélection de la base');  
  4.  
  5.    $requete = mysql_query('SELECT titre, liens FROM environnement') OR die ('Erreur de la requête MySQL');  
  6.  
  7.     mysql_close();  
  8.  
  9.     /**  
  10.     * On récupère les données  
  11.     * Tant qu'une ligne sera présente, la boucle continuera  
  12.     */  
  13.  
  14.     while($resultat = mysql_fetch_assoc($requete))
  15.     {  
  16.      
  17. echo '<a href= '.$resultat['liens'].'>'.$resultat['titre'].'</a>';
  18.     }  
  19. ?>
 

çà fonctionne mais c'est p_etre optimisable ?


Message édité par Positiviste le 19-12-2009 à 13:34:01

---------------
ploum ploum tralala
Reply

Marsh Posté le 19-12-2009 à 11:17:27   

Reply

Marsh Posté le 19-12-2009 à 13:33:11    

re,

 

j'ai maintenant 3 champs : index, titre, lien
jaimerais l'optimiser pour que apparaissent le titre en lien comme le post ci dessus mais seulement ceux où ds le champs index il y a "A"

 

et là je bloque. j'ai utilsé WHERE pourtant et j'ai "Erreur de la requete MySQL"

 
Code :
  1. <?php  
  2.     mysql_connect('', '', '') OR die('');  
  3.     mysql_select_db('') OR die('Erreur de sélection de la base');  
  4.  
  5.    $requete = mysql_query("SELECT titre, liens, index FROM environnement WHERE index='A' " ) OR die ('Erreur de la requête MySQL');  
  6.  
  7.     mysql_close();  
  8.  
  9.     /**  
  10.     * On récupère les données  
  11.     * Tant qu'une ligne sera présente, la boucle continuera  
  12.     */  
  13.  
  14.     while($resultat = mysql_fetch_assoc($requete))
  15.     {  
  16.      
  17. echo '<a href= '.$resultat['liens'].'>'.$resultat['titre'].'</a>';
  18.     }  
  19. ?>
 


EDIT :
bon jme suis débrouillé autrement :

 
Code :
  1. <?php  
  2.     mysql_connect('', '', '') OR die('');  
  3.     mysql_select_db('') OR die('Erreur de sélection de la base');  
  4.  
  5.    $requete = mysql_query("SELECT titre, liens FROM environnement WHERE titre LIKE 'A%' " ) OR die ('Erreur de la requête MySQL');  
  6.  
  7.     mysql_close();  
  8.  
  9.     /**  
  10.     * On récupère les données  
  11.     * Tant qu'une ligne sera présente, la boucle continuera  
  12.     */  
  13.  
  14.     while($resultat = mysql_fetch_assoc($requete))
  15.     {  
  16.      
  17. echo '<a href= '.$resultat['liens'].'>'.$resultat['titre'].'</a>';
  18.     }  
  19. ?>
 

et là çà fonctionne


Message édité par Positiviste le 19-12-2009 à 14:59:22

---------------
ploum ploum tralala
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed