שאלה - תחביר ב- php

oz elharar

New member
שאלה - תחביר ב- php

שלום לכם, יש לי את השאילתא הבאה:
$query = mysql_query("select * from $idt where top_id = 0 ORDER BY RAND() LIMIT 1") or die(mysql_error());​
כמו שאתם רואים זה שחשוב לי שגם ישלוף רק את מה ש- top_id שווה לאפס, גם שיבחר בצורה רנדומלית וגם שיבחר רק אחד.. עד פה הצלחתי, עכשיו אני רוצה להוסיף לכל זה שיבחר רק מתוך 30 הערכים האחרונים, ז"א שיבחר ערך רנדומלי בדיוק כמו שכתוב עכשיו רק שהערך הרנדומלי הנ"ל יהיה מתוך 30 הערכים האחרונים שבטבלה ואת זה אני לא יודע איך לעשות.. תודה רבה!
 
אני חושב שתצטרך קודם לשלוף

כמה רשומות קיימות בטבלה ע"י פונקציית Count ואז להשתמש במס':
$count = mysql_query('SELECT Count('fld') as cnt FROM tbl'); $count = mysql_fetch_array($count); $count = $count[0]; $offset = $count-30; $query = mysql_query("select * from $idt where top_id = 0 ORDER BY RAND() LIMIT $offset, $count") or die(mysql_error());​
 

oz elharar

New member
כן אבל פה הוא לא שולף רק אחד

בשלי הוא שולף רק אחד ופה הוא שולף יותר נכון ?
 
תת שאילתא

$count = mysql_query('SELECT Count('fld') as cnt FROM tbl'); $count = mysql_fetch_array($count); $count = $count[0]; $offset = $count-30; $query = mysql_query("select * from (SELECT * FROM $idt LIMIT $offset, $count) as tbl where top_id = 0 ORDER BY RAND() LIMIT 1") or die(mysql_error())​
 

oz elharar

New member
:(

עדיין לא ): תראה, זה הקוד
$count = mysql_query("SELECT Count('fld') as cnt FROM $idt"); $count = mysql_fetch_array($count); $count = $count[0]; $offset = $count-30; $query = mysql_query("select * from ("SELECT * FROM $idt LIMIT $offset, $count") as $idt where top_id = 0 ORDER BY RAND() LIMIT 1") or die(mysql_error());​
 

oz elharar

New member
עדיין.. זו השגיאה שאני מקבל:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM 104_mesg LIMIT 15474, 15504) where top_id = 0 OR​
הקוד:
$count = mysql_query("SELECT Count('fld') as cnt FROM $idt"); $count = mysql_fetch_array($count); $count = $count[0]; $offset = $count-30; $query = mysql_query ("select * from (SELECT * FROM $idt LIMIT $offset, $count) as $idt where top_id = 0 ORDER BY RAND() LIMIT 1") or die(mysql_error());​
וכל הכבוד על הרצון הטוב ועל הסבלנות
 
מממ...

$howmuch = 30; $offset = $count-$howmuch; $query = mysql_query ("select * from (SELECT * FROM $idt LIMIT $offset, $howmuch) as tbl where top_id = 0 ORDER BY RAND() LIMIT 1") or die(mysql_error());​
 

Macpire

New member
ואם שוב תקבל שגיאה שים לב לשורה ..

הזאת.. אם אני לא טועה אז צריך '' מסביב לנתון משמע: as tbl where top_id = 0 ORDER as tbl where top_id = '0' ORDER בהצלחה
 

oz elharar

New member
שוב שגיאה, אם ובלי הגרש..

אין איזו תוכנה שיכולה לסרוק את התחביר בטקסט ? שגיאה:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM 108_mesg LIMIT 30652, 30) as 108_mesg where top_i​
הקוד:
$howmuch = 30; $offset = $count-$howmuch; $query = mysql_query ("select * from (SELECT * FROM $idt LIMIT $offset, $howmuch) as $idt where top_id = 0 ORDER BY RAND() LIMIT 1") or die(mysql_error());​
 

oz elharar

New member
אני מקפיץ שוב.. בבקשה זה חשוב

אם מישהו יכול לעבור על האשכול ולראות
 
למעלה