הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [php] אף פעם לא הסתבכתי עם קטגוריות כל כך.. (https://hosts.co.il/forums/showthread.php?t=23436)

-roee- 06-06-06 20:13

[php] אף פעם לא הסתבכתי עם קטגוריות כל כך..
 
שלום..
אני בונה מערכת פורומים ונתקלתי בבעיה..

בדף הכי ראשון (INDEX) אני מוציא מהטבלאות את הפורומים ואת הקטגוריות...
יש לי שאילתה להוצאת הקטגוריות ויש לי שאילתה להוצאת הפורומים..
ותמיד שאני מנסה לסדר אותם ביחד זה לא יוצא....

הנה הקוד:
PHP קוד:

$categories mysql_query("select * from forums_cats order by id desc");
while(@(
$cat=mysql_fetch_array($categories))) {
$cat_id $cat["id"];
$cat_name $cat["name"];

$sql mysql_query("SELECT * FROM forums WHERE forum_cat='$cat_id' ORDER BY forum_order") or die(sqlerror(__LINE__));
while(@(
$row=mysql_fetch_array($sql))) {
$forum_id $row["forum_id"];
$forum_name $row["forum_name"];
$forum_desc $row["forum_desc"];
$forum_icon $row["forum_icon"];
$topics_count $row["topics_count"];
$posts_count $row["posts_count"];
$last_post mysql_query("SELECT * FROM topics WHERE forum_id='$forum_id' ORDER BY topic_id DESC") or die(sqlerror(__LINE__));
$l mysql_fetch_array($last_post);
$topic_last_post_name $l["topic_last_post_name"];
$topic_last_post_time $l["topic_last_post_time"];
$n mysql_num_rows($last_post);
$user_query mysql_query("SELECT * FROM users WHERE username='$topic_last_post_name'") or die(sqlerror(__LINE__));
$u mysql_fetch_array($user_query);
$poster_id $u["id"];
if(
$topic_last_post_name == "admin") { $topic_last_post_name "<font color='red'>Admin</font>"; }
if(
$n == "") { $topic_last_post_time ""; }
if(
$n == "") { $topic_last_post_name "&agrave;&oacute; &ocirc;&ograve;&iacute;"; }
if(
$forum_icon == ""){
$icon "&nbsp;";
} else {
$icon "<img src=\"images/icons/$forum_icon\" border=\"0\">";
}

echo 
"<b>$cat_name</b><br>$forum_name<br>";
}


השורה האחרונה שמדפיסה את השם של הקטגוריה (cat_name) ואת השם של הפורום(forum_name) מודפסת בדף ככה:

קטגורית בדיקה שניה
תמיכה ב PHP
קטגורית בדיקה
פורום באגים במערכת
קטגורית בדיקה
רעיונות לפיתוח המערכת
קטגורית בדיקה
עזרה ב HTML / CSS / JavaScript


כמו שאפשר להבין, יש 2 קטגוריות במערכת...
אבל למה כל פעם שיש פורום אחר אז זה רושם את השם של הקטגוריה עוד פעם?
הוא רשם את השם "קטגורית בדיקה" 3 פעמים כי יש בקטגוריה הזאת 3 פורומים..

איך מתקנים את זה שזה ירשום רק פעם אחת?
תודה

BBman 06-06-06 20:21

יכול להיות מאוד , איני בטוח , תדפיס את שם הקטגוריה מחוץ ללולאה הפנימית שקוראת את הפורומים, כיוון שע"פ הבנת הקוד אפשר לראות כי הדפסת לכל פורום את הקטגוריה מחדש, אך שוב , איני בטוח.

Alter 06-06-06 22:27

מור צודק.
את ההדפסה של הקטגוריות עשית בתוך הwhile השני, ככה שכל פעם שהוא מדפיס פורום הוא מדפיס קטגוריה, תוציא את ההדפסה של השם של הקטגוריה לwhile הראשון, ואז הוא ידפיס קטגוריה, את כל הפורומים שיש בה, ואז את הקטגוריה הבאה ואת כל הפורומים שבה וכך הלאה.
בהצלחה!

-roee- 07-06-06 13:20

ציטוט:

נכתב במקור על ידי Alter
מור צודק.
את ההדפסה של הקטגוריות עשית בתוך הwhile השני, ככה שכל פעם שהוא מדפיס פורום הוא מדפיס קטגוריה, תוציא את ההדפסה של השם של הקטגוריה לwhile הראשון, ואז הוא ידפיס קטגוריה, את כל הפורומים שיש בה, ואז את הקטגוריה הבאה ואת כל הפורומים שבה וכך הלאה.
בהצלחה!


לא הבנתי ממש מההסבר..
אתה יכול להדגים לי את זה על הקוד?

תודה

BBman 07-06-06 13:54

PHP קוד:

categories mysql_query("select * from forums_cats order by id desc"); 
while(@(
$cat=mysql_fetch_array($categories))) { 
$cat_id $cat["id"]; 
$cat_name $cat["name"]; 

$sql mysql_query("SELECT * FROM forums WHERE forum_cat='$cat_id' ORDER BY forum_order") or die(sqlerror(__LINE__)); 
while(@(
$row=mysql_fetch_array($sql))) { 
$forum_id $row["forum_id"]; 
$forum_name $row["forum_name"]; 
$forum_desc $row["forum_desc"]; 
$forum_icon $row["forum_icon"]; 
$topics_count $row["topics_count"]; 
$posts_count $row["posts_count"]; 
echo 
"<b>$cat_name</b><br>";
$last_post mysql_query("SELECT * FROM topics WHERE forum_id='$forum_id' ORDER BY topic_id DESC") or die(sqlerror(__LINE__)); 
$l mysql_fetch_array($last_post); 
$topic_last_post_name $l["topic_last_post_name"]; 
$topic_last_post_time $l["topic_last_post_time"]; 
$n mysql_num_rows($last_post); 
$user_query mysql_query("SELECT * FROM users WHERE username='$topic_last_post_name'") or die(sqlerror(__LINE__)); 
$u mysql_fetch_array($user_query); 
$poster_id $u["id"]; 
if(
$topic_last_post_name == "admin") { $topic_last_post_name "<font color='red'>Admin</font>"; } 
if(
$n == "") { $topic_last_post_time ""; } 
if(
$n == "") { $topic_last_post_name "&agrave;&oacute; &ocirc;&ograve;&iacute;"; } 
if(
$forum_icon == ""){ 
$icon "&nbsp;"
} else { 
$icon "<img src=\"images/icons/$forum_icon\" border=\"0\">"


echo 
"$forum_name<br>"




-roee- 07-06-06 14:40

זה עדיין מציג את אותו דבר.....

BBman 07-06-06 15:02

צודק , לא שמתי לב :


PHP קוד:

categories mysql_query("select * from forums_cats order by id desc");  
while(@(
$cat=mysql_fetch_array($categories))) {  
$cat_id $cat["id"];  
$cat_name $cat["name"];  
echo 
"<b>$cat_name</b><br>"
$sql mysql_query("SELECT * FROM forums WHERE forum_cat='$cat_id' ORDER BY forum_order") or die(sqlerror(__LINE__));  
while(@(
$row=mysql_fetch_array($sql))) {  
$forum_id $row["forum_id"];  
$forum_name $row["forum_name"];  
$forum_desc $row["forum_desc"];  
$forum_icon $row["forum_icon"];  
$topics_count $row["topics_count"];  
$posts_count $row["posts_count"];  
$last_post mysql_query("SELECT * FROM topics WHERE forum_id='$forum_id' ORDER BY topic_id DESC") or die(sqlerror(__LINE__));  
$l mysql_fetch_array($last_post);  
$topic_last_post_name $l["topic_last_post_name"];  
$topic_last_post_time $l["topic_last_post_time"];  
$n mysql_num_rows($last_post);  
$user_query mysql_query("SELECT * FROM users WHERE username='$topic_last_post_name'") or die(sqlerror(__LINE__));  
$u mysql_fetch_array($user_query);  
$poster_id $u["id"];  
if(
$topic_last_post_name == "admin") { $topic_last_post_name "<font color='red'>Admin</font>"; }  
if(
$n == "") { $topic_last_post_time ""; }  
if(
$n == "") { $topic_last_post_name "&agrave;&oacute; &ocirc;&ograve;&iacute;"; }  
if(
$forum_icon == ""){  
$icon "&nbsp;";  
} else {  
$icon "<img src=\"images/icons/$forum_icon\" border=\"0\">";  
}  

echo 
"$forum_name<br>";  
}  


נסה עכשיו.

-roee- 07-06-06 18:20

וואי סבבה ממש תודה רבה עזרתם לי מלא אבל עכשיו יש לי עוד בעיה..
לשלב את זה עם HTML...

ככה נראה הקוד HTML:

HTML קוד:

<table cellpadding=\"4\" cellspacing=\"1\" border=\"1\" bordercolor=\"$bordercolor\" width=\"95%\" align=\"center\">

<tr align=\"center\">
<td width=\"100%\" class=\"title\">[B]$cat_name[/B]</td>
</tr>
        <tr align=\"center\">
          <td class=\"title\">&nbsp;</td>
          <td align=\"right\" class=\"title\">פורום</td>
          <td class=\"title\">הודעה אחרונה</td>
          <td class=\"title\">אשכולות</td>
          <td class=\"title\">הודעות</td>
        </tr>



        <tr align=\"center\">
          <td>$icon</td>
          <td align=\"right\"><a href=\"index.php?act=forums&op=showforum&id=$forum_id\">$forum_name</a><br>$forum_desc</td>
          <td><a href=\"index.php?act=profile&id=$poster_id\">$topic_last_post_name</a><br>$topic_last_post_time</td>
          <td>$topics_count</td>
          <td>$posts_count</td>
        </tr>


</table>
</div>
</div>
<br>


אני לא מצליח לשלב את כל השטויות האלה... את השם של הקטגוריה עם הפורומים שבקטגוריה..


תודה:)

Ran1989 07-06-06 18:29

יש לי שאלה..
 
יש לי שאלה
אני לא מנסה לפגוע...
אבל תחשב שוב שאם אתה לא מצליח לעשות דברים כה פשוטים
איך אתה רוצה להתחיל לבנות מערכת פורומים?

-roee- 07-06-06 18:42

אם אתה חכם גדול אז בוא תשלב לי את זה שהשם של הקטגוריה יופיע עם HTML פעם אחת בכל הפעמים שהלולאה שבודקת באיזה קטגוריה נמצא כל פורום... וגם הפורום יהיה ב HTML
כשתצליח תגיד לי


כל הזמנים הם GMT +2. הזמן כעת הוא 01:38.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ