Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Consiglio su immagini e db

    devo visualizzare una immagine dentro a un articolo e pensavo di nn salvare l'immagine direttamente nel db, ma di salvare solo il nome.
    allora ho messo su questa funzione:
    Codice PHP:
    function uploadFile() {
        
    $maxSize 512000//byte => 550KB
        
    $acceptType = array(
            
    'png' => 'image/png',
            
    'jpeg' => 'image/jpeg',
            
    'jpg' => 'image/jpeg',
            
    'gif' => 'image/gif'
        
    );
        
    $cartella "uploads/";

        if (
    $_FILES['file'] != "") {
            
    $destinazione $cartella basename($_FILES['file']['name']);
            if (
    $_FILES['file']['size'] <= $maxSize) {
                if (
    in_array($_FILES['file']['type'], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'], $destinazione)) {
                        return 
    $destinazione;
                    } else {
                        return 
    "Errore nell'upload";
                    }
                } else {
                    return 
    "Tipo file non accettato";
                }
            } else {
                return 
    "File troppo grande";
            }
        }

    poi nella pagina dov'è c'è il form:
    Codice PHP:
            if ($_POST['file'] != NULL) {         
                
    $img uploadFile();
            }
            
    saveArticle($_POST['titolo'], $_POST['testo'], $_POST['sezione'], $_POST['categoria'], $img$_POST['tags'], $_POST['pubblicato']); 
    il dubbio che mi sorge: in caso di errore nell'upload che succede?
    cioè, l'upload dell'immagine nn è obbligatorio, ma una volta che uno vuole fare l'upload dell'immagine vorrei che il form nn fosse inviato al db se l'upload nn è corretto.
    come posso fare??

  2. #2
    Potresti fare così:

    Codice PHP:

    if ($_POST['file'] != NULL) {          
          
    $img uploadFile(); 
          if (
    $img == "Errore nell'upload" || $img == "Tipo file non accettato" || $img == "File troppo grande"){
              echo 
    $img;
              
    $img '';
          }

    Cosi controlli se c'è un errore e se c'è lo mostri e poi svuoti la variabile $img così non viene fatto lìinserimento nel db, altrimenti c'è il percorso e viene inserito.. Sei ho capito bene è così

    E poi spero che nella funziona che inserisce i dati nel db, controlli che l'img sia vuota e quindi non fai niente..
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  3. #3
    penso che seguirò la tua soluzione.
    cmq nel mio caso nn serve un controllo nel metodo che fa l'inserimento perchè quel campo può essere NULL in quanto l'immagine nn è obbligatoria.
    se $img è vuoto il campo rimane vuoto e basta.
    ti faccio sapere!!

  4. #4
    ok =)
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  5. #5
    ho fatto così:
    Codice PHP:
    if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['save'])) {
        if (
    $_POST['titolo'] == NULL || $_POST['testo'] == NULL || $_POST['categoria'] == NULL || $_POST['sezione'] == NULL) {
            echo 
    'Titolo, testo, sezione e categoria sono obbligatori';
        } else {
            if (
    $_POST['file'] != NULL) {
                
    $img uploadFile();
            }
            if (
    $img == "Errore nell'upload" || $img == "Tipo file non accettato" || $img == "File troppo grande") {
                echo 
    $img;
                
    $img '';
            }
            
    updateArt($_POST['titolo'], $_POST['testo'], $_POST['sezione'], $_POST['categoria'], $_POST['file'], $_POST['tags'], $_POST['pubblicato'], $_POST['id']);
    //        header('location: index.php');
        
    }

    nel form ci stanno varie textbox e poi c'è questa:
    Codice PHP:
    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" name="articoli" onsubmit="return valida();" enctype="multipart/form-data">
    .....
                <tr>
                    <td>Upload immagine:</td>
                    <td>
                        <input name="file" type="file" />
                    </td>
                </tr>
    il problema è che nn fa l'upload.
    eppure nn eccede il limite massimo e il formato è accettato:
    Codice PHP:
    function uploadFile() {
        
    $maxSize 512000//byte => 550KB
        
    $acceptType = array(
            
    'png' => 'image/png',
            
    'jpeg' => 'image/jpeg',
            
    'jpg' => 'image/jpeg',
            
    'gif' => 'image/gif'
        
    );
        
    $cartella "../uploads/";

        if (
    $_FILES['file'] != "") {
            
    $destinazione $cartella basename($_FILES['file']['name']);
            if (
    $_FILES['file']['size'] <= $maxSize) {
                if (
    in_array($_FILES['file']['type'], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'], $destinazione)) {
                        return 
    $destinazione;
                    } else {
                        return 
    "Errore nell'upload";
                    }
                } else {
                    return 
    "Tipo file non accettato";
                }
            } else {
                return 
    "File troppo grande";
            }
        }

    il file è .jpg e di 52,kb.
    la directory uploads ha permessi 777 e la dislocazione directory è così:
    codice:
    /
    --admin
    ----form
    -uploads
    il form si trova dentro admin e uploads dentro la root del sito.

  6. #6
    cmc metti tutti in una stessa pagina così,
    Codice PHP:
    <?

    function uploadFile() { 
        
    $maxSize 512000//byte => 550KB 
        
    $acceptType = array( 
            
    'png' => 'image/png'
            
    'jpeg' => 'image/jpeg'
            
    'jpg' => 'image/jpeg'
            
    'gif' => 'image/gif' 
        
    ); 
        
    $cartella "../uploads/"

        if (
    $_FILES['file'] != "") { 
            
    $destinazione $cartella basename($_FILES['file']['name']); 
            if (
    $_FILES['file']['size'] <= $maxSize) { 
                if (
    in_array($_FILES['file']['type'], $acceptType)) { 
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'], $destinazione)) { 
                        return 
    $destinazione
                    } else { 
                        return 
    "Errore nell'upload"
                    } 
                } else { 
                    return 
    "Tipo file non accettato"
                } 
            } else { 
                return 
    "File troppo grande"
            } 
        } 
    }

    if (
    $_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['save'])) { 
        if (
    $_POST['titolo'] == NULL || $_POST['testo'] == NULL || $_POST['categoria'] == NULL || $_POST['sezione'] == NULL) { 
            echo 
    'Titolo, testo, sezione e categoria sono obbligatori'
        } else { 
            if (
    $_POST['file'] != NULL) { 
                
    $img uploadFile(); 
            } 
            if (
    $img == "Errore nell'upload" || $img == "Tipo file non accettato" || $img == "File troppo grande") { 
                echo 
    $img
                
    $img ''
            } 
            
    updateArt($_POST['titolo'], $_POST['testo'], $_POST['sezione'], $_POST['categoria'], $_POST['file'], $_POST['tags'], $_POST['pubblicato'], $_POST['id']); 
    //        header('location: index.php'); 
        

    }

    ?>

    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" name="articoli" onsubmit="return valida();" enctype="multipart/form-data"> 
    ..... 
                <tr> 
                    <td>Upload immagine:</td> 
                    <td> 
                        <input name="file" type="file" /> 
                    </td> 
                </tr>

    Ha e prova a cambiare il nome della cartella da ../uploads a /uploads/
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  7. #7
    no il problema era di dover mettere tutto nella stessa pagina.
    alla fine così pare funzionare tutto:
    Codice PHP:
    <?php
    if ($_SERVER['REQUEST_METHOD'] == "POST") {
        if (
    $_POST['titolo'] == NULL || $_POST['testo'] == NULL || $_POST['sezione'] == NULL || $_POST['categoria'] == NULL) {
            echo 
    'Titolo, testo, sezione e categoria sono obbligatori';
        } else {
            
    $maxSize 512000//byte => 550KB
            
    $acceptType = array(
                
    'png' => 'image/png',
                
    'jpeg' => 'image/jpeg',
                
    'jpg' => 'image/jpeg',
                
    'gif' => 'image/gif'
            
    );
            
    $cartella "../uploads/";

            if (
    $_FILES['file'] != "") {
                
    $destinazione $cartella basename($_FILES['file']['name']);
                
    $nome 'uploads/' basename($_FILES['file']['name']);
                if (
    $_FILES['file']['size'] <= $maxSize) {
                    if (
    in_array($_FILES['file']['type'], $acceptType)) {
                        if (
    move_uploaded_file($_FILES['file']['tmp_name'], $destinazione)) {
                            
    $img $nome;
    //                    echo $img;
                        
    } else {
                            
    $img "Errore nell'upload";
                        }
                    } else {
                        
    $img "Tipo file non accettato";
                    }
                } else {
                    
    $img "File troppo grande";
                }
            }
            if (
    $img == "Errore nell'upload" || $img == "Tipo file non accettato" || $img == "File troppo grande") {
                echo 
    $img;
                
    $img '';
            }
            
    saveArticle($_POST['titolo'], $_POST['testo'], $_POST['sezione'], $_POST['categoria'], $_POST['file'], $_POST['tags'], $_POST['pubblicato']);
            
    //        header('location: index.php');
            
    echo "<h2>Tra 5 secondi verrai indirizzato in home page!</h2>";
            
    header('refresh: 5; url=index.php');
        }
    }
    ?>
    form.....
    grazie!!

  8. #8
    Certo se usi PHP_SELF l'action del form diventa la stessa pagina.
    Cmc non hai bisogno di ridimensionarle le img?
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  9. #9
    Originariamente inviato da CiRi..Cuber
    Certo se usi PHP_SELF l'action del form diventa la stessa pagina.
    Cmc non hai bisogno di ridimensionarle le img?
    per ora no, nel senso che ancora dobbiamo decidere la grandezza.
    inoltre stavo valutando se ridimensionarle direttamente da css.

    più che altro avrei un altro problema.
    quando voglio fare una modifica all'articolo pass le variabili in get a un form in un'altra pagina.
    mi sono accorto che se nn gli ridico di fare l'upload il riferimento all'immagine viene cancellato perchè $img è vuota.
    come faccio secondo te?
    ho provato a fare così ma nn ha funzionato:
    Codice PHP:
    if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['save'])) {
        if (
    $_POST['titolo'] == NULL || $_POST['testo'] == NULL || $_POST['categoria'] == NULL || $_POST['sezione'] == NULL) {
            echo 
    'Titolo, testo, sezione e categoria sono obbligatori';
        } else {
            
    $img $_GET['img']; //setto $img con GET
            
    $maxSize 512000//byte => 550KB
            
    $acceptType = array(
                
    'png' => 'image/png',
                
    'jpeg' => 'image/jpeg',
                
    'jpg' => 'image/jpeg',
                
    'gif' => 'image/gif'
            
    );
            
    $cartella "../uploads/";

            if (
    $_FILES['file'] != "") {
                
    $destinazione $cartella basename($_FILES['file']['name']);
                
    $nome 'uploads/' basename($_FILES['file']['name']);
                if (
    $_FILES['file']['size'] <= $maxSize) {
                    if (
    in_array($_FILES['file']['type'], $acceptType)) {
                        if (
    move_uploaded_file($_FILES['file']['tmp_name'], $destinazione)) {
                            
    $img $nome;
                        } else {
                            
    $img "Errore nell'upload";
                        }
                    } else {
                        
    $img "Tipo file non accettato";
                    }
                } else {
                    
    $img "File troppo grande";
                }
            }
            if (
    $img == "Errore nell'upload" || $img == "Tipo file non accettato" || $img == "File troppo grande") {
                echo 
    $img;
                
    $img '';
            }
            
    updateArt($_POST['titolo'], $_POST['testo'], $_POST['sezione'], $_POST['categoria'], $img$_POST['tags'], $_POST['pubblicato'], $_POST['id']);
            echo 
    "<h2>Tra 5 secondi verrai indirizzato in home page!</h2>";
            
    header('refresh: 5; url=index.php');
        }


  10. #10
    Originariamente inviato da fermat
    per ora no, nel senso che ancora dobbiamo decidere la grandezza.
    inoltre stavo valutando se ridimensionarle direttamente da css.
    Tramite css, a meno che non sono tutte della stessa misura te lo sconsiglio!

    Per quanto riguarda il resto, non ho capito cosa vuoi fare, spiegati meglio!
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

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 © 2024 vBulletin Solutions, Inc. All rights reserved.