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 05:04.

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