Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema inserimento multiplo imaggini+didascalia

    ho questa funzione per effettuare l'inserimento dati nel db:
    codice:
    function insertImg($nome, $didascalia, $art_titolo) {
        global $config;
        try {
            $prepare = $config->getPdo()->prepare("INSERT gallerie_articoli (galleria_art_nome, galleria_art_didascalia, articolo_titolo_FK) VALUES (?,?,?)");
            $prepare->execute(array(
                $nome,
                $didascalia,
                $art_id
            ));
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
    ho un form per l'upload piu inserimento di una didascalia:
    codice:
    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form_upload">
        <table>
            <tr>
                <td>
                    <input type="file" name="file[]"/> 
    
                    <input type="file" name="file[]"/> 
    
                    <input type="file" name="file[]"/> 
    
                    <input type="file" name="file[]"/> 
    
                    <input type="file" name="file[]"/> 
    
                </td>
                <td>
                    <input type="text" name="didascalia[]" value="" /> 
    
                    <input type="text" name="didascalia[]" value="" /> 
    
                    <input type="text" name="didascalia[]" value="" /> 
    
                    <input type="text" name="didascalia[]" value="" /> 
    
                    <input type="text" name="didascalia[]" value="" /> 
    
                </td>
            </tr>
            <tr>
                <td>Articolo:</td>
                <td>
                    <select name="articolo">
                        <option value="*">*</option>
                        <?php
                        foreach (selectArticolo() as $row) {
                            echo "<option value='" . $row['articolo_titolo'] . "'>" . $row['articolo_titolo'] . "</option>";
                        }
                        ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>
                    <input type="submit" value="Upload" name="upload_img" />
                </td>
                <td></td>
            </tr>
        </table>
    </form>
    al submit del form dovrei uplodare le immagini e salvare nome e didascalia sul db:
    codice:
    if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['upload_img'])) {
        if ($_POST['articolo'] == "*") {
            echo "Seleziona un articolo";
        } else {
            $maxSize = 512000; //byte => 550KB
            $acceptType = array(
                'jpeg' => 'image/jpeg',
                'jpg' => 'image/jpg',
            );
            $cartella = "../img_articoli/" . $_POST['articolo'] . "/";
            for ($i = 0; $i < count($_FILES['file']['name']); $i++) {
                if ($_FILES['file']['name'][$i] != "") {
                    createDir($_POST['articolo']);
                    $nome_upload = uniqid($_POST['articolo'] . "-", true) . strrchr($_FILES['file']['name'][$i], '.');
                    $destinazione = $cartella . $nome_upload;
                    if ($_FILES['file']['size'][$i] <= $maxSize) {
                        if (in_array($_FILES['file']['type'][$i], $acceptType)) {
                            if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                                insertImg($nome_upload, $_POST['didascalia'], $_POST['articolo']);
                                echo "File " . $i . " inserito
    ";
                           } else {
                                echo "Errore nell'upload
    ";
                            }
                        } else {
                            echo 'Tipo file non valido
    ';
                        }
                    } else {
                        echo 'File troppo grande
    ';
                    }
                } elseif ($_POST['upload_img']) {
                    echo 'Non ci sono file da inserire
    ';
                }
            }
        }
    }
    il problema è l'inserimento nel db.
    in pratica nn viene salvato nulla.
    penso che l'errore sia proprio nella didascalia.
    se provo a farne l'echo mi esce fuori array.

  2. #2
    Codice PHP:
    ...
    insertImg($nome_upload$_POST['didascalia'], $_POST['articolo']);
    ... 
    $_POST['didascalia'] è un array, devi passare alla funzione insertImg() solo la didascalia associata all'immagine in questione e non tutto l'array.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    a colpo d'occhio direi che nel terzo codice che posti la riga

    insertImg($nome_upload, $_POST['didascalia'], $_POST['articolo']);

    dovrebbe essere

    insertImg($nome_upload, $_POST['didascalia'][$i], $_POST['articolo']);

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  4. #4
    Originariamente inviato da Grino
    a colpo d'occhio direi che nel terzo codice che posti la riga

    insertImg($nome_upload, $_POST['didascalia'], $_POST['articolo']);

    dovrebbe essere

    insertImg($nome_upload, $_POST['didascalia'][$i], $_POST['articolo']);

    un errore era la, ci sono arrivato dopo.
    l'altro errore era di sintassi del nome da passare al prepared statement nella funzione.
    $art_id -> $art_nome

    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.