2012-05-10 4 views
-2

Я пытаюсь закодировать массив, который отображает определенный набор продуктов в зависимости от пола зарегистрированного пользователя. Массивы действительно не проблема, но те части, где я собираюсь проверить базу данных, а затем создать условное утверждение из результатов, является основной проблемой, о которой я думаю.условные массивы

Вот мой код:

<?php 

include"config.php" or die "cannot connect to server"; 

$gender=$_POST['gender']; 



    $qry ="SELECT * FROM server WHERE gender ='$gender'"; 
    $result = mysql_query($qry); 


    $productdetails; 
    $productdetails1["Product1"] = "£8"; 
    $productdetails1["Product2"] = "£6"; 
    $productdetails1["Product3"] = "£5"; 
    $productdetails1["Product4"] = "£6"; 
    $productdetails1["Product5"] = "£4"; 
    $productdetails2["Product6"] = "£8"; 
    $productdetails2["Product7"] = "£6"; 
    $productdetails2["Product8"] = "£5"; 
    $productdetails2["Product9"] = "£6"; 
    $productdetails2["Product10"] = "£4"; 

     if (mysql_num_rows($result) = 1) { 
     foreach($productdetails1 as $key => $value){ 
      echo "Product: $key, Price: $value <br />"; 
      } 
     }     
     else { 
     foreach($productdetails2 as $key => $value) { 
      echo "Product: $key, Price: $value <br />"; 
      } 
     } 
?> 
+5

Пол должен быть дезинфицирован перед использованием в запросе sql. Это просто просьба об инъекции. – Blake

+7

И в чем же проблема? Какой результат вы получаете? С каким входом? Вы должны быть более конкретными, просто говоря: «У меня проблема с этим», не так много работать. Поскольку мы даже не можем запускать код (у нас нет базы данных), вам нужно предоставить дополнительную информацию. –

+0

Точная проблема: я получаю сообщение «Неустранимая ошибка: не могу использовать возвращаемое значение функции в контексте записи в F: \ xampp \ htdocs \ account.php в строке 65», когда я пытаюсь выполнить код. – northmanWebber

ответ

2

Вас, если утверждение неверно. = - оператор назначения, вы должны использовать comparison operator, как == или ===

0

Что происходит с текущим кодом?

Некоторые советы: Сначала попробуйте повторить $ gender, чтобы убедиться, что он проходит. Он отправляется через почту, что происходит, если ничего не публикуется? Откуда это? Вы должны попытаться использовать get вместо этого. Это похоже на то, что вы дали бы кому-то ссылку, поэтому сообщение здесь не имеет смысла. Вы всегда можете иметь и то и другое, и просто получать сообщение, если оно существует, иначе использовать в противном случае по умолчанию «мужчина» или «женщина» в зависимости от вашей аудитории.

Далее, что выводит ваш запрос? На данный момент это может быть пустым, если пол ничего не возвращает. Кажется, что вы запрашиваете для всех строк, где gender = все, что было передано, но тогда ваш запрос if спрашивает, было ли что-нибудь возвращено? Тогда все, что вы делаете, идет в массивы, но вы не должны делать этого, вы должны выводить то, что вы получили из БД. Предполагая, что у вас действительно есть продукты в таблице, называемой сервером, вы должны сделать что-то вроде этого:

$products = mysql_query("SELECT * FROM server WHERE gender ='$gender"); 

while($product = mysql_fetch_array($products)){ 
    echo $product['name'] . " " . $product['price']. " " . $product['gender']; 
    echo "<br />"; 
} 

На этой ноте. Вы действительно должны называть свою таблицу чем-то другим, например продуктом, а не только «сервером», если только сервер не означает таблицу, заполненную экземплярами официантов или компьютерного оборудования.