לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 03-07-2006, 19:31
  -=Dark_Moon=- -=Dark_Moon=- אינו מחובר  
 
חבר מתאריך: 17.06.06
הודעות: 257
[SQL] לפעמים יש ויכוח לא הגיוני:(

יש בעיה מוזרה...

הסיפור:
אני יודע שהרבה פעמים כותבים אין תמיכה במסן וכדומה אבל בינינו אף אחד אל מתייחס ומגיעים למצבים מעצבנים...
נתנו לי קוד ענקי של מתחיל (לא הרבה זמן ב-PHP) ושיפצתי לו את כל הקוד (לא השארתי משהו דומה)...
אבל הגעתי לחלק של השאלתיה והיא לא עובדת
קוד:
SELECT t.forum_id,t.title,t.content,t.start_date,p.conten t,p.start_date,m.id,m.name,m.race,m.group FROM forums_topics t, members m, forums_posts p WHERE t.id=$id and m.id=t.starter_id and p.topic_id=$id and m.id=p.writer_id LIMIT 10

אבל כאשר מפרידים בשאלתיה את הטבלאות זה פתאום עובד...
קוד PHP:
<?php
function htmlpage ($row,$date,$monarray,$mon,$racearray,$grouparray)   {
echo <<<EOF
<tr bgcolor="#BDDAF1">
<td width="20%" style="padding: 5px;" align="center">
<b><a href="javascript:;" onClick="window.open('profile.php?id=
{$row['id']}','','width=500,height=300')">{$row['name']}</a></b>
</td>
<td width="80%" style="padding: 5px;">פורסם ב: 
{$date['mday']} ל{$monarray[$mon-1]}{$date['year']}</td>
</tr>
<tr bgcolor="#BDDAF1">
<td width="20%" style="padding-top: 5px; padding-bottom: 5px; padding-left: 5px; padding-right: 25px;">
<img src="template/images/avatars/
{$row['race']}.gif" border="1" alt="תמונת תצוגה"><br />
<span style="font-size: 10px">
סוג: 
{$racearray[$row['race']]}<br />
דרגה: 
{$grouparray[$row['group']-1]}<br />
הודעות בפורומים: 111 <br />
משתמש מספר: 
{$row['id']}<br />
</span>
</td>
<td width="80%" style="padding: 5px;" valign="top">
{$row['content']}</b></td>
</tr>
EOF;
}
$id = (int) $_GET['showtopic'];
$monarray = array("ינואר","פבואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר");
$racearray = array(
"kon" => "אביר",
"ninja" => "נינג'ה"
);
$grouparray = array("מנהלים ראשיים","משתמש רגיל"); 
$result mysql_query("SELECT t.forum_id,t.title,t.content,t.start_date,m.id,m.n  ame,m.race,m.group
FROM forums_topics t, members m 
WHERE t.id=
$id and m.id=t.starter_id") or die(mysql_error());
$row mysql_fetch_array($result);
$date getdate($row['start_date']);
$mon $date['mon'];
$fid $row['forum_id'];
$forumname mysql_query("SELECT id,name FROM forums WHERE id=$fid");
$x mysql_fetch_array($forumname);
echo <<<EOF
<span style="font-size: 22px;"><b><a href="forums.php">פורומים</a></b></span><br />
<hr color="#000000" size="1">
<table width="100%" border="0">
<tr bgcolor="#ADD1ED" height="20">
<td colspan="2"><b>
<a href="forums.php?showforum=
{$x['id']}">{$x['name']}</a>
:: 
{$row['title']}</b></td>
</tr>
EOF;
htmlpage ($row,$date,$monarray,$mon,$racearray,$grouparray)  ;
$result mysql_query("SELECT p.content,p.start_date,p.start_date,m.id,m.name,m.  race,m.group
FROM members m, forums_posts p 
WHERE p.topic_id=
$id and m.id=p.writer_id 
LIMIT 9"
) or die(mysql_error());
while (
$row mysql_fetch_array($result)) {
$date getdate($row['start_date']);
$mon $date['mon'];
htmlpage ($row,$date,$monarray,$mon,$racearray,$grouparray)  ;
}
?>


נ.ב:
הינה הקוד ללא הפיצול שאלתיה...
קוד PHP:
<?php
$id 
= (int) $_GET['showtopic']; 
$result mysql_query("SELECT t.forum_id,t.title,t.content,t.start_date,p.conten  t,p.start_date,m.id,m.name,m.race,m.group
FROM forums_topics t, members m, forums_posts p 
WHERE t.id=
$id and m.id=t.starter_id and p.topic_id=$id and m.id=p.writer_id 
LIMIT 10"
) or die(mysql_error());
$monarray = array("ינואר","פבואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר");
$racearray = array(
"kon" => "אביר",
"ninja" => "נינג'ה"
);
$grouparray = array("מנהלים ראשיים","משתמש רגיל");
while (
$row mysql_fetch_array($result)) {
$date getdate($row['start_date']);
$mon $date['mon'];
if (
$ok != 1) {
$fid $row['forum_id'];
$forumname mysql_query("SELECT id,name FROM forums WHERE id=$fid");
$x mysql_fetch_array($forumname);
echo <<<EOF
<span style="font-size: 22px;"><b><a href="forums.php">פורומים</a></b></span><br />
<hr color="#000000" size="1">
<table width="100%" border="0">
<tr bgcolor="#ADD1ED" height="20">
<td colspan="2"><b>
<a href="forums.php?showforum=
{$x['id']}">{$x['name']}</a>
:: 
{$row['title']}</b></td>
</tr>
EOF;
$ok 1;
}
echo <<<EOF
<tr bgcolor="#BDDAF1">
<td width="20%" style="padding: 5px;" align="center">
<b><a href="javascript:;" onClick="window.open('profile.php?id=
{$row['id']}','','width=500,height=300')">{$row['name']}</a></b>
</td>
<td width="80%" style="padding: 5px;">פורסם ב: 
{$date['mday']} ל{$monarray[$mon-1]}{$date['year']}</td>
</tr>
<tr bgcolor="#BDDAF1">
<td width="20%" style="padding-top: 5px; padding-bottom: 5px; padding-left: 5px; padding-right: 25px;">
<img src="template/images/avatars/
{$row['race']}.gif" border="1" alt="תמונת תצוגה"><br />
<span style="font-size: 10px">
סוג: 
{$racearray[$row['race']]}<br />
דרגה: 
{$grouparray[$row['group']-1]}<br />
הודעות בפורומים: 111 <br />
משתמש מספר: 
{$row['id']}<br />
</span>
</td>
<td width="80%" style="padding: 5px;" valign="top">
{$row['content']}</b></td>
</tr>
EOF;
}
?>

הקוד ללא הפיצול לא מציג לי את האשכול עצמו ורק את התגובות!

אני אשמח לתיקונים, שיפורים וקיצורים!

נערך לאחרונה ע"י -=Dark_Moon=- בתאריך 03-07-2006 בשעה 19:35.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 04-07-2006, 23:56
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 1 שנכתבה על ידי -=Dark_Moon=- שמתחילה ב "[SQL] לפעמים יש ויכוח לא הגיוני:("

שוב ושוב: הודעות ארוכות גורמות לכך שלא קוראים כלום, תקח את זה בחשבון כשאתה מציג לנות יותר מדי קוד

בכל אופן קראתי עד הצגת השאילתה בתחילה, והיות ולטענתך הבעיה קשורה לשאילתה, נתחיל מהבדיקה הבאה:
תריץ את הקוד הבא כדי לראות אם והיכן יש בעיה בשאילתה:
קוד PHP:
 mysql_queery('SELECT t.forum_id,
                t.title,
                t.content,
                t.start_date,
                p.content,
                p.start_date,
                m.id,
                m.name,
                m.race,
                m.group
            FROM
                forums_topics t,
                members m,
                forums_posts p 
            WHERE
                t.id=$id
                AND m.id=t.starter_id
                AND p.topic_id='
.$id.'
                AND m.id=p.writer_id 
            LIMIT 10'
);
echo 
mysql_error(); 
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 05-07-2006, 23:04
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
בתגובה להודעה מספר 12 שנכתבה על ידי -=Dark_Moon=- שמתחילה ב "דווקא כשצופים בזה דיי ברור..."

לך אולי זה נראה ברור מי לצרף לאן, אבל תחשוב שהבקשות שלך מהשרת אינן מובנות מאליהן - אדרבא, אתה צריך לבקש ממנו את הנתונים באופן מפורש ומפורט ביותר. בשאילתה הנ"ל, מבחינתו רק אם תנאי מסוים עונה על כל האפשרויות הוא יוצר לך רשומה כזו.
מה שאתה עושה פה זה בעצם JOIN שקוף. כשאתה מאחד כמה השוואות מטבלאות שונות, לSQL, ולא משנה איזה, אין ברירה אלא להניח שהתכוונת ל NATURAL/INNER JOIN - מה שאומר - כל מה שעונה על כל אלו גם יחד.

אתה צריך סוגים שונים של JOINים - בעקרון אין יותר מידי אבל צריך לדעת להשתמש בהם.
אפשר כמובן להשתמש בשאילתות פנימיות בסוגים שונים וגם בגרסאות שונות של מסדי נתונים - אבל זה לשיקולך.

אני ממליץ לך לקרוא (ולהסתכל על התרשימים) במאמר כדי לקבל מושג על ההבדלים בין הJOINים השונים - ברגע שתבין את זה, זה יראה לך כמעט שקוף (למעט כתיבת הקוד) איך לבצע את השאילתה שאתה רוצה.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 02:48

הדף נוצר ב 0.07 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר