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

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



  #1  
ישן 10-07-2006, 12:45
צלמית המשתמש של FocksMolder
  FocksMolder FocksMolder אינו מחובר  
 
חבר מתאריך: 21.06.06
הודעות: 15
שלח הודעה דרך ICQ אל FocksMolder שלח הודעה דרך MSN אל FocksMolder
שאילתה לפי דרישות חיפוש - בעיה מסובכת!

היי,
אני משתמש בשפת PHP ו-mysql.
נגיד ויש לי דף חיפוש ויש בו כמה selectים, לדוגמא - אזור מגורים, זכר או נקבה, מקצוע.
אז אני מקבל את הנתונים האלה אחרי ה-form, וב-query של ה-mysql אני רושם (בתרגום לעיברית לדוגמא):
תמצא רשומות איפה שהאזור מגורים=10 והמין=1 והמקצוע=7.
(נגיד והמספרים מצייגים את ה-selectים).

אבל יש גם אופציה ב-selecים שהיא נקראת "לא משנה" - שזה בעצם לא משנה מה האיזור מגורים או המין או המקצוע.
אבל אם מישהו יבחר ב-לא משנה, ה-value של זה בינתיים הוא 0, ואז בשאילתה ה-mysql יחפש רשומות איפה שהאיזור מגורים=0 והמין 1 והמקצוע 7, וזה לא מה שאני רוצה שיקרה!
אני רוצה שפשוט לא יעניין אותו מה האיזור מגורים.

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

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

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 10-07-2006, 13:01
צלמית המשתמש של FocksMolder
  FocksMolder FocksMolder אינו מחובר  
 
חבר מתאריך: 21.06.06
הודעות: 15
שלח הודעה דרך ICQ אל FocksMolder שלח הודעה דרך MSN אל FocksMolder
בתגובה להודעה מספר 2 שנכתבה על ידי DCD שמתחילה ב "קצת בילבלת אותי... אם מישהו..."

נכון, אבל אני לא יכול לדעת מה לא יהיה משנה בשבילו.

יש לי form עם selectים. זה המשפט mysql שלי אחרי זה:
קוד PHP:
 select from tbl where age='$age' and location='$location' and sex='$sex' 

אבל אם מישהו יבחר ב-"לא משנה" ה-value שלו הוא 0 אז המשפט יהיה:

קוד PHP:
 select from tbl where age='10' and location='0' and sex='1' 
המיקום יהיה שווה 0 - וזה לא מה שאמור להיות. לכן הדרך היחידה היא לעשות משפט IF:
אם ניבחר מיקום שווה ל-0 (שזה בעצם ה-לא משנה), אז תיקח את השאילתה הזאת:
קוד PHP:
 select from tbl where age='$age' and sex='$sex' 

בלי המיקום כמו שאתה רואה. אבל אם אני יסדר את הבעיה בדרך הזאת, זה המוןן IFים! המון משפטי תנאי ומשפטי mysql. ואני לא רוצה לפתור את זה בדרך הזאת, כי יש המון אופציות שאנשים יכולים לבחור. אם הם בוחרים שדווקא המין והמקום לא יהיה משנה, או שהמקום יהיה משנה והמין לא, וכו' - כל זה ייקח המון זמן לכתיבה! זה המון משפטים (ד"א אגב בעיקרון יש לי 6 selectים)

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 10-07-2006, 21:23
צלמית המשתמש של FocksMolder
  FocksMolder FocksMolder אינו מחובר  
 
חבר מתאריך: 21.06.06
הודעות: 15
שלח הודעה דרך ICQ אל FocksMolder שלח הודעה דרך MSN אל FocksMolder
בתגובה להודעה מספר 4 שנכתבה על ידי DCD שמתחילה ב "הינה שיטה קלה: [PHP]..."

ציטוט:
במקור נכתב על ידי DCD
הינה שיטה קלה:


קוד PHP:
 $cache ''
# This array contains all the keys that the foreach loop should work on them...
$allowed = array( 'sex',
'location',
'age',
);
foreach($ 
_POST as $k => $v)
{
if (
in_array($k$allowed))
{
$cache .= ! empty($v) ? 'and '.$k.'=\''.$v.'\'' '';
}
}
if (
$cache != '')

$cache 'WHERE '.preg_replace('/^and/','',$cache); # Makes sure there's no "and" at the start...vital!
}
mysql_query("SELECT * FROM tbl ".$cache); 



תעתיק ל-Notepad שתיראה יותר טוב...
אני בטוח שיש שיטה יותר קלה אבל לא זוכר אותה...


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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

הדף נוצר ב 0.04 שניות עם 12 שאילתות

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

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