Я создаю веб-базу данных, которая позволяет пользователям загружать изображение профиля в свою учетную запись, если они не хотят добавлять фотографию. Я хочу, чтобы изображение по умолчанию отображалось вместо пустой тега изображения. По какой-то причине, если файл не выбран, blob в MySQL все равно заполняется, и я не знаю, что. Есть ли что-то, что мне нужно изменить в базе данных или фрагмент кода, который мне нужно добавить?Загрузка файла - PHP MySQL
Код для ввода в данных:
$username = mysql_prep($_POST["username"]);
$password = password_encrypt($_POST["password"]);
// $confirm = password_encrypt($_POST["confirm"]);
$firstName = mysql_prep($_POST["firstName"]);
$lastName = mysql_prep($_POST["lastName"]);
$File = $_FILES['fileField']['name'];
$tempnum = rand(20, 980780980);
$newfile = $tempnum . $File;
// if("password" != "confirm") {
// $_SESSION["message"] = "ERROR: Passwords must match.";
// }else{
if (file_exists("images/profile_pictures/" . $newfile)) {
echo $newfile . " already exists. ";
} else {
$query = "INSERT INTO users (";
$query .= " username, password, firstName, lastName, image";
$query .= ") VALUES (";
$query .= " '{$username}', '{$password}', '{$firstName}', '{$lastName}', '{$newfile}'";
$query .= ")";
$result = mysqli_query($connection, $query);
copy($_FILES['fileField']['tmp_name'], 'images/profile_pictures/' . $newfile);
if ($result > 0) {
// Success
$_SESSION["message"] = "User created.";
redirect_to("add_user.php");
} else {
// Failure
$_SESSION["message"] = "User creation failed.";
}
}
}
// }
}
<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="add_user.php">
<h2>Create New User</h2>
<p>
<label for="fname">First Name:</label>
<input id="fname" type="text" class="textbox" name="firstName" value="" />
</p>
<p>
<label for="lname">Last Name:</label>
<input id="lname" type="text" class="textbox" name="lastName" value="" />
</p>
<p>
<label for="uname">Username:</label>
<input id="uname" type="text" class="textbox" name="username" value="" />
</p>
<p>
<label for="pword">Password:</label>
<input id="pword" type="password" class="textbox" name="password" value="" />
</p>
<p>
<label for="pword">Confirm Password:</label>
<input id="pword" type="password" class="textbox" name="confirm" value="" />
</p>
<!-- <p>-->
<!-- <label for="profile">Profile Picture:-->
<!-- <input id="fileField" type="file" name="fileField"></label>-->
<!-- </p>-->
<input type="submit" class="button" name="submit" value="Add User" onclick="return confirm('Do you wish to add a new user?');"/>
<p><a href="manage_users.php" class="link">Cancel</a></p>
</form>
</div>
Код для отображения данных:
<table id="users">
<tr>
<th style="text-align: left; width: 75px;">Image</th>
<th style="text-align: left; width: 150px;">First Name</th>
<th style="text-align: left; width: 150px;">Last Name</th>
<th style="text-align: left; width: 150px;">Username</th>
<th style="text-align: left; width: 35px;">Actions</th>
</tr>
<?php while($user = mysqli_fetch_assoc($user_set)) { ?>
<tr>
<td>
<?php
if($user["image"] == ""){
echo "<img id='profilepic' src='images/profile_pictures/default.gif' alt='Default Profile Pic'>";
} else{
echo "<img id='profilepic' src='images/profile_pictures/".$user['image']."' />";
}?>
</td>
<!--htmlentities converts all applicable characters to html entities-->
<td><?php echo htmlentities($user["firstName"]); ?></td>
<td><?php echo htmlentities($user["lastName"]); ?></td>
<td><?php echo htmlentities($user["username"]); ?></td>
<td style="text-align: center;"><a href="edit_users.php?id=<?php echo urlencode($user["userId"]); ?>">
<img id="icon" src="images/edit.png" alt="Edit Icon"></a>
<a href="delete_user.php?id=<?php echo urlencode($user["userId"]); ?>" onclick="return confirm('Are you sure?');">
<img id="icon" src="images/delete.png" alt="Delete Icon"></a></td>
</tr>
<?php } ?>
</table>
Вы можете сохранить расположение изображения вместо самого изображения в базе данных. Теоретически проверяйте, загружено ли изображение, если не сохранить местоположение defualt pic в ячейке. – CAO