【发布时间】:2016-05-21 10:11:28
【问题描述】:
我再次受制于你的知识,希望你能提供帮助。
实际问题是粗斜体字,但是如果不阅读我提供的信息,您将无法提供帮助。
问题背景 - 我正在使用 HTML、CSS、MySQL 和 PHP 创建一个摄影网站(为我妈妈)。我正在处理数据库,特别是允许我妈妈使用此表单 (http://i.imgur.com/h4nXFFA.png) 将图像插入数据库。她不知道如何编码,因此我需要为她简化。
数据库背景(您需要知道的)-我有一个 image_tbl 和 album_tbl。 Album_tbl 显示在这里 - http://i.imgur.com/4GXh9MP.png - 每个专辑都有一个 ID 和名称(忘记“隐藏”)。 image_tbl 显示在这里 - http://i.imgur.com/RgC35Nd.png - 重要的部分(对于这个问题)是 albumName。
目标 - 我已经成功地使用来自 album_tbl 的专辑填充了“插入新图像”表单(图片显示“探索”)。我希望她能够单击专辑名称(这样她就知道要添加到哪个专辑),但我希望她插入的图像能够接收数据库中的专辑 ID。到目前为止,这是我的代码的 Pastebin。
http://pastebin.com/6v8kvbGH = HTML 表单,帮助我了解代码中的第一个表单...
http://pastebin.com/4X6abTey = PHP/MySQL 代码。在这里,我们让我调用表单中的输入并在 2 个 SQL 查询中使用它们。第一个查询旨在获取输入的专辑名称的专辑ID,这就是出错的地方。注释掉的语句(使用 //)是我的错误检查,并且专辑名称是从表单传递的。 但是,从第一个 SQL 语句返回的行数是 0,而应该是 1。这是我需要帮助的地方,因为我的 assoc 数组显然有问题...强>
第二个目标 - 一旦第一个 SQL 查询开始工作,第二个 SQL 查询有望将所需的变量输入到 image_tbl 中,包括我希望从第一个 SQL 查询中获得的专辑 ID。
我希望这就是我所需要的,据我所知,理解这一点的人应该能够帮助我提供的东西。首先十分感谢!
杰克
有人让我粘贴代码 - HTML 表单:
<h2>Insert a new image</h2><br>
<form action="imagesInsert.php" method="POST" enctype="multipart/form-data">
Name of Image: <input type="text" name="name" /><br>
Date: <input type="text" name="dateTime" /><br>
Caption: <input type="text" name="caption" /><br>
Comment: <textarea type="text" name="comment" cols="40" rows="4"></textarea><br>
Slideshow: <input type="text" name="slideshow" /><br>
Choose an Album to place it in:
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('admin_db');
$sql = "SELECT albumName FROM album_tbl WHERE hidden = false";
$result = mysql_query($sql); ?>
<select name='albumName'>; <?php
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['albumName'] . "'->" . $row['albumName'] . "</option>";
}
?> </select>
<input type="submit" name="submit"/><br>
</form>
<h2>Hide the Image</h2><br>
<form action="imagesHidden.php" method="POST" enctype="multipart/form-data">
Title:
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('admin_db');
$sql = "SELECT name FROM image_tbl WHERE hidden = false";
$result = mysql_query($sql);
echo "<select name='name'>";
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>";
}
echo "</select>";
?>
<input type="submit" value="Hide" name="submit">
</form>
<h2> Renew from Hidden Items </h2><br>
<form action="imagesRestore.php" method="POST" enctype="multipart/form-data">
Title:
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('admin_db');
$sql = "SELECT name FROM image_tbl WHERE hidden = true";
$result = mysql_query($sql);
echo "<select name='name'>";
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>";
}
echo "</select>";
?>
<input type="submit" value="Renew / Un-Hide" name="submit">
</form>
</body>
使用 PHP/MySQL 插入图像:
<?php
$username="root";
$password="";
$database="admin_db";
$servername="localhost";
// Create connection
$conn = new mysqli($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully <br><hr>";
$name = $_POST['name'];
$dateTime = $_POST['dateTime'];
$caption = $_POST['caption'];
$comment = $_POST['comment'];
$slideshow = $_POST['slideshow'];
$hidden = false;
$albumName = $_POST['albumName'];
// echo "album name is" . $albumName;
$sql = "SELECT albumID FROM album_tbl WHERE albumName = $albumName";
$albumID = $conn->query($sql);
// echo "Number of rows is " . $albumID->num_rows;
if ($albumID->num_rows > 0) {
// output data of each row
while($row = $albumID->fetch_assoc()) {
echo "Album ID: " . $row["albumID"]. "<br>";
}
} else {
echo "0 results";
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$new_comment = str_replace("'", "''", $comment);
$sql = "INSERT INTO `image_tbl`(`name`, `dateTime`, `caption`, `comment`, `slideshow`, `hidden`, `albumID`) VALUES ('$name', '$dateTime', '$caption', '$new_comment', '$slideshow', '$hidden', '$albumID')";
$result = $conn->query($sql);
if ($result)
{
echo "Data has been inserted";
}
else
{
echo "Failed to insert";
}
$conn->close();
?>
【问题讨论】:
-
请在此处发布您的相关代码,以便为未来的 SO 访问者保留。
-
背景无关紧要。每个创建插入数据库的网站的人都是出于同样的原因——最终用户不直接使用数据库。
-
完成,希望这就是您的意思。 - 杰克@JayBlanchard
-
请stop using
mysql_*functions。 These extensions 已在 PHP 7 中删除。了解 PDO 和 MySQLi 的 prepared 语句并考虑使用 PDO,it's really pretty easy。 -
哎呀,刚刚注意到他在第一个脚本中使用了mysql,只有第二个使用了mysqli。
标签: php html mysql database associative-array