Communauté Informatique NDFR.net

Communauté Informatique NDFR.net (http://www.ndfr.net/forums/index.php)
-   Programmation Web (HTML, PHP, ASP, Java, XML, etc.) (http://www.ndfr.net/forums/forumdisplay.php?f=65)
-   -   Systeme de news avec le phpbb (http://www.ndfr.net/forums/showthread.php?t=5252)

Magi-X 17-10-2004 21:41

voila, comme promis je te donne mon code que j'ai fais a l'époque :)

PHP Code:

// take the last topic in the news room -> id = 2                
$sql_get_news = mysql_query("SELECT * FROM mov_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1");
$get_news = mysql_fetch_array($sql_get_news);
                    
// get the nr of replies
$sql_get_replies = mysql_query("SELECT topic_replies FROM mov_topics WHERE topic_id = ".$get_news['topic_id']);
$get_replies = mysql_fetch_array($sql_get_replies);
                    
// get to poster who made the topic
$sql_get_poster = mysql_query("SELECT username FROM mov_users WHERE ". $get_news['topic_poster'] ." = user_id");
$get_poster = mysql_fetch_array($sql_get_poster);
                    
// get to body of the topic
$sql_get_body = mysql_query("SELECT * 
                    FROM     mov_posts, 
                        mov_posts_text 
                    WHERE 
                        mov_posts.topic_id = "
. $get_news['topic_id'] ."
                    AND
                        mov_posts.poster_id = "
. $get_news['topic_poster'] ."
                    AND
                        mov_posts_text.post_id = mov_posts.post_id
                    ORDER BY 
                        mov_posts.topic_id ASC LIMIT 10"
);
$get_body = mysql_fetch_array($sql_get_body); 

il faudra naturellement changer les paramettres en fonction de ta config.

Jackydown 17-10-2004 22:56

Merci Magi-X, mais j'ai regardé je capte vraiment que dale, je vois aucun rapport avec ce que je peux avoir dans ma bd, je ne vois pas quoi changer.
Est ce que quelqu'un pourrait me dire quelle requete je devrai faire pour amener sur une page un texte qui se trouve dans ma base de donnée ?

Magi-X 18-10-2004 11:17

Hum me suis tromper de code, car ce code permet d'afficher aussi le contenu du du news ... mais j'ai quand meme mit lexplication comme ca tu comprend, mais pour afficher les 10 derniers "titre" regarde le 2ieme code, tu vera il est plus court :)

Eh ben avec ceci il affiche les 10 dernier topics du salon nr 2 (qui etait chez moi les news) Et pourquoi je fais tout ce chemin, et bien parce que phpbb utilise 3 tables pour stocker ses donnés.

(Avec contenu donc)
PHP Code:

// 1. mov_topics -> regarde dans la base de donnée, car avec phpbb on peu utilise ce qu'on souhaitecomme prefix, donc il est fort probable qu'il y ai ecrit phpbb_topics (standart si je me souvien bien)
// 2. le forum_id c'est le id du salon ... il faudra donc changer celui la du salon que tu souhaite afficher les topics                
$sql_get_news = mysql_query("SELECT * FROM mov_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1"); 
$get_news = mysql_fetch_array($sql_get_news); 
                     
// Ici il suffit juste de changer le mov_topics pour ton prefix comme si dessus 
$sql_get_replies = mysql_query("SELECT topic_replies FROM mov_topics WHERE topic_id = ".$get_news['topic_id']); 
$get_replies = mysql_fetch_array($sql_get_replies); 

                     
// Pareil ici, changer le prefix 
$sql_get_poster = mysql_query("SELECT username FROM mov_users WHERE ". $get_news['topic_poster'] ." = user_id"); 
$get_poster = mysql_fetch_array($sql_get_poster); 
                     
// toujours pareil changer les prefix 
$sql_get_body = mysql_query("SELECT * 
                    FROM     mov_posts, 
                        mov_posts_text 
                    WHERE 
                        mov_posts.topic_id = "
. $get_news['topic_id'] ." 
                    AND 
                        mov_posts.poster_id = "
. $get_news['topic_poster'] ." 
                    AND 
                        mov_posts_text.post_id = mov_posts.post_id 
                    ORDER BY 
                        mov_posts.topic_id ASC LIMIT 10"
); 
while (
$get_body = mysql_fetch_array($sql_get_body)) { ... } 

Sans Contenu
PHP Code:

// changer le prefix et le id du salon
$sql_get_news_next = mysql_query("SELECT * FROM mov_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1,5");
                            
while (
$get_news_next = mysql_fetch_array($sql_get_news_next)){

    echo 
$get_news_next['topic_title'];
} 

Donc voila il te suffit juste de regarder dans la base de donne de c'es quelque petite chose décrite plus haut, et ça fonctionnera :)

Jackydown 18-10-2004 11:41

Merci, super sympa, j'essaye.

Edit :
Ben j'ai fait ça (au passage je sais même pas s'il faut mettre le truc de connexion à la bd mais je suppose que oui).

PHP Code:

<?php 
 $mysql_host 
= ""; //Le host du serveur 
        
$mysql_login = ""; //le login ou l'username du serveur 
        
$mysql_pass = ""; //le mot de pass du serveur 
        
$db_name = ""; //Le nom de votre base de donnée 
        
        
$db_link = @mysql_connect($mysql_host,$mysql_login,$mysql_pass); 
        if(!
$db_link) { 
                 echo 
"Connexion impossible à la base de données"; 
            } 

        
$db_selected = mysql_select_db($db_name,$db_link); 
        if (!
$db_selected) { 
                         die (
'Impossible d\'utiliser la base : ' . mysql_error());



        
// 1. mov_topics -> regarde dans la base de donnée, car avec phpbb on peu utilise ce qu'on souhaitecomme prefix, donc il est fort probable qu'il y ai ecrit phpbb_topics (standart si je me souvien bien) 
// 2. le forum_id c'est le id du salon ... il faudra donc changer celui la du salon que tu souhaite afficher les topics                 
$sql_get_news = mysql_query("SELECT * FROM phpbb_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1"); 
$get_news = mysql_fetch_array($sql_get_news); 
                      
// Ici il suffit juste de changer le mov_topics pour ton prefix comme si dessus 
$sql_get_replies = mysql_query("SELECT topic_replies FROM phpbb_topics WHERE topic_id = ".$get_news['topic_id']); 
$get_replies = mysql_fetch_array($sql_get_replies); 

                      
// Pareil ici, changer le prefix 
$sql_get_poster = mysql_query("SELECT username FROM phpbb_users WHERE ". $get_news['topic_poster'] ." = user_id"); 
$get_poster = mysql_fetch_array($sql_get_poster); 
                      
// toujours pareil changer les prefix 
$sql_get_body = mysql_query("SELECT * 
                    FROM     phpbb_posts, 
                        phpbb_posts_text 
                    WHERE 
                        phpbb_posts.topic_id = "
. $get_news['topic_id'] ." 
                    AND 
                        phpbb_posts.poster_id = "
. $get_news['topic_poster'] ." 
                    AND 
                        phpbb_posts_text.post_id = phpbb_posts.post_id 
                    ORDER BY 
                        phpbb_posts.topic_id ASC LIMIT 10"
); 
while (
$get_body = mysql_fetch_array($sql_get_body)) { ... } 
 
        
?>

Je sais pas si les ... de la derniere ligne veulent dire s'il faut continuer à mettre des trucs ou si c'est la fin.
En tout cas j'ai une erreur à cette ligne
PHP Code:

while ($get_body = mysql_fetch_array($sql_get_body)) { ... } 

Parse error: parse error, unexpected '.' in c:\program files\easyphp\www\karate\index\index.php on line 74

Magi-X 18-10-2004 18:15

ah oui a la place des ... il faut mettre du code

donc par exemple:

echo $get_body['post_text'];

Jackydown 18-10-2004 18:47

Bon j'ai remplacé les ... par ce que tu as dit, et maintenant l'erreur est à la ligne 95, autrement dit la derniere ligne, où il y a juste la balise </html>
-> Parse error: parse error, unexpected $ in c:\program files\easyphp\www\karate\index\index.php on line 95
Pourtant ça vient forcément de ce script puisque je suis sur qu'il n'y a aucune autre erreur sur ma page.
Décidemment ça me soule :(

Magi-X 18-10-2004 22:24

tu peux une fois donner tout le code, ce serait beaucoup plus simple :)

Jackydown 18-10-2004 22:34

PHP Code:

<?php 
$mysql_host 
= ""; //Le host du serveur 
        
$mysql_login = ""; //le login ou l'username du serveur 
        
$mysql_pass = ""; //le mot de pass du serveur 
        
$db_name = ""; //Le nom de votre base de donnée 
         
        
$db_link = @mysql_connect($mysql_host,$mysql_login,$mysql_pass); 
        if(!
$db_link) { 
                 echo 
"Connexion impossible à la base de données"; 
            } 

        
$db_selected = mysql_select_db($db_name,$db_link); 
        if (!
$db_selected) { 
                         die (
'Impossible d\'utiliser la base : ' . mysql_error()); 



        
// 1. mov_topics -> regarde dans la base de donnée, car avec phpbb on peu utilise ce qu'on souhaitecomme prefix, donc il est fort probable qu'il y ai ecrit phpbb_topics (standart si je me souvien bien) 
// 2. le forum_id c'est le id du salon ... il faudra donc changer celui la du salon que tu souhaite afficher les topics                  
$sql_get_news = mysql_query("SELECT * FROM phpbb_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1"); 
$get_news = mysql_fetch_array($sql_get_news); 
                       
// Ici il suffit juste de changer le mov_topics pour ton prefix comme si dessus 
$sql_get_replies = mysql_query("SELECT topic_replies FROM phpbb_topics WHERE topic_id = ".$get_news['topic_id']); 
$get_replies = mysql_fetch_array($sql_get_replies); 

                       
// Pareil ici, changer le prefix 
$sql_get_poster = mysql_query("SELECT username FROM phpbb_users WHERE ". $get_news['topic_poster'] ." = user_id"); 
$get_poster = mysql_fetch_array($sql_get_poster); 
                       
// toujours pareil changer les prefix 
$sql_get_body = mysql_query("SELECT * 
                    FROM     phpbb_posts, 
                        phpbb_posts_text 
                    WHERE 
                        phpbb_posts.topic_id = "
. $get_news['topic_id'] ." 
                    AND 
                        phpbb_posts.poster_id = "
. $get_news['topic_poster'] ." 
                    AND 
                        phpbb_posts_text.post_id = phpbb_posts.post_id 
                    ORDER BY 
                        phpbb_posts.topic_id ASC LIMIT 10"
); 
while (
$get_body = mysql_fetch_array($sql_get_body)) { echo $get_body['post_text']; } 

        
?>

à moins qu'il ne faille pas les {} pour la fin ?
:(

Magi-X 19-10-2004 10:55

PHP Code:

$mysql_host = ""; //Le host du serveur 
        
$mysql_login = ""; //le login ou l'username du serveur 
        
$mysql_pass = ""; //le mot de pass du serveur 
        
$db_name = ""; //Le nom de votre base de donnée 
          
        
$db_link = @mysql_connect($mysql_host,$mysql_login,$mysql_pass); 
        if(!
$db_link) { 
                 echo 
"Connexion impossible à la base de données"; 
            } 

        
$db_selected = mysql_select_db($db_name,$db_link); 
        if (!
$db_selected) { 
                         die (
'Impossible d\'utiliser la base : ' . mysql_error()); }



        
// 1. mov_topics -> regarde dans la base de donnée, car avec phpbb on peu utilise ce qu'on souhaitecomme prefix, donc il est fort probable qu'il y ai ecrit phpbb_topics (standart si je me souvien bien) 
// 2. le forum_id c'est le id du salon ... il faudra donc changer celui la du salon que tu souhaite afficher les topics                   
$sql_get_news = mysql_query("SELECT * FROM phpbb_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1"); 
$get_news = mysql_fetch_array($sql_get_news); 
                        
// Ici il suffit juste de changer le mov_topics pour ton prefix comme si dessus 
$sql_get_replies = mysql_query("SELECT topic_replies FROM phpbb_topics WHERE topic_id = ".$get_news['topic_id']); 
$get_replies = mysql_fetch_array($sql_get_replies); 

                        
// Pareil ici, changer le prefix 
$sql_get_poster = mysql_query("SELECT username FROM phpbb_users WHERE ". $get_news['topic_poster'] ." = user_id"); 
$get_poster = mysql_fetch_array($sql_get_poster); 
                        
// toujours pareil changer les prefix 
$sql_get_body = mysql_query("SELECT * 
                    FROM     phpbb_posts, 
                        phpbb_posts_text 
                    WHERE 
                        phpbb_posts.topic_id = "
. $get_news['topic_id'] ." 
                    AND 
                        phpbb_posts.poster_id = "
. $get_news['topic_poster'] ." 
                    AND 
                        phpbb_posts_text.post_id = phpbb_posts.post_id 
                    ORDER BY 
                        phpbb_posts.topic_id ASC LIMIT 10"
); 
while (
$get_body = mysql_fetch_array($sql_get_body)) { echo $get_body['post_text']; } 

essaye ca une fois

Jackydown 19-10-2004 11:06

J'ai pas d'erreur avec ce code, mais il apparait seulement le texte du dernier post.

Magi-X 19-10-2004 17:24

Quote:

Originally Posted by Jackydown
J'ai pas d'erreur avec ce code, mais il apparait seulement le texte du dernier post.

logique enfaite car c'est ce que je dis dans les commande sql .. mais je t'ai donné un autre code ou il affiche les 10 dernier topic ...

PHP Code:

// changer le prefix et le id du salon 
$sql_get_news_next = mysql_query("SELECT * FROM mov_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 10"); 
                             
while (
$get_news_next = mysql_fetch_array($sql_get_news_next)){ 

    echo 
$get_news_next['topic_title']; 
} 


Jackydown 19-10-2004 18:59

ça à l'air de marcher. Merci.
Seulement comment faire pour que chaque posts soient séparés, parce que la tout est ecrit sur une seule ligne. Y aurait il moyen par ex de les inserer dans des cadres ?

Samva 19-10-2004 19:07

Ben autour du echo qui fait afficher le texte tu fais faire un ptit truc pour la mise en page ;)

Jackydown 19-10-2004 20:31

Et apres tous ces posts, samva qui arrive et qui a pas encore compris que j'avais trop de mal avec le php.
En terme de post inutile on peut pas faire pire.
Si quelqu'un peut m'expliquer comment faire, ça serait sympa.

fonji 19-10-2004 20:32

Quote:

Originally Posted by Jackydown
Et apres tous ces posts, samva qui arrive et qui a pas encore compris que j'avais trop de mal avec le php.
En terme de post inutile on peut pas faire pire.
Si quelqu'un peut m'expliquer comment faire, ça serait sympa.

Heu là ça touche pratiquement plus php mais du html, et si tu sais pas en faire et que tu veux te faire un forum je te conseille fortement de mater (au moins) un tuto quoi...


All times are GMT +2. The time now is 01:10.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.