order by מתנהג אחרת באתר ו - phpmyadmin

  • פותח הנושא ET2k
  • פורסם בתאריך

ET2k

New member
order by מתנהג אחרת באתר ו - phpmyadmin

שלום,

יש לי טבלה עם כמה שדות עיקריים :

מספר סידורי (מספר רץ)
דואר אלקטרוני
שם
הודעה
תאריך העלאה

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

יש לי שאילתא בסיסית שמוציאה רשימה של כתובת מייל ייחודיות לפי ההודעה האחרונה שבעל הכתובת הזו העלה -


SELECT DISTINCT email
FROM board
WHERE CURDATE( ) <= datevent
ORDER BY date DESC
";


תודה
מה שקורא שבבדיקה ב - phpmyadmin, היא עובדת בסדר, אבל בסקריפט שבאתר היא מחזירה לי את הכתובות מייל בסדר הלא נכון

אני די בטוח שזה קשור לכך ש - order by עובד רק אם אני בוחר ב - select גם את השדה לפיו אני ממין, אבל אז השאילתא כבר מציגה רשומות כפולות.

איך אני יכול להתגבר על זה ולקבל את אותה התוצאה גם בסקריפט?
 

ET2k

New member
כן

אני יודע איזו כתובת מייל מקושרת להודעה האחרונה, וזה לא מסודר כמו שצריך בדף עצמו.

date זה התאריך שבו העלו את ההודעה

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

bennysg

New member
date היא מילה שמורה בmysql

ויתכן והשרת לא מבין את השאילתה
 

bnayal

New member
שוב - תביא מבנה של טבלה שעשית,

מצידי שתהיה בה רק עמודת ID,
עם תוכן לדוגמא (מצידי 5 שורות),
עם שאילתה לדוגמא שהסדר של הרשומות הוא לא כמו שביקשת.
כל השאר זה רק דיבור באוויר. משהו אתה עושה לא בסדר...
 

ET2k

New member
אוקי

הקובץ הראשון - זו השאילתה והתוצאות שלה ישר ב- phpmyadmin

בתמונה השנייה זה הפלט של הדף

התמונה השלישית זה המבנה של הטבלה המדוברת

(http://www.macom-tov.co.il/board.php)

כמו שאתם רואים, הכתובת הראשונה שאמורה להיות היא לא של העסק "תות נייר".

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

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


$query_main="SELECT DISTINCT email
FROM board
WHERE CURDATE( ) <= datevent
ORDER BY id DESC
";
$result=mysql_query($query_main);
while ($row=mysql_fetch_array($result)) {
if ($row['name']==NULL)
{
$result_esek=mysql_query("select name from asakim where email='".$row['email']."'");
$name=mysql_result($result_esek,0);
}
else
{
$result_esek=mysql_query("select name from board where email='".$row['email']."'");
$name=mysql_result($result_esek,0);
}
?>
<div class="board_link">
<h2 style="color:green;">מבזקים מ<?=$name?></h2>
</div>


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

ET2k

New member
תמונה של הפלט הנוכחי בדף (זו אותה שאילתא)

 

bnayal

New member
או שאני לא מבין או שאתה לא מבין,

תעשה פלט מסודר לפי ID, ושנראה את הID בפלט ואת השאילתה עצמה...
 

ET2k

New member
זה השתנה, אבל עדיין לא נכון...

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

ניסיתי גם לסדר לפי ה - ID בסדר יורד, וזה עדיין לא פותר את הבעיה.
 

bnayal

New member
מה הבעיה אני לא מבין

השדה של הID מוגדר INT?
אתה עושה לו order לפי השדה ID ומקבל שורות לא לפי הסדר?...
תראה מבנה טבלה ושורות לדוגמא ונוכל לעזור.

בניה
 

Mr360

New member
לא יודע אם זה קשור אבל...

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

ET2k

New member
אני חושב שזו הייתה בעיה לוגית..

כרגע זה בסדר...
 
למעלה