Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Insert multiplo in db

  1. #1

    Insert multiplo in db

    ho messo il classico sistema di upload multiplo di immagini.
    in fase di inserimento però devo anche salvare i nome e ordine sul db.
    quindi:
    Codice PHP:
    if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['upload_img'])) {
        
    $maxSize 512000//byte => 550KB
        
    $acceptType = array(
            
    'jpeg' => 'image/jpeg',
            
    'jpg' => 'image/jpeg',
        );
        
    $cartella "../gallery/";
        for (
    $i 0$i count($_FILES['file']['name']); $i++) {
            echo 
    "Risultato file " . ($i 1) . ": " upload($i$cartella$maxSize$acceptType) . "
    "
    ;
        }
        
    }

    function 
    upload($i$cartella$maxSize$acceptType) {
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $destinazione $cartella uniqid('gallery-') . strrchr($_FILES['file']['name'][$i], '.');
            if (
    $_FILES['file']['size'][$i] <= $maxSize) {
                if (
    in_array($_FILES['file']['type'][$i], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                        return 
    "File caricati";
                    } else {
                        return 
    "Errore nell'upload";
                    }
                } else {
                    return 
    'Tipo file non valido';
                }
            } else {
                return 
    'File troppo grande';
            }
        } elseif (
    $_POST['upload_img']) {
            return 
    'Non ci sono file da inserire';
        }

    una volta fatto l'upload devo richiamare questa funzione:
    Codice PHP:
    function insertImg($nome$ordine) {
        global 
    $config;
        try {
            
    $prepare $config->getPdo()->prepare("INSERT gallery (nome, ordine) VALUES (?,?)");
            
    $prepare->execute(array(
                
    $nome,
                
    $ordine
            
    ));
        } catch (
    Exception $e) {
            die(
    $e->getMessage());
        }

    dove $nome è il nome dell'immagine, e ordine è un campo int che rappresenta l'ordine.
    dopo l'upload come faccio a fare l'insert progressivo di ogni nome e dell'ordine?

  2. #2
    io ho provato a fare così:
    Codice PHP:
    function upload($i$cartella$maxSize$acceptType) {
        
    $nome_img null;
        
    $ordine_img 0;
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $destinazione $cartella uniqid('gallery-') . strrchr($_FILES['file']['name'][$i], '.');
            if (
    $_FILES['file']['size'][$i] <= $maxSize) {
                if (
    in_array($_FILES['file']['type'][$i], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                        foreach (
    $destinazione as $nome) {
                            
    $nome_img $nome;
                            
    $ordine_img++;
                        }
                        
    insertImg($nome_img$ordine_img);
                        return 
    "File caricati";
                    } else {
                        return 
    "Errore nell'upload";
                    }
                } else {
                    return 
    'Tipo file non valido';
                }
            } else {
                return 
    'File troppo grande';
            }
        } elseif (
    $_POST['upload_img']) {
            return 
    'Non ci sono file da inserire';
        }

    le immagini vengono uplodate col il nome "giusto".
    vengono fatti gli stesso inserimenti nel db rispetto alle immagini uplodate.
    solo che il nome è sempre . (un punto) e ordine è sempre 1.

  3. #3
    ho modificato così:
    Codice PHP:
    function upload($i$cartella$maxSize$acceptType) {
        
    $nome_img null;
        
    $ordine_img 0;
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $nome_upload uniqid('gallery-') . 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)) {
                        for (
    $j 0$j count($destinazione); $j++) {
                            
    $nome_img $nome_upload;
                            
    $ordine_img++;
                        }
    //                    insertImg($nome_img, $ordine_img);
                        
    return 'nome: ' $nome_img '
    numero: ' 
    $ordine_img;
    //                    return "File caricati";
                    
    } else {
                        return 
    "Errore nell'upload";
                    }
                } else {
                    return 
    'Tipo file non valido';
                }
            } else {
                return 
    'File troppo grande';
            }
        } elseif (
    $_POST['upload_img']) {
            return 
    'Non ci sono file da inserire';
        }

    adesso il nome viene stampato correttamente.
    ma $ordine_img rimane sempre 1.

  4. #4
    perche' $destinazione e' una variabile e quindi contiene solo un valore. Ma anche perche' carichi un file per volta e quindi il contatore che hai fatto e' sempre a 1.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    si infatti echo count($destinazione) mi da sempre uno.
    a questo punto penso che il ciclo for sia inutile giusto?
    e come faccio ad incrementare la variabile?

  6. #6
    Originariamente inviato da fermat
    si infatti echo count($destinazione) mi da sempre uno.
    a questo punto penso che il ciclo for sia inutile giusto?
    e come faccio ad incrementare la variabile?
    sei dentro una funzione che presumo tratti l'upload una immagine per volta. Metterei questo contatore fuori dalla funzione controllando il return ed incrementando solo in caso positivo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    questo è il tutto originale solo per l'upload:
    Codice PHP:
    if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['upload_img'])) {
        
    $maxSize 512000//byte => 550KB
        
    $acceptType = array(
            
    'jpeg' => 'image/jpeg',
            
    'jpg' => 'image/jpeg',
            
    'png' => 'image/png'
        
    );
        
    $cartella "../gallery/";
        
        for (
    $i 0$i count($_FILES['file']['name']); $i++) {
            echo 
    "Risultato file " . ($i 1) . ": " upload($i$cartella$maxSize$acceptType) . "
    "
    ;
        }
    }

    function 
    upload($i$cartella$maxSize$acceptType) {
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $nome_upload uniqid('gallery-') . 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)) {  
                        return 
    "File caricati";
                    } else {
                        return 
    "Errore nell'upload";
                    }
                } else {
                    return 
    'Tipo file non valido';
                }
            } else {
                return 
    'File troppo grande';
            }
        } elseif (
    $_POST['upload_img']) {
            return 
    'Non ci sono file da inserire';
        }

    a questo punto secondo dove incrementare la variabile e richiamare l'inserimento?

  8. #8
    avevo pensato di modificare il ciclo for così:
    Codice PHP:
        $ordine_img 0;
        for (
    $i 0$i count($_FILES['file']['name']); $i++) {
            echo 
    "Risultato file " . ($i 1) . ": " upload($i$cartella$maxSize$acceptType) . "
    "
    ;
            
    $ordine_img++;
    //        insertImg($n, $ordine_img++); RICHIAMO LA FUNZIONE DI INSERIMENTO DB
        
    }
    ,,,,,,, 
    la variabile viene incrmentata, ma nn saprei come farmi restituire il nome impostato nella funzione di upload.

  9. #9
    molto banalmente ho risolto così:
    Codice PHP:
    if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['upload_img'])) {
        
    $maxSize 512000//byte => 550KB
        
    $acceptType = array(
            
    'jpeg' => 'image/jpeg',
            
    'jpg' => 'image/jpeg',
            
    'png' => 'image/png'
        
    );
        
    $cartella "../gallery/";

        
    $ordine_img 0;
        for (
    $i 0$i count($_FILES['file']['name']); $i++) {
            if (
    $_FILES['file']['name'][$i] != "") {
                
    $nome_upload uniqid('gallery-') . 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)) {
                            
    $ordine_img++;
                            
    insertImg($nome_upload$ordine_img);
                            echo 
    "File " $i " caricato
    "
    ;
                        } 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';
            }
        }

    così funziona tutto.
    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.