Я пытаюсь использовать эту форму для отображения таблиц в моей базе данных. Я не уверен, что я делаю неправильно. Я поменялся местами тегами «form» и «select», предполагая, что это было исправлением. Но каждый раз, когда что-либо из выпадающего списка выбирается, страница просто перезагружается с моим обычным созданием базы данных.
Как вы видите, я заполняю свои таблицы в php, моя единственная проблема — когда я пытаюсь поместить эту информацию в форму HTML, она не работает. Я могу отправить вам примеры того, что я имею в виду, это поможет, но я полагаю, вы понимаете, что я пытаюсь сделать.
<!-- Use JavaScript to automatically submit the selection -->
<select name="lstDisplay" onchange="this.form.submit()">
<option value="null">Select an item</option>
<option value="concert">Concert</option>
<option value="attendee">Atendee</option>
<option value="venue">Venue</option>
</select>
<!-- set up alternative button in case JavaScript is not active -->
<noscript>
<input type="submit" name="btnSubmit" value="View the list" />
<br /><br />
</noscript>
<!-- Use a hidden field to tell server if return visitor -->
<input type="hidden" name="hidIsReturning" value="true" />
</form>
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Start with a new database to start primary keys at 1
$sql = "DROP DATABASE " . DATABASE_NAME;
runQuery($sql, "DROP " . DATABASE_NAME, true);
// Create database if it doesn't exist
$sql = "CREATE DATABASE IF NOT EXISTS " . DATABASE_NAME;
//if ($conn->query($sql) === TRUE) {
// echo "The database " . DATABASE_NAME . " exists or was created succesffuly!<br/>";
//}
//else {
// echo "Error creating database " . DATABASE_NAME . ": " . $conn->error;
// echo "<br/>";
//}
runQuery($sql, "Creating " . DATABASE_NAME, false);
// Select the database
$conn->select_db(DATABASE_NAME);
/*
--------------------------
* Create the tables
--------------------------
*/
// Create Table: volunteer
/*
--------------------------
* Create the tables
--------------------------
*/
// Create Table: attendee
$sql = "CREATE TABLE IF NOT EXISTS attendee (
attendee_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
fName VARCHAR(20),
lName VARCHAR(20),
phone VARCHAR(15),
email VARCHAR(50)
)";
runQuery($sql, "Table:attendee", false);
// Create Table: concert
$sql = "CREATE TABLE IF NOT EXISTS concert (
concert_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
concert VARCHAR(20) NOT NULL
)";
runQuery($sql, "Table:concert", false);
// Create Table: attendee_concert
$sql = "CREATE TABLE IF NOT EXISTS attendee_concert (
attendee_concert_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
attendee_id INT(6) UNSIGNED,
concert_id INT(6) UNSIGNED,
paid TINYINT(1)
)";
runQuery($sql, "Table:attendee_concert", false);
// Create Table: venue
$sql = "CREATE TABLE IF NOT EXISTS venue (
venue_id INT(4) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
venueName VARCHAR(25)
)";
runQuery($sql, "Table:venue", false);
/*
--------------------------------------------
* Populate Tables Using Sample Data attendee
* This data will later be collected using a form.
--------------------------------------------
*/
// Populate table: attendee
$attendeeArray = array(
array("Rob", "Nelson", "651-333-3030", "[email protected]"),
array("Matt", "Doe", "888-867-5309", "[email protected]"),
array("Tom", "Reynolds", "651-303-9090", "[email protected]"),
array("Jane", "Doe", "651-678-8901", "[email protected]"),
array("Emily", "Nelson", "612-234-5678", "[email protected]"),
array("Timmy", "Turner", "987-098-0987", "[email protected]")
);
foreach($attendeeArray as $attendee) {
echo $attendee[0] . " " . $attendee[1] . "<br/>";
$sql = "INSERT INTO attendee (fName, lName, phone, email) ". "VALUES ('" . $attendee[0] . "', '". $attendee[1] . "', '". $attendee[2] . "', '". $attendee[3] . "')";
runQuery($sql, "Record inserted for: " . $attendee[0], false);
}
// Populate Table: concert
$concertArray = array("Brand New", "Thrice", "Daft Punk", "Kanye West",);
foreach($concertArray as $concert) {
$sql = "INSERT INTO concert (concert) " . "VALUES ('" . $concert . "')";
runQuery($sql, "New record insert $concert[0]", false);
}
// Populate Table: attendee_concert
$attendee_concertArray = array(
array(1,1,1),
array(2,2,1),
array(3,3,1),
array(4,3,1),
array(5,3,1),
array(6,4,1)
);
foreach ($attendee_concertArray as $attendee_concert) {
$sql = "INSERT INTO attendee_concert (attendee_id, concert_id, paid) ". "VALUES ('" . $attendee_concert[0] . "', '". $attendee_concert[1] . "', '". $attendee_concert[2] . "')";
runQuery($sql, "New record insert $attendee_concert[0]", false);
}
// Populate Table: venue
$venueArray = array("The Myth", "Target Field", "The Cabooze", "Blue Door Pub");
foreach ($venueArray as $venue) {
$sql = "INSERT INTO venue (venueName) ". "VALUES ('" . $venue . "')";
runQuery($sql, "New record insert $venue[0]", true);
}
$sql = "SELECT * FROM attendee";
$result = $conn->query($sql);
displayResult($result, $sql);
$conn->close();
function runQuery($sql, $msg, $echoSuccess) {
global $conn;
// run the query
if ($conn->query($sql) === TRUE) {
if($echoSuccess) {
echo $msg . " successful.<br/>";
}
} else {
echo "<strong>Error when: " . $msg . "</strong> using SQL: " . $sql . "<br/>" . $conn->error;
}
} // end of runQuery()
function displayResult($result, $sql) {
if ($result->num_rows > 0) {
echo "<table border='1'>\n";
// print headings (field names)
$heading = $result->fetch_assoc( );
echo "<tr>\n";
// Print field names as table headings
foreach($heading as $key=>$value){
echo "<th>" . $key . "</th>\n";
}
echo "</tr>";
// Print the values for the first row
echo "<tr>";
foreach($heading as $key=>$value){
echo "<td>" . $value . "</td>\n";
}
// Output each record
while($row = $result->fetch_assoc()) {
//print_r($row);
//echo "<br />";
echo "<tr>\n";
// print data
foreach($row as $key=>$value) {
echo "<td>" . $value . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
// No results
} else {
echo "<strong>zero results using SQL: </strong>" . $sql;
}
} // end of displayResult( )
?>
Ваш <select>
имеет onchange="this.form.submit()"
, который говорит JavaScript, чтобы отправить форму всякий раз, когда вы делаете выбор. Просто удалите это, чтобы предотвратить автоматическую отправку вашей формы. Кроме того, вы хотите, чтобы кнопка отправки была за пределами вашего <noscript>
(что на самом деле не нужно вообще).
В конечном счете, вы хотите, чтобы ваш <form>
выглядеть следующим образом:
<form>
<select name="lstDisplay">
<option value="null">Select an item</option>
<option value="concert">Concert</option>
<option value="attendee">Atendee</option>
<option value="venue">Venue</option>
</select>
<input type="submit" name="btnSubmit" value="View the list" />
<!-- Use a hidden field to tell server if return visitor -->
<input type="hidden" name="hidIsReturning" value="true" />
</form>
Других решений пока нет …