Entonces, para mi tarea, necesito usar el nombre de usuario de un usuario que inició sesión y ponerlo en otra tabla en la misma base de datos, cuando dicho usuario carga una imagen, y cada vez que trato de cargar, la base de datos aparece solo con el id, el resto está vacío.

Script de procesamiento:

<?php
if(isset($_POST['username'])) $username = $_POST['username'];    
if(isset($_POST['title'])) $title = $_POST['title'];
if(isset($_POST['category'])) $category = $_POST['category'];
if(isset($_POST['description'])) $description = $_POST['description'];
if(isset($_POST['tags'])) $tags = $_POST['tags'];

$filename = $_FILES['image']['name'];
$location = $_FILES['image']['tmp_name'];

move_uploaded_file($location, "uploads/$filename");

$db = mysqli_connect("localhost", "root","", "artworks") or die(mysqli_error($db));
$q = "insert into artwork values(null, '$username', '$title', '$category', '$description', '$tags', '$filename')";
mysqli_query($db, $q) or die(mysqli_error($db));

header("Location:index.php");
exit(0); ?>

Script de inicio de sesión:

    <?php
    if(isset($_POST['username'])) $username = $_POST['username'];
    if(isset($_POST['password'])) $password = $_POST['password'];

    $db = mysqli_connect("localhost", "root","", "artworks")  or die(mysqli_error($db));
    $q = "select * from member where username='$username' and password=SHA('$password')";
    $results = mysqli_query($db, $q) or die(mysqli_error($db));

    if(mysqli_num_rows($results) > 0)
    {
        session_start();
        $_SESSION['username'] = $username;
        header("Location:index.php");
        exit(0);
    }

    header("Location:register.php");?>

Subir script

<?php
session_start();

    if(!isset($_SESSION['username']))
    {
        header("Location:login.php");
        exit(0);
    }
?>

<?php include("header.inc");
        include("nav.inc"); ?>

<div class = "container">
<form role = "form-horizontal" method = "post" action = "add_ps.php" enctype="multipart/form-data">
        <div>
            <div class = "form-group">
            <label for = "title" class="control-label col-xs-6">Title</label>
            <input type = "text" class = "form-control" id = "title" placeholder = "Title of Image">
            </div>
        </div>

        <div>
            <div class = "form-group">
            <label for = "category" class="control-label col-xs-6">Category</label>
            <input type = "text" class = "form-control" id = "category" placeholder = "Category of Image">
            </div>
        </div>

        <div>
            <div class = "form-group">
            <label for = "description" class="control-label col-xs-6">Description</label>
            <textarea class="form-control" rows="5" id="description" placeholder = "Description of Image"></textarea>
            </div>
        </div>

        <div>
            <div class = "form-group">
            <label for = "tags" class="control-label col-xs-6">Tags (Seperate with comma)</label>
            <input type = "text" class = "form-control" id = "tag" placeholder = "Tag of Image">
            </div>
        </div>

        <div class = "form-group">
            <label for = "inputfile">File input</label>
            <input type = "file" id = "uploads">
            <p class = "help-block">Upload image here</p>
         </div>

        <div class = "form-group">
            <div class="col-xs-2">
                <button type = "submit" class = "btn btn-primary">Submit</button>
            </div>
        </div>
</form>
</div>

<?php include("footer.inc"); ?>

Espero que esto ayude, siento que me estoy perdiendo un pequeño detalle

0
Maabat 16 oct. 2018 a las 10:11

2 respuestas

La mejor respuesta

Cuando tenga sus campos en el formulario, sus campos se enviarán con el valor name= del campo que no tiene ...

    <input type="text" class="form-control" id="title" placeholder="Title of Image" name="title">

Repita esto para todos sus campos. También eliminé los espacios entre el valor y la etiqueta del atributo.

Además, cuando envía el formulario, comprueba si se establece un valor y luego establece la variable que usa, pero no verifica si no están configurados y detiene el envío del formulario. Esto significa que si el campo no está configurado, el código simplemente continuará con un valor vacío (como ha encontrado) y también tendrá algún tipo de mensaje (si agregó informes) para decir que el campo no existe. ..

if(isset($_POST['username'])) $username = $_POST['username'];    
if(isset($_POST['title'])) $title = $_POST['title'];
if(isset($_POST['category'])) $category = $_POST['category'];
if(isset($_POST['description'])) $description = $_POST['description'];
if(isset($_POST['tags'])) $tags = $_POST['tags'];

Sería mejor escrito para decir si todos los campos están configurados ...

if (isset($_POST['username']) && isset($_POST['title']) ... ) { // Add rest of fields.
    $username = $_POST['username'];
    $title = $_POST['title'];
    // Add rest of fields.

    // Process insert
}
1
Nigel Ren 16 oct. 2018 a las 07:26

Solo agrega nombre = "imagen" Te lo estás perdiendo

 <input type = "file" id = "uploads" name="image">
0
Sanu0786 16 oct. 2018 a las 07:15