2015-04-19 3 views
0

Я попытался создать страницу администратора. Администратор заполнит форму, чтобы добавить новый продукт в базу данных и отобразить его на веб-сайте магазина. Проблема в том, что когда я попытался выбрать пол из dropbox, новый продукт не добавит в таблицу продуктов в базе данных, как вы можете видеть ниже: (я хочу выбрать пол, такой как Boys)Как изменить текст опции в php?

Admin страницы и базы данных результат:

enter image description here

код я использовал:

$host = ""; 
       $userMS = ""; 
       $passwordMS = ""; 
       $connection = mysql_connect($host,$userMS,$passwordMS) or die("Couldn't connect:".mysql_error()); 
       $database = "projectDataBase"; 
       $db = mysql_select_db($database,$connection) or die("Couldn't select database"); 

      if (isset($_POST['sAddProduct'])) 
      { 

        addNewProduct(); 
      }else if(isset($_POST['delete'])) 
      { 
      $Product_ID=$_POST['Product_ID']; 
      $mysqlquery="delete from Product where Product_ID= ".$Product_ID.""; 
      mysql_query($mysqlquery); 
        echo "Deleted successfully"; 
        echo("<FORM><INPUT Type='button' VALUE='Back' onClick='history.go(-1);return true;'></FORM>"); 
      }else{ 
        showForm(); 
      }    


      // add new product 
      function addNewProduct() 
      { 
      $ProductName = $_POST['Product_Name']; 
      $ProductPrice = $_POST['Price']; 
      $Gender = $_POST['Gender_ID']; 


      //database query to add product 
      $insertStringProduct = "INSERT into Product(Product_Name, Price,Gender_ID) 
      VALUE('$ProductName', '$ProductPrice', '$Gender')"; 
      $result = mysql_query($insertStringProduct); 



      echo ("<p1>Product added Successfully</p1>"); 
      echo("<FORM><INPUT Type='button' VALUE='Back' onClick='history.go(-1);return true;'></FORM>"); 
} 



    //function for the form page  
      function showForm() 
        {  
         //First form for adding new product 
         $self = htmlentities($_SERVER['PHP_SELF']); 
           echo("<form action = '$self' method='POST'> 
           <fieldset> 
             <legend>Adding New Product</legend> 
             Product Name: <input name='Product_Name' type='text' size = '40'> 
             <br /><br /> 
             Price: <input name='Price' type='text' size = '20'><br><br /> 


             Gender: 
          <select name='Gender_Description'> 
          <option value = '%'> <-- select--></option>"); 

          $dbQuary = " SELECT DISTINCT Gender_Description from Gender"; 
          $result = mysql_query($dbQuary); 

          while($row = mysql_fetch_row($result)){ 
           echo("<option value ='$row[0]'> $row[0]</option>"); 
          } 
          echo(" 
          </select> 


        <br/><br/> 
             <input type='submit' name='sAddProduct' value = 'Add'/> 
             <input type='reset' value='Clear' /> 
           </fieldset> 

           </form>"); 


    }  

результат (не добавил ничего)

Тем не менее, когда я изменить код для

Gender: 
          <select name='Gender_ID'> 
          <option value = '%'> <-- select--></option>"); 

          $dbQuary = " SELECT DISTINCT Gender_ID from Gender"; 
          $result = mysql_query($dbQuary); 

Он работает

enter image description here

Может кто-нибудь помочь мне с этим?

+0

Вы уже описали, как вы изменили код, чтобы заставить его работать. Так в чем же вопрос? – Mureinik

ответ

1

В addNewProduct вы ожидаете, что $_POST['Gender_ID'] будет установлен. Так что, конечно, <select name='Gender_Description'> не сработает, потому что Gender_Description != Gender_ID. Вот почему он работает, когда вы его меняете.

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

$dbQuary = " SELECT DISTINCT Gender_ID, Gender_Description from Gender"; 
$result = mysql_query($dbQuary); 

while($row = mysql_fetch_row($result)){ 
    echo("<option value ='$row[0]'> $row[1]</option>"); 
} 

Security

Ваш код крайне небезопасно. Вы используете mysql_*, который устарел с 2013 года, и вы никоим образом не дезинфицируете ввод, поэтому ваш код открыт для SQL-инъекций (возможно, во всех типах запросов: вставка, обновление, удаление и т. Д., И позволяет утечки данных, DOS и, возможно, выполнение кода и удаление/изменение данных).Предпочтительным способом предотвращения этого являются подготовленные операторы (либо с использованием mysqli_*, либо PDO). Их нетрудно использовать, и полученный код также приятнее.

+0

Спасибо, это было полезно :) –

0

Вы не конкатенации значения, как это должно

Изменить

echo("<option value ='$row[0]'> $row[0]</option>");

в

echo("<option value =". '$row[0]' . "> ". $row[0]. "</option>");

ИЛИ

echo("<option value ='{$row[0]}'> {$row[0]}</option>");

EDIT:

Изменить ваш While-loop в то время как ($ строка = mysql_fetch_array ($ результат, MYSQL_BOTH)) { echo("<option value ='{$row['gender_id']}'> {$row['gender_description']}</option>"); }

Это создаст Выберите список с указанием Пол Описание и и значения будут be numeric (of database)

+0

все еще не работает. Я хочу отобразить текст в папке с отбором, например «Мальчики и девочки». когда я использую Gender_ID, а dropbox показывает номер ID, который работает. Я надеюсь ты понимаешь меня. Ура! –

+0

Могу ли я использовать оператор if, чтобы изменить число на текст или это не работает? –

+0

Я не понимаю вас ... покажите мне ваш гендерный стол – Umair