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

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



  #6  
ישן 23-07-2005, 11:36
  Omri.L Omri.L אינו מחובר  
 
חבר מתאריך: 21.01.05
הודעות: 418
אמממ....
בתגובה להודעה מספר 5 שנכתבה על ידי Excaliber שמתחילה ב "מודה שהכתיבה לא הייתה..."

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

א-ו שפשוט תשים בכל התיבות האלו - את האפשרות doesnt matter, ותיצור את השאילתא ל-mysql בדרך כזאת:
קוד PHP:
 // בחלק הראשון אני מוודא אם כל אחד מהפריטים שלא חובה סומנו או לא
// אם הם סומנו נתייחס אליהם, אם לא, לא.
if($_GET['color'] != "doesnt matter") {
  
$color $_GET['color'];
  
$string[] = "color = \"$color\"";
}
if(
$_GET['ogg'] != "doesnt matter") {
  
$ogg $_GET['ogg'];
  
$string[] = "ogg = \"$ogg\"";
}
//כאן נתחיל לבנות את השאילתא ל-mysql
$finall "SELECT * FROM `iriver` WHERE ";
// כאן נבדוק לכמה פריטים כ-ן להתייחס ולהכניס אותם לשאילתא
// ואכן נכניס אותם
// שים לב שהשאילתא צריכה להרשם נכון ולכן זה קצת נראה מסובך
for($i=0;$i<=count($string);$i++) {
  if(
$i == count($string)) {
    
$finall .= $string[$i];
  }
  else {
    
$finall .= $string "AND ";
  }
}
// נבצע‎
$q mysql_query('$finall'); 

נערך לאחרונה ע"י Omri.L בתאריך 23-07-2005 בשעה 11:42.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 24-07-2005, 14:41
  Excaliber Excaliber אינו מחובר  
 
חבר מתאריך: 03.07.05
הודעות: 284
בתגובה להודעה מספר 7 שנכתבה על ידי Excaliber שמתחילה ב "כבר חשבתי על הרעיון של..."

אחרי שקראתי את הקוד קרוב למיליון פעמים... הבנתי אותו.
והוספתי את השורות הבאות כדי לקבל תוצאה ממשית:
קוד PHP:
 $affect=mysql_affected_rows();
    if   (
$affect !="0"){
    echo 
"Here are the results:<BR>";
}
else
{
echo 
"No player found";
}
while (
$row mysql_fetch_array($q)) {

    
$name=$row['name'];
    echo 
$row['name'];
        echo 
" </br><u>Price: " .$row['price']. " NIS</u> <a href=''>More info</a></hr>";
echo 
"<img src=$name.jpg><br> <HR>";

}
mysql_free_result($q); 


ומה שאני מקבל זה זה:
Here are the results:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/apache2/htdocs/iriver.php on line 36

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /usr/local/apache2/htdocs/iriver.php on line 44

מה שאומר שהשאילתא עבדה כי הוא מציג את השורה: "Here are the results" אבל יש בעיה בכל מקרה.

נערך לאחרונה ע"י Excaliber בתאריך 24-07-2005 בשעה 14:47.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #21  
ישן 25-07-2005, 14:34
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 20 שנכתבה על ידי Excaliber שמתחילה ב "כפי שהזכרתי אני מתעסק עם PHP..."

ראשית, בשביל מה שביקשתי לא מגישים שאילתת SELECT, אלא:
קוד:
DESCRIBE iriver;


שנית, לגבי דרישת המשתמש, אם הוא מעונין דווקא עם צבע:
קוד:
SELECT * FROM iriver WHERE color='yes'


אם המשתמש בוחר דווקא בלי צבע:
קוד:
SELECT * FROM iriver WHERE color='no'


ואם הוא בוחר את שניהם, זאת אומרת שלא משנה אם יש צבע או אין:
קוד:
SELECT * FROM iriver


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


ההערה (חיונית):
אם אתה משתמש רק לשני מצבים (כן/לא) אל תיישם את זה בצורה הנוכחית, אלא תשתמש ב-enum('y','n') או פשוט ב-tinyint(1), זה ניהול יעיל [הרבה] יותר, וכמובן יחסוך בזכרון שאתה כרגע מרבה לבזבז.

נערך לאחרונה ע"י ישראל K בתאריך 25-07-2005 בשעה 14:37.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #32  
ישן 25-07-2005, 20:14
  Excaliber Excaliber אינו מחובר  
 
חבר מתאריך: 03.07.05
הודעות: 284
בתגובה להודעה מספר 31 שנכתבה על ידי ישראל K שמתחילה ב "בתיאבון"

אני מקבל את השגיאה הזו:
Here are the results:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/apache2/htdocs/iriver.php on line 24

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /usr/local/apache2/htdocs/iriver.php on line 32

הנה הקוד המשופצר... הוא אמור לעבוד....
קוד PHP:
<?php
$mysql_id 
mysql_connect('localhost''demo''2119789');
mysql_select_db('iriver' ,$mysql_id);
$price $_POST['price'];
$color $_POST['color'];
$size $_POST['size'];
$ogg $_POST['ogg'];
$text $_POST['text'];
$result mysql_query ("SELECT * FROM iriver WHERE " ,$mysql_id);
     if (
$price == "yes" or $price == "no"$result $result." price =".$price;
     if (
$color == "yes" or $color == "no"$result $result." AND color =".$color;
 if (
$size == "yes" or $size == "no"$result $result." AND size =".$size;
 if (
$ogg == "yes" or $ogg == "no"$result $result." AND ogg =".$ogg;
  if (
$text == "yes" or $text == "no"$result $result." AND text =".$text;

    
$affect=mysql_affected_rows();
    if   (
$affect !="0"){
    echo 
"Here are the results:<BR>";
}
else
{
echo 
"No player found";
}
while (
$row mysql_fetch_array($result)) {

    
$name=$row['name'];
    echo 
$row['name'];
        echo 
" </br><u>Price: " .$row['price']. " NIS</u> <a href=''>More info</a></hr>";
echo 
"<img src=$name.jpg><br> <HR>";

}
mysql_free_result($result);
?>
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #36  
ישן 26-07-2005, 15:49
  בונגולים בונגולים אינו מחובר  
 
חבר מתאריך: 19.09.04
הודעות: 223
בתגובה להודעה מספר 1 שנכתבה על ידי Excaliber שמתחילה ב "יצרתי אשף לבחירת נגן אמ פי 3... איך עושים ברירת מחדל\ללא בחירה?"

אני לא מגיב להודעה הנכונה כי היא מוצמדצ שמאלה באופן מטורף כבר.
אתה פשוט שולח את השאילתה ואז מנסה להוסיף לתוצאה...
אתה צריך משתנה של השאילתה שאותו תאתחל עם המחרוזת שתמיד יש (SELECT וכו'), הייתי קורא לו $query לצורך הדוגמה, אח"כ תעשה את הif-ים שמוסיפים לו תנאים, ובסוף תבצע אותה:
קוד PHP:
 $query "SELECT * FROM iriver WHERE ";
if (
tatata$query $query "price = yes" else tatata
וכו
' עוד כמה כאלה
ואז
$result = mysql_query ($query); 

דרך אגב אני הייתי עושה את התנאים בצורה שונה: הייתי עושה מחרוזת לכל תנאי ואז מחבר ביחד. למשל:
קוד PHP:
<?php
  $color_cond 
$ogg_cond ""// מאתחל את התנאים הריקים
  
if ($price == "yes" or $price == "no"$price_cond "price = " $price;
  if (
$color == "yes" or $color == "no"$color_cond " AND color = " $color;
  if (
$ogg == "yes" or $ogg == "no"$ogg_cond " AND ogg = " $ogg;
  
$query "SELECT * FROM iriver WHERE " $price_cond $color_cond $ogg_cond;
  
$result mysql_query ($query ,$mysql_id)
?>

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #37  
ישן 26-07-2005, 16:21
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
אם אני לא טועה, התחביר שלך לא הכי נכון
בתגובה להודעה מספר 36 שנכתבה על ידי בונגולים שמתחילה ב "אני לא מגיב להודעה הנכונה כי..."

אם $price יהיה ריק ה-where בשאילתה יתחיל מהמילה AND עוד לפני התנאי הראשון.
בעיה דומה תיווצר אם נוסיף את המילה "AND" לאחר כל שאילתה, ישאר בסוף AND מיותר.

יש כמובן לא מעט דרכים לפתור את הבעיה, אני עצמי בפעמים שונות השתמשתי בלוגיקה שונה.
קוד PHP:
 if($_POST['name'])
{
    
$sql "name='".$_POST['name']."' AND ";
}
if(
$_POST['family'])
{
    
$sql .= "family='".$_POST['family']."' AND ";
}
if(
$_POST['phone'])
{
    
$sql .= "phone='".$_POST['phone']."' AND ";
}


if(
$sql)
    for (
$i=2$sql[strlen($sql)-$i] != ' '$i++);
        
$sql[strlen($sql)-$i] = '';


$sql "SELECT * FROM users WHERE $sql"


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

כמובן שיש דרכים נוספות ואולי אף קלות ונוחות יותר.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #38  
ישן 26-07-2005, 16:25
  Excaliber Excaliber אינו מחובר  
 
חבר מתאריך: 03.07.05
הודעות: 284
בתגובה להודעה מספר 37 שנכתבה על ידי ישראל K שמתחילה ב "אם אני לא טועה, התחביר שלך לא הכי נכון"

סוף סוף הצלחתי לעשות את השאילתא נכון והכל טוב ויפה(להלן הקוד
קוד PHP:
<?php
$mysql_id 
mysql_connect('localhost''demo''2119789');
mysql_select_db('iriver' ,$mysql_id);
$price $_POST['price'];
$color $_POST['color'];
$size $_POST['size'];
$ogg $_POST['ogg'];
$text $_POST['text'];
$video $_POST['video'];
$must "yes";
$result 'SELECT * FROM iriver WHERE ';

 if (
$color == "yes" or $color == "no")
 
$result =$result  color ='$color' AND"
if (
$ogg == "yes" or $ogg == "no")
 
$result =$result  ogg ='$ogg' AND"
if (
$text == "yes" or $text == "no")
 
$result =$result  text ='$text' AND"
 if (
$video == "yes" or $video == "no")
 
$result =$result  video ='$video' "

$q mysql_query("$result");

    
$affect=mysql_affected_rows() ;
echo 
$result;
echo 
"<BR>";
    if   (
$affect !="0"){
    echo 
"Here are the results:<BR>";
}
else
{
echo 
"No player found";
}
while (
$row mysql_fetch_array($q)) {

    
$name=$row['name'];
    echo 
$row['name'];
        echo 
" </br><u>Price: " .$row['price']. " NIS</u> <a href=''>More info</a></hr>";
echo 
"<img src=$name.jpg><br> <HR>";

}
?>


אבל עדיין יש לי את הבעיה של הAND לפני תנאי וAND בסוף השאילתא...
אני אמור לכתוב תנאי שאומר שבמידה וקיים משתנה לפני הוסף AND ובמידה ולא קיים משהו אחרי אל תוסיף AND....

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

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

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

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

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



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

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

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

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