2016-08-05 2 views
0

Проблема решена: Это решение, благодаря @ dont-panic и всем, кто мне помог!Извлечение 2 значений из разных столбцов из БД только с 1 Выберите

while($row = mysql_fetch_assoc($get)) { 
    $option .= '<option id="opcion" value="'.$row['nombre'].'">' 
        .$row['nombre'] 
       .'</option>'; 
    if (isset($_POST['postre']) && $row['nombre'] == $_POST['postre']) { 
     $preciodelpostre = $row['precio']; 
    } 
} ?> 

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

Таблицы: Postres - postreID (ID статьи), Номбры (наименование статьи), цена (цена статья).

У меня также есть другая таблица под названием «ventas», в которой я хочу сохранить все свои продажи на основе критериев даты, которые уже сделаны.

Таблица: Вентас - идентификатор (продажа идентификатор), Fecha (дата зарегистрированной продажи), postre_vendido (название статьи проданной), ganancia (статья цена).

Это мой код, чтобы зарегистрировать свои продажи:

<?php 
$dbhost = 'db641973975.db.alansete.com'; 
$dbuser = 'dbo675'; 
$dbpass = 'dotCos215'; 
$dbname = 'db643975'; 
$con = mysql_connect($dbhost,$dbuser,$dbpass); 
$db = mysql_select_db($dbname,$con); 
$get=mysql_query("SELECT * FROM Postres ORDER BY postreID ASC"); 
$option = ''; 
while($row = mysql_fetch_assoc($get)) 
{ 
    $option .= '<option id="opcion" value = "'.$row['nombre'].'">'.$row['nombre'].'</option>'; 
} 
?> 
<html> 
<body> 
    <?php 
    $postrevendido = $_POST['postre']; 
    $preciodelpostre = $_POST['precio']; 
    if(isset($_POST['agregar'])){ 
     $sql = "INSERT INTO Ventas (id,fecha,postre_vendido,ganancia) VALUES(NULL,NOW(),'$postrevendido','$preciodelpostre')"; 
     $retval = mysql_query($sql); 

     if(! $retval) { 
      die('Could not enter data: <p></p><a href="ventasdiarias.php" target="_self">Agregar otro articulo</a>' . mysql_error()); 
     } 

     echo "Postre agregado exitosamente!!" . "Volviendo..." . '<p></p><a href="ventasdiarias.php" target="_self">Agregar otro articulo</a>';    
     mysql_close($conn); 

    }else { 
     ?> 
    <form method = "post" action = "<?php $_PHP_SELF ?>"> 
     <p>Producto Vendido 
      <select name="postre" id="postre"> 
       <?php 
       echo $option . '<p></p>'; 

       ?> 
      </select> 
      <input name = "agregar" type = "submit" id = "agregar" 
      value = "Agregar Venta"> 
     </p> 
    </form> 
    <?php }?> 
</body> 
</html> 

В конце концов, это захватывает только первые 3 столбца из (ид, Fecha, postre_vendido, ganancia) и asigns колонке "ganancia" значение 0.

Вы, ребята, знаете, как это решить? Заранее спасибо!

+2

Пожалуйста, замените свой 'db host, user, password' на некоторый фиктивный текст. Не включайте реальные полномочия в вопрос. держите его в секрете – jonju

+0

Является ли столбец 'Id' таблицы' Ventas' Auto_Increment? – jonju

+0

В качестве рекомендации количество испанцев заставляет меня думать, что вы должны спросить [здесь] (http://es.stackoverflow.com/) –

ответ

0

Цена не вставляя, потому что вы не имеете контроля в вашем <form>, что имеет цену, но я думаю, что способ исправить это на самом деле не добавить такой элемент управления. По моему мнению, вам действительно не нужно или хотите, чтобы пользователь вводил цену, вы должны прочитать ее из своей таблицы продуктов во время публикации формы. Существуют различные способы сделать это. Один из способов - установить его по мере того, как вы получаете опции для показа в <select>.

while($row = mysql_fetch_assoc($get)) { 
    $option .= '<option id="opcion" value="'.$row['postreID'].'">' 
        .$row['nombre'] 
       .'</option>'; 
    if (isset($_POST['postre']) && $row['postreID'] == $_POST['postre']) { 
     $preciodelpostre = $row['price']; 
    } 
} ?> 

Если вы делаете это таким образом, не забудьте удалить $preciodelpostre = $_POST['precio']; позже в коде; так как в форме нет элемента управления 'precio'10, это будет перезаписывать предыдущее значение null, которое закончится как 0 в вашей вставленной строке.

+0

То, что мне нужно! Большое вам спасибо, что вы мой герой!Я думаю, потому что некоторые из слов были на испанском языке, вы были немного смущены, я просто изменил несколько вещей, которые я опубликую выше, если кто-нибудь найдет это полезным. –

+0

Добро пожаловать! Я рад, что это сработало для вас. –

+0

Это не так, что я был смущен испанцами; Я действительно предлагаю использовать идентификатор, а не имя, как значение для параметров (он имеет тенденцию быть более надежно уникальным, хотя имя будет нормально, если ваш db имеет уникальный индекс на нем). Конечно, это потребует изменения вашей таблицы Ventas для ссылки на ID, а не на название статьи, но если ID является первичным ключом Postres, он сделает лучший внешний ключ для Ventas. Я должен был сказать это мнение в ответе, а не просто менять код. –

Смежные вопросы