Come caricare e visualizzare un'immagine

ymod

Utente Attivo
14 Dic 2020
21
0
1
Io devo creare un post, dove inserisco il titolo, il testo e un'immagine. Poi clicco sul pulsante 'crea post' e il post si visualizza sotto. Ma non riesco a far visualizzare l'immagine. Questo è il mio codice:

nella pagina blog.php dove creo il post ho:
PHP:
if(isset ($_POST['creapost'])){
    $uploadDir = __DIR__.'\immagini';
    
    $allowedextension = array("png", "jpg", "jpeg", "gif" );
        if  (!empty($_FILES)){
            foreach ($_FILES as $file) {
                if (UPLOAD_ERR_OK === $file['error']) {
                    $fileName = basename($blog.$file['name']);
                    // prendo l'estensione del file
                    $fileextension = pathinfo($fileName, PATHINFO_EXTENSION);
                    if (! in_array($fileextension, $allowedextension)) {
                        $error= "il file che hai caricato non ha un' estensione valida!<br>Per favore, seleziona un immagine in formato png, jpg, jpeg o una gif"  ;
                        $fileName= "";
                    }
                    else{
                        move_uploaded_file($file['tmp_name'], $uploadDir.DIRECTORY_SEPARATOR.$fileName);
                    }
                }
                else{
                    if ($file['error']==4){
                        $fileName= NULL;
                    }
                    else{
                    $error=" errore nel caricamento del file";
                    }
                }
            }
        }
        else{
            $fileName= NULL;
        }
    
    if (($fileName != "") or (is_null($fileName))){
    $titolopost = $_POST['titolopost'];
    $testo = $_POST['areapost'];
    $img = $_POST['img'];
    
    
    $query2 = "INSERT INTO post(titoloPost,data,ora,testo,nomeUtente,titoloBlog,img) VALUES ('$titolopost', SYSDATE(), NOW(), '$testo',(SELECT nomeUtente FROM utentiregistrati WHERE nomeUtente = '$nomeutente'),(SELECT titoloBlog FROM blog WHERE titoloBlog = '$blog'),'$img')";
    $result2 = mysqli_query($mysqli, $query2);
    
    if(!$result2){
    echo 'errore';
    } 
    }
}

in HTML per caricare l'immagine questo:
HTML:
<label for "immagine">Inserisci un'immagine (GIF, JPEG, JPG, PNG): </label>
                <input type="file" value="scegli immagine" name="img" />

Poi per visualizzare ogni singolo post, e quindi l'immagine, ho fatto un ciclo :

PHP:
<?php

    $query3 = "SELECT * FROM post WHERE titoloBlog = '$blog'";
    $result3 = mysqli_query($mysqli, $query3);
    
    while($row3= mysqli_fetch_assoc($result3)){
    $postdititolo = $row3["titoloPost"];
    $testopost = $row3["testo"];
    $imgpost = $row3["img"];
    $datapost = $row3["data"];
    $orapost = $row3["ora"];
    $idPost = $row3["IDpost"];

    ?>
    
    <div id ='visualizzapost'>
    
        <p id = "dataora"> <?php echo $datapost ?> - <?php echo $orapost?> </p>
        <h3 id = "Tpost"> <?php echo $postdititolo ?> </h3>
        
        <?php
            if (empty($imgpost)){ ?>
                <script>
                    $(document).ready(function(){
                        $('#img<?php echo $idPost; ?>').hide();
                    });
                </script>
            <?php } else{ ?>
                <script>
                     $(document).ready(function(){
                        $('#img<?php echo $idPost; ?>').show();
                    });
                </script>
            <?php }; ?>
            <img  id="img<?php echo $idPost; ?>" src="immagini/<?php echo $imgpost ?>" style="display:block; margin:10% auto; text-align:center;  width:40%; ">
            </img>
            
        
        <p id = "Testopost"> <?php echo $testopost ?> </p>

Le query funzionano correttamente, l'immagine viene inserita nel database, ma non viene visualizzata. Perchè?
 

Discussioni simili