שליפת ערכים מרובים

eyal_sperling

New member
שליפת ערכים מרובים

יש לי טופס שבו יש לי פקד מסוג תיבת רשימה שאני רוצה לאפשר בו בחירה של מספר ערכים . אותו הטופס אמור להעביר את הפרמטרים לדף php שבו אמורה להתבצע שאילתה על הנתונים השאלה שלי איך אני מבצע את משפט ה select בצורה כזו ? כלומר אם במצב רגיל ( חד ערכית) המשפט של היה
select * from products where product_id=$_POST['id']​
מה אני אמור להכניס אחרי ה where ? תודה אייל
 

nezek2003

New member
תראה...

אני לא ניסיתי את זה אבל אני ינסה לתתלך איזה כיוון שאולי יעבוד. יכול להיות שאם תנסה למשוך את הנתונים ב PHP באותו דף אחרי שאתה שולח את הטופס זה יגיע בתוך מערך ואז תוכל לגשת לזה אחד אחד . כי אחרי שאתה שולח טופס אתה יכול לגדת את ה NAME שהגדרת בטופס מה PHP ע"י NAME$. ז"א לעשות COUNT למערך ולהוסיף בשאילתה עם FOR את ה AND ל WHERE וככה להכניס את הכל.
 

nezek2003

New member
משהו כזה

$sql="select * from DB where"; //put the first one here manually for ($i=0;$i<count($parameter_from_form);$i++) $sql=$sql."and $param='$parameter[$i]' ";​
אני מקווה שאתה מבין את הרעיון הכללי מה שכתבתי עלול להיות קצת בעיית במקרי קצה (ראשון ואחרון) לכן אולי תצטרך לעשות את הראשון בצורה ידנית כי הוא כולל את ה WHERE וכל השאר יהיו רק AND והתנאי
 

kensaggy

New member
חפש בתיעוד .של...את...

חפש בתיעוד של MySQL על IN אני דיי בטוח שזה יעזור לך
 

eyal_sperling

New member
עוד לא ממש בדקתי ...

אבל נראה לי שהכיוון הנכון( שלי..) הוא כזה : להשתמש ב implode כדי לייצר מחרוזת המכילה את האיברים של המערך מופרדים בפסיקים ולהכניס את המחרוזת לתוך משתנה . ואז לבצע את השאילתה בצורה כזו
select * from products wher product_id in($x)​
בכל אופן תודה רבה אייל
 

Nomaed Dominus

New member
חשוב מאוד בכזה מקרה

או בכל מקרה של עבודה עם משתנים שמקבלים מה-browser, לעשות mysql_escape_string() לכל משתנה שהוא טקסט, ולהפוך ל-int לכל מספר, כדי שלא יעשו sql injection. סתם נקודה למחשבה
 
למעלה