Использование MySQL заполненного таблицей выпадающего списка PHP для вставки выделения в другую таблицу - PullRequest
0 голосов
/ 09 марта 2012

Я создаю веб-приложение, которое поможет определить, чья очередь готовить чай в моем офисе, и сосредоточиться на изучении использования PHP / MySQL.Извинения за невежество новичка.

Для новых пользователей, регистрирующихся, мне нужно заполнить пользовательскую таблицу их выборами из выпадающего списка, который сам заполняется из отдельной таблицы.Поэтому, когда пользователь регистрируется, я хочу, чтобы он выбрал название своего любимого напитка из выпадающего списка / таблицы напитков, и я хочу, чтобы идентификатор этого напитка был сохранен в поле defaultdrink пользовательской таблицы.Я также понимаю, что это должно быть сделано с помощью POST, а не GET.

До сих пор успешно создали форму, которая заполняет БД, и выполнили выпадающий список из БД - но пока не удалось добиться успеха в обоих случаях.

Страница формы ...

   <?php 
require "insert_dropdown.php";
?>

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1">
<tr>
<td><form name="form1" method="post" action="insert_ac.php">
<table width="100%" border="0" cellspacing="1" cellpadding="3">
<tr>
<td colspan="3"><strong>Sign up to the Tea App</strong></td>
</tr>

<tr>
<td width="71">Name</td>
<td width="6">:</td>
<td width="301"><input name="name" type="text" id="name"></td>
</tr>


<tr>
<td colspan="3" align="center"><input type="submit" name="Submit" value="Submit"></td>
</tr>

</table>
</form>
</td>
</tr>
</table>

<?php
$dropdown = "<select name='drinkname'>";
while($row = mysql_fetch_assoc($dresult)) {
  $dropdown .= "\r\n<option value='{$row['drinkname']}'>{$row['drinkname']}</option>";
}
$dropdown .= "\r\n</select>";
echo $dropdown;
?>

Действиями формы управляет insert_ac.php ...

<?php

$host=""; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name="tea"; // Database name 
$tbl_name="users"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Get values from form 
$name=$_POST['name'];
$pref=$_POST['pref']; // Drink preference


// Insert data into mysql 
$sql="INSERT INTO $tbl_name(name, pref)VALUES('$name', '$pref')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful". 
if($result){
echo "Successful";
}

else {
echo "ERROR";
}

// close connection 
mysql_close();
?>

И я заполняю раскрывающийся список с помощью insert_dropdown.php ...

<?php

$host=""; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name="test"; // Database name 


// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Write out our query.
$dquery = "SELECT drinkname FROM drinks";
// Execute it, or return the error message if there's a problem.
$dresult = mysql_query($dquery) or die(mysql_error());

// if successfully insert data into database, displays message "Successful". 
if($dresult){
echo "Drink Successful";
echo "<BR />";
}

else {
echo "ERROR";
}

// close connection 
mysql_close();
?>

Не могу ли я сэкономить?

Приветствия,

Alex

1 Ответ

1 голос
/ 09 марта 2012

Не закрывайте соединение mysql.
Или - что еще лучше - сохраните фактические строки БД в массиве и используйте этот массив для заполнения раскрывающегося списка.
и поместите поле выбора внутри формы.

Хорошо, если вы хотите узнать что-то полезное, но простое

config.php

<?php
$host=""; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name="tea"; // Database name 

// Connect to server and select database.
mysql_connect($host, $username, $password); 
mysql_select_db($db_name);

// A function! greatest invention since wheel.
function dbgetarr($query){
  $a   = array();
  $res = mysql_query($query);
  if (!$res) {
    trigger_error("dbget: ".mysql_error()." in ".$query);
  } else {
    while($row = mysql_fetch_assoc($res)) $a[]=$row;
  }
  return $a;
}

главная страница.

<?php
include 'config.php';
$data = dbGetArr("SELECT drinkname FROM drinks");
$tpl = 'tea.tpl.php';
include 'main.tpl.php';

основной шаблон сайта main.tpl.php

<html>
<body>
<?php include $tpl ?>
</body>
</html>

шаблон чайной страницы tea.tpl.php

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1">
<tr>
<td><form name="form1" method="post" action="insert_ac.php">
<table width="100%" border="0" cellspacing="1" cellpadding="3">
<tr>
<td colspan="3"><strong>Sign up to the Tea App</strong></td>
</tr>

<tr>
<td width="71">Name</td>
<td width="6">:</td>
<td width="301"><input name="name" type="text" id="name"></td>
</tr>
<tr>
  <td width="71">Name</td>
  <td width="6">:</td>
  <td width="301"><input name="drink" type="text" id="name">
    <select name="drinkname">
<?php foreach($data as $row)): ?>
      <option value="<?=$row['drinkname']?>"><?=$row['drinkname']?></option>
<?php endforeach ?>
    </select>
  </td>
</tr>
<tr>
  <td colspan="3" align="center">
    <input type="submit" name="Submit" value="Submit">
  </td>
</tr>
</table>
</form>
</td>
</tr>
</table>

insert_ac.php

<?php
include 'config.php';
$tbl_name="users"; // Table name
// Get values from form and formatting them as SQL strings
$name = mysql_real_escape_string($_POST['name']);
$pref = mysql_real_escape_string($_POST['pref']); // Drink preference

// Insert data into mysql 
$sql="INSERT INTO `$tbl_name` (name, pref) VALUES('$name', '$pref')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful". 
if($result){
echo "Successful";
}else {
echo "ERROR";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...