Вставка и выбор нескольких таблиц из MySQL с использованием параметров HTML

 <form action="postad1.php" method="post">
 <p>Category</p>         
 <select name="categories">
 <option name="" value=""><br></option>
    <option name="Electronics" value="Electronics">Electronics<br></option>
    <option name="Misc" value="Misc">Miscellaneous<br><br></option>
    <option name="Free" value="Free">Free Stuff<br></option>
    <option name="ISO" value="ISO">Looking For<br></option>
    <option name="Appliances" value="Appliances">Appliances<br></option>
    </select>

 <p>Name</p>
 <input type="text" name="Name"><br>
 <p>Descriptiom</p>
    <textarea type="text" name="Message" cols="40" rows="5" ></textarea><br>
    <input type="date" name="date">
    <input type="submit">
    </form>

Моя база данных будет выглядеть примерно так... table_Free-Name, date, Message
table_Elec-Name, date, Message
table_Misc-Name, date, Message
table_Appl-Name, date, Message
table_Iso — имя, дата, сообщение

Это форма, которую я пытаюсь заставить работать. Я хотел бы выбрать таблицу из моей опции «выбрать», а затем вставить информацию в конкретную таблицу в моей базе данных. Прямо сейчас я могу хранить и отображать информацию в одной таблице, но я очень новичок в PhP и MySQL. Я искал повсюду, но не могу понять... любая помощь будет полезна. Я хочу, чтобы результат выбирал таблицу в раскрывающемся списке, а затем вся информация сохранялась в выбранной таблице из раскрывающегося меню.

Вот мой php, который я использую для информации в одну таблицу.

 <?php

 $Name = mysqli_real_escape_string($con, $_POST['Name']);
 $Message = mysqli_real_escape_string($con, $_POST['Message']);
 $sql="INSERT INTO Free (Name, Message)
 VALUES ('Name', 'Message')";
 if (!mysqli_query($con,$sql)) {
     die('Error: ' . mysqli_error($con));
  } 

  echo "<br>$Name <br> $Message <br> was added to the database."; 
  echo '<br>Check your post 
  <a href="#">here</a>';
  mysqli_close($con);
  ?>

person Lauer    schedule 15.06.2014    source источник


Ответы (3)


Вам просто нужно будет передать имя таблицы в качестве переменной, как и ваши другие 2 поля.

Что-то вроде этого:

$table = mysqli_real_escape_string($con, $_POST['categories']);
$Name = mysqli_real_escape_string($con, $_POST['Name']);
$Message = mysqli_real_escape_string($con, $_POST['Message']);
$sql="INSERT INTO `{$table}` (Name, Message)
VALUES ('{$name}', '{$Message}')";

Это немного проясняет ситуацию?

person Kirk Logan    schedule 15.06.2014
comment
Я постараюсь. Если это так просто, я буду очень зол. Я возился с этим последние 11 часов, ха-ха. Дам знать, спасибо! - person Lauer; 15.06.2014
comment
Кажется, успешно, просто пока не вижу информацию в базе данных. Я даю ему еще 10 минут или около того. Спасибо! - person Lauer; 15.06.2014
comment
Рад, что это сработало для вас! Не стесняйтесь спрашивать, нужна ли вам дополнительная помощь - person Kirk Logan; 15.06.2014

Самый простой способ сделать это — изменить значения опций в вашем HTML, чтобы они соответствовали именам ваших таблиц.

например: изменить значение = "Электроника" на: значение = "table_Elec-Name"

Обязательно напишите какой-нибудь код, чтобы предотвратить отправку пустой опции, поскольку у вас есть: option name="" value="" в вашем html

Теперь на стороне php получите опубликованное значение параметра и сохраните его в переменной. $mytable = $_POST['категории']

Теперь измените свой sql на:

$sql="INSERT INTO `".$mytable."` (Name, Message)
 VALUES ('Name', 'Message')";

Должно работать нормально.

person Len_D    schedule 15.06.2014
comment
Вы также правы. Я не знаю, как писать код для пустой опции, лол. Я знаю, что это понадобится, но мне нужно будет провести некоторые исследования - person Lauer; 15.06.2014

Попробуй это:

<?php

$Name = mysqli_real_escape_string($con, $_POST['Name']);
$Message = mysqli_real_escape_string($con, $_POST['Message']);

if(isset($_POST['categories']) && $_POST['categories'] == "")
{
    $sql = "";
    switch($_POST['categories'])
    {
        case "Electronics":
            $sql = "INSERT INTO Elec (Name, Message) VALUES ('$Name', '$Message')";
            break;
        case "Misc":
            $sql = "INSERT INTO Misc (Name, Message) VALUES ('$Name', '$Message')";
            break;
        case "Free":
            $sql = "INSERT INTO Free (Name, Message) VALUES ('$Name', '$Message')";
            break;
        case "ISO":
            $sql = "INSERT INTO Iso (Name, Message) VALUES ('$Name', '$Message')";
            break;
        case "Appliances":
            $sql = "INSERT INTO Appl (Name, Message) VALUES ('$Name', '$Message')";
            break;
    }

    if (!mysqli_query($con,$sql)) {
        die('Error: ' . mysqli_error($con));
    }

    echo "<br>$Name <br> $Message <br> was added to the database.";
    echo '<br>Check your post  <a href="#">here</a>';
    mysqli_close($con);
}
?>
person dxb_dev    schedule 15.06.2014
comment
Сценарий других парней работал идеально. Я думал об этом, но я пропустил тип переменной или что-то в этом роде. Спасибо за помощь! - person Lauer; 15.06.2014