Как я могу загрузить изображение и текст за один шаг?

Я хотел бы загрузить некоторые новости, и для этого мне нужно вставить картинку. Картинка и текст работают. Но я не могу сделать это за один шаг:

<?php 
session_start();
require_once("inc/config.inc.php");
require_once("inc/functions.inc.php");

//Überprüfe, dass der User eingeloggt ist
//Der Aufruf von check_user() muss in alle internen Seiten eingebaut sein
$user = check_user();

include("templates/header.inc.php")
?>
<div class = "container main-container registration-form">
<h1>Einfügen</h1>
<?php
$showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll

if (isset($_GET['register'])) {
    $error = false;
    $vorname = htmlentities(trim($_POST['vorname']));
    $nachname = htmlentities(trim($_POST['nachname']));
    $nickname = htmlentities(trim($_POST['nickname']));


    if (empty($vorname) || empty($nachname) || empty($nickname)) {
        echo 'Bitte alle Felder ausfüllen<br>';
        $error = true;
    }

    //Keine Fehler, wir können den Beitrag hinzufügen
    if (!$error) {   


        $statement = $pdo->prepare("INSERT INTO entries (entry_title, entry_subtitle, entry_content) VALUES (:vorname, :nachname, :nickname)");
        $result = $statement->execute(array('vorname' => $vorname, 'nachname' => $nachname, 'nickname'=> $nickname));

        if ($result) {       
            echo 'Dein Beitrag wurde erfolgreich hinzugefügt. <a href = "news.php">Zu den News</a>';
            $showFormular = false;
        } else {
            echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
        }
    } 
}

if ($showFormular) {
?>

<form action = "?register=1" action = "upload.php" method = "post"enctype = "multipart/form-data">

<div class = "form-group">
<label for = "inputVorname">Titel :</label>
<input type = "text" id = "inputVorname" size = "40" maxlength = "250" name = "vorname" class = "form-control" required autofocus><br />

<label for = "inputNachname">Subtitel:</label>
<input type = "text" id = "inputNachname" size = "40" maxlength = "250" name = "nachname" class = "form-control" required><br />



<label for = "inputNickname">Content:</label>
<textarea id = "inputNickname" rows = "7" cols = "200" type = "text" name = "nickname" class = "form-control" required></textarea><br /><br />
</form>
<br />
<input type = "file" name = "datei"><br>
<button type = "submit" class = "btn btn-lg btn-primary btn-block" style = "width:100px;">Uploaden</button><br />

</form>
<br />
<form action = "upload.php" method = "post" enctype = "multipart/form-data">
<input type = "file" name = "datei"><br>
<input type = "submit" value = "Hochladen">
</form> 

</div>


<?php
} //Ende von if ($showFormular)


?>


<?php 
include("templates/footer.inc.php")
?>  

а вот загрузка для картинки:

<?php
$upload_folder = 'upload/'; //Das Upload-Verzeichnis
$filename = pathinfo($_FILES['datei']['name'], PATHINFO_FILENAME);
$extension = strtolower(pathinfo($_FILES['datei']['name'], PATHINFO_EXTENSION));


//Überprüfung der Dateiendung
$allowed_extensions = array('png', 'jpg', 'jpeg', 'gif');
if (!in_array($extension, $allowed_extensions)) {
 die("Ungültige Dateiendung. Nur png, jpg, jpeg und gif-Dateien sind erlaubt");
}

//Überprüfung der Dateigröße
$max_size = 500*1024; //500 KB
if ($_FILES['datei']['size'] > $max_size) {
 die("Bitte keine Dateien größer 500kb hochladen");
}

//Überprüfung dass das Bild keine Fehler enthält
if (function_exists('exif_imagetype')) { //Die exif_imagetype-Funktion erfordert die exif-Erweiterung auf dem Server
 $allowed_types = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
 $detected_type = exif_imagetype($_FILES['datei']['tmp_name']);
 if (!in_array($detected_type, $allowed_types)) {
 die("Nur der Upload von Bilddateien ist gestattet");
 }
}

//Pfad zum Upload
$new_path = $upload_folder.$filename.'.'.$extension;
echo $new_path;

//Neuer Dateiname falls die Datei bereits existiert
if (file_exists($new_path)) { //Falls Datei existiert, hänge eine Zahl an den Dateinamen
 $id = 1;
 do {
 $new_path = $upload_folder.$filename.'_'.$id.'.'.$extension;
 $id++;
 } while(file_exists($new_path));
}
echo $new_path;
$statement = $pdo->prepare("INSERT INTO entries (entry_picture) VALUES (:datei)");
$result = $statement->execute(array('datei' => $new_path));
if ($result) {       
    echo 'Dein Beitrag wurde erfolgreich hinzugefügt. <a href = "news.php">Zu den News</a>';
    $showFormular = false;
} else {
    echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
}

//Alles okay, verschiebe Datei an neuen Pfad
move_uploaded_file($_FILES['datei']['tmp_name'], $new_path);
echo 'Bild erfolgreich hochgeladen: <a href = "'.$new_path.'">'.$new_path.'</a>';
?>

Я работаю с phpmyadmin. Вот картинка таблицы mysql

Оба работают, но не в один шаг. Как это может быть сделано?

Вот functions.php

<?php
/**
 * A complete login script with registration and members area.
 *
 * @author: Nils Reimers / http://www.php-einfach.de/experte/php-codebeispiele/loginscript/
 * @license: GNU GPLv3
 */
include_once("password.inc.php");

/**
 * Checks that the user is logged in. 
 * @return Returns the row of the logged in user
 */
function check_user() {
    global $pdo;

    if (!isset($_SESSION['userid']) && isset($_COOKIE['identifier']) && isset($_COOKIE['securitytoken'])) {
        $identifier = $_COOKIE['identifier'];
        $securitytoken = $_COOKIE['securitytoken'];

        $statement = $pdo->prepare("SELECT * FROM securitytokens WHERE identifier = ?");
        $result = $statement->execute(array($identifier));
        $securitytoken_row = $statement->fetch();

        if (sha1($securitytoken) !== $securitytoken_row['securitytoken']) {
            //Vermutlich wurde der Security Token gestohlen
            //Hier ggf. eine Warnung o.ä. anzeigen

        } else { //Token war korrekt
            //Setze neuen Token
            $neuer_securitytoken = random_string();
            $insert = $pdo->prepare("UPDATE securitytokens SET securitytoken = :securitytoken WHERE identifier = :identifier");
            $insert->execute(array('securitytoken' => sha1($neuer_securitytoken), 'identifier' => $identifier));
            setcookie("identifier",$identifier,time()+(3600*24*365)); //1 Jahr Gültigkeit
            setcookie("securitytoken",$neuer_securitytoken,time()+(3600*24*365)); //1 Jahr Gültigkeit

            //Logge den Benutzer ein
            $_SESSION['userid'] = $securitytoken_row['user_id'];
        }
    }


    if (!isset($_SESSION['userid'])) {
        die('Bitte zuerst <a href = "login.php">einloggen</a>');
    }


    $statement = $pdo->prepare("SELECT * FROM users WHERE id = :id");
    $result = $statement->execute(array('id' => $_SESSION['userid']));
    $user = $statement->fetch();
    return $user;


}

/*
Returns true when the user is checked in, else false
*/
function is_checked_in() {
    return isset($_SESSION['userid']);
}

/**
 * Returns a random string
 */
function random_string() {
    if (function_exists('openssl_random_pseudo_bytes')) {
        $bytes = openssl_random_pseudo_bytes(16);
        $str = bin2hex($bytes); 
    } else if (function_exists('mcrypt_create_iv')) {
        $bytes = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
        $str = bin2hex($bytes); 
    } else {
        //Replace your_secret_string with a string of your choice (>12 characters)
        $str = md5(uniqid('your_secret_string', true));
    }   
    return $str;
}

/**
 * Returns the URL to the site without the script name
 */
function getSiteURL() {
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    return $protocol.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/';
}

/**
 * Outputs an error message and stops the further exectution of the script.
 */
function error($error_msg) {
    include("templates/header.inc.php");
    include("templates/error.inc.php");
    include("templates/footer.inc.php");
    exit();
}

Я не понял, что за текст вы загружаете. Вы сохраняете одни и те же строки новостей в entry_content?

Zeeshan Ahmad Khalil 06.03.2019 18:54
functions.inc.php и config.inc.php включены в ваш php-код, но не упоминаются в вашем вопросе.
Zeeshan Ahmad Khalil 06.03.2019 18:57

Если вы дадите полный код, то будет легко ответить на вопрос

Zeeshan Ahmad Khalil 06.03.2019 18:58

«Я не могу сделать это ни на шаг», подождите, что? Пожалуйста, уточните

Prime Jay 06.03.2019 19:08

я хочу загрузить ссылку на изображение и заголовок подзаголовка... в том же столбце

Nechl 07.03.2019 09:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

move_uploaded_file(temporary_location, location_to_location);

move_uploaded_file($_FILES['datei']['tmp_name'], $new_path);

Другие вопросы по теме