Отправка HTML-формы с начальной загрузкой на стороне сервера php - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу отправить html-форму на сервер php на той же странице, поэтому, когда я использую html, свободный от начальной загрузки, он работает нормально.

Но когда я смешиваю некоторые теги начальной загрузки, я не могу что-либо отправить. (форма должна загрузить файл и отправить его вместе с текстом).

<?php
echo '<div id="content" class="container" style="new.css">';
echo '<form action="Addproducts.php" method="post" enctype="multipart/form-data" class="form-horizontal well col-xs-8 col-xs-offset-2">';
echo '<input type="text" id="text" name="image_text"></input>';
echo ' <div class="form-group">';
echo '<input type="file" name="image"/>';   
echo '</div>'; 
echo ' <div class="form-group">';
echo ' <center> <input type="submit" name="submit" value="Enter"/>  </center>';
echo ' </div>';  
echo '</form>';  
//end of html part

Часть php-скриптов

if(isset($_POST["submit"]))
{
$dbHost  = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'mydb';    
$image = $_FILES['image']['name'];

$mysqli = new mysqli("localhost", "root", "", "mydb");

$image_text = mysqli_real_escape_string($mysqli , $_POST['image_text']);
move_uploaded_file($_FILES['image']['tmp_name'],"images/".$_FILES['image']['name']);
$path ="images/".$_FILES['image']['name'] ;
$imgContent = basename($_FILES['image']['tmp_name']) ;

if($mysqli->connect_error)
{
die("Connection failed: " . $db->connect_error);
}
$insert = $mysqli->query("INSERT into products(product_Image,product_name,Image_path) VALUES ('$imgContent','$image_text','$path' )");
$target = "images/".basename($image);
move_uploaded_file($image, $target) ; 

if($insert)
 {
echo "<center>Image inserted successfully</center>";
 }

else 
echo "<center> Error in inserting image </center>";
 }
echo ' </div>';

 ?>

Проблема здесь, когда я пытаюсь использовать bootstrap

<?php

echo '<div class="panel panel-primary">';
echo '<div class="panel-body">';  
echo '<form action="" method="post" enctype="multipart/form-data" class="form-horizontal well col-xs-8 col-xs-offset-2">';

echo '<input type="text"   name="image_text" class="form-control"></input>';

echo ' <div class="form-group">';
echo '<input type="file" class="form-control" name="image"/>';
echo ' </div>';

echo ' <input type="submit" name="submit" value="Enter" /> ';

echo '</form>';  

1 Ответ

0 голосов
/ 07 сентября 2018

Хорошо, я не совсем уверен, чего вы пытаетесь достичь, поэтому вот рабочая форма, которая загрузит изображение и добавит в таблицу SQL строку с именем файла и именем продукта.

</p> <pre><code><?PHP if ($_SERVER["REQUEST_METHOD"] == "POST") { // Database creds | Even in a DEV environment I would recomend setting up a username and password. It is good practise. $dbHost = 'localhost'; $dbUsername = 'mydb_write'; $dbPassword = 'nZjf4cKh7XDkHmQg'; $dbName = 'mydb'; // Create the connection $mysqli = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName); // Check the connection if (mysqli_connect_errno()) { // This will only be printed if there is a connection issue printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } // Escapes special characters in a string for use in an SQL statement $image_text = $mysqli->real_escape_string($_POST['product_name']); // Insert the text and file name into the SQL table if ($mysqli->query("INSERT INTO `products`(`product_Image`, `product_name`) VALUES ('" . $_FILES["product_image"]["name"] . "','" . $image_text . "')")) { // Move the file | You would want to do some validation of file type, file size etc. // https://www.w3schools.com/php/php_form_url_email.asp // https://www.w3schools.com/php/php_file_upload.asp if (move_uploaded_file($_FILES['product_image']['tmp_name'], __DIR__.'/images/'. $_FILES["product_image"]['name'])) { // Display a success message echo " <div class='alert alert-success'> <strong>Success!</strong> The file has been uploaded. </div> "; } else { // Display an error message echo " <div class='alert alert-danger'> <strong>ERROR!</strong> The file has NOT been uploaded. </div> "; } } // Close the SQL connection $mysqli->close(); } ?> <!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <title>PHP image form!</title> </head> <body> <div class="container"> <div class="row"> <div class="col-md-6"> <h1>Upload form test</h1> <br /><br /> <form action="" method="post" enctype="multipart/form-data" class="form-inline"> <div class="form-group"> <input type="file" class="form-control-file" id="product_image" name="product_image"> </div> <div class="form-group"> <input type="text" class="form-control-file" name="product_name" placeholder="The product name.."> </div> <br /><br /> <button type="submit" class="btn btn-sm btn-info btn-block">Upload</button> </form> </div> </div> </div> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> </body> </html>

Ниже приведен экспорт базы данных MySQL для таблицы, в которую она вставляется. Хорошей идеей будет наличие столбца идентификатора, чтобы вы могли легче идентифицировать строки (могут быть похожие строки). Отметка времени, когда он был загружен, также является хорошей идеей.

И столбец ID, и отметка времени обрабатываются SQL. Вам не нужно упоминать эти столбцы в коде PHP.

</p> <pre><code>-- phpMyAdmin SQL Dump -- version 4.8.2 -- https://www.phpmyadmin.net/ -- -- Host: localhost -- Generation Time: Sep 08, 2018 at 11:38 AM -- Server version: 10.1.34-MariaDB -- PHP Version: 7.2.8 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `mydb` -- -- -------------------------------------------------------- -- -- Table structure for table `products` -- CREATE TABLE `products` ( `id` int(11) NOT NULL, `product_Image` varchar(128) NOT NULL, `product_name` varchar(255) NOT NULL, `date_uploaded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Indexes for dumped tables -- -- -- Indexes for table `products` -- ALTER TABLE `products` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `products` -- ALTER TABLE `products` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Если у вас есть проблемы с загружаемым файлом, проверьте права доступа к папке.

Надеюсь, это поможет.

Привет

edwoli

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...