[PHP] avatar codici non funzionano

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

So che l'argomento c'è però purtroppo benchè sia stato trattato proprio da me, i codici che ho visto non funzionano. Il problema è che devo caricare delle immagini con le seguenti estensioni: *.jpeg, *.png, *.bmp, *.gif e dovrebbero essere salvate nel db, ovviamente non l'immaine perchè occupa un botto però il suo link. Qualcuno mi può aiutare ???? Posso anche ripostare i vecchi codici che avevo ma ho già paura di fare con questo argomento crossposting (si chiama così ???). Quindi vi prego ai moderatori di non penalizzarmi e sopratutto se è possibile di non cancellare l'argomento in quanto sto combattendo da giorni a fare funzionare anche quello vecchio ma non va. Grazie della vostra collaborazione. E scusatemi in anticipo per la ripetizione dell'argomento.
 
come da titolo per poter espletare la tua richiesta avremmo bisogno di verificare quali sono i codici non funzionanti.
Attendiamo tue.
 
Questo è l'upload dell'immagine ma pare che non carichi niente. mi ricordo che funzionava (quando mi avevate aiutato qualche anno fa).

PHP:
require_once("db_connect.php");

//#se non esistono delle cartelle le creo
if(!file_exists('img_temp'))
{
    mkdir('img_temp/',0777);
}
if(!file_exists('immages'))
{
    mkdir('immages/',0777);
}
///inizializziamo il messaggio
$messaggio = " ";
// estensioni ammesse
$estensioni = array("jpg", "png", "bmp", "pdf");
// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
$dir = getcwd() . "/immages";
// verifichiamo che sia stato premuto il submit
if (isset($_POST['upload']) && $_POST['upload'] == "Carica immagine") {
    // recuperiamo e uniamo le informazionei sulle immagini
    $infoimages = array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']);
    // scorriamo l'array
    foreach ($infoimages as $k => $v) {
        // nome del file
        $nomefile = strtolower($k);
        // recuperiamo l'esensione
        $estensionefile = pathinfo($nomefile, PATHINFO_EXTENSION);
        // controlliamo il tipo immagine
        if (in_array(strtolower($estensionefile), $estensioni)) {
            // controllo caricamento
            if (is_uploaded_file($v)) {
                // spostiamo il file nella cartella immagini
                if (!move_uploaded_file($v, "$dir/$nomefile")) {
                    $messaggio = "Impossibile spostare il file";
                } else {
                    $messaggio = "Immagini/e caricata e memorizzata con successo";
                   // $q_i = mysql_query("INSERT INTO immagine(immagine,id_nome) VALUES('$nomefile','$id_nome'))");
                 
                    //$query = mysql_query("INSERT INTO immagine(immagine,id_nome) VALUES('$nomefile','$id_nome')");
                   
                    $query = "INSERT INTO immagine(immagine,id_nome) VALUES ('$nomefile',".$_SESSION['id'].")";
                   
                    mysql_query($query);

                }
            } else {
                $messaggio = "Errore nell'upload del file.";
            }
        } else {
            $messaggio = "Tipo immagine non consentito";
        }
    }
}
?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Carica immagini</title>
        <style>
            .thumb {
                width:96px;
                height:96px;
                margin:0 5px;
            }
        </style>
    </head>
    <body>
        <form enctype='multipart/form-data' method='post' action='<?php echo $_SERVER['PHP_SELF'] ?>'>
            <p><?php echo $messaggio ?></p>
            <p>Selezione una o piu immagini: </p>
            <!-- Campo file di nome "image" -->
            <p><input name="image[]" type="file" size="40" multiple="multiple"/></p>          
            <!-- Pulsante -->
            <p><input name="upload" type="submit" value="Carica immagine" /></p>
        </form>
        <p>Immagini caricate</p>
        <?php
        // indico il percorso della cartella
        $d = dir(getcwd() . "/immages");
        //ciclo il contenuto
        while ($entry = $d->read()) {
            if ($entry != "." && $entry != "..") {
                // se non è un altra cartella
                if (!is_dir("immages/" . $entry)) {
                    // mostro l'immagine
                    echo "<img class='thumb' src='immages/" . $entry . "' alt='immages'/>";
                }
            }
        }
        $d->close();
?>

E questo è il codice per caricare l'immagine:

PHP:
<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form method="post" action="addavatar2.php" enctype="multipart/form-data">
    <input type="file" name="miofile">  
    <input type="submit" value="Upload">
</form>
        <?php
        require_once("db_connect.php");
        ?>
    </body>
</html>

Due cose che porto all'attenzione:

1) La cartella contenente l'immagine si chiama "avatar";

2) Se fosse possibile visualizzare solo le immagini

Questi sono gli errori che mi da:

Warning: mkdir(): Permission denied at line 15 in file addavatar.php
Warning: mkdir(): Permission denied at line 19 in file addavatar.php

La cartella è già stata creata. Grazie. Mi sono accorto che ci sono altri due errori:

Warning: dir(/volume1/web/utenti/prova2/immages): failed to open dir: No such file or directory in /volume1/web/utenti/prova2/addavatar2.php on line 88
Fatal error: Call to a member function read() on boolean in /volume1/web/utenti/prova2/addavatar2.php on line 90
 
mi spieghi perchè hai richiamato nell'html il db_connect.php ?
 
ecco a te quello che cerchi clicca qui
Questo è il codice gemello di quello che hai incollato
ovviamente non richiamare il db nell'html.
Segui passo per passo quelle istruzioni.
Solo dopo aver capito dove stai sbagliando interveniamo.
 
Salve a tutti,

Come promesso finalmene ho potuto testare il codice che mi avete passato. Il mio era decisamente incasinato. Però non carica niente. partiamo con ordine. innanzi tutto non mi da nessun errore e questo è una cosa buona e giusta, nel momento in cui vado a carica l'immagine e la seleziono mi dice "nessuna immagine selezionata". Questo è il codice:

upload.php

PHP:
<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title>Carica Immagine</title>
        <style>
            .thumb {
                width:96px;
                height:96px;
                margin:0 5px;
            }
        </style>
    </head>
    <body>
               
        <form enctype='multipart/form-data' method='post' action='<?php echo $_SERVER['PHP_SELF'] ?>'>
            <p><?php echo $messaggio ?></p>
            <p>Selezione immagine: </p>
            <!-- Campo file di nome "image" -->
            <p><input name="image" type="file" size="40" enctype='multipart/form-data'/></p>           
            <!-- Pulsante -->
            <p><input name="upload" type="submit" value="Carica immagine" /></p>
        </form>
        <p>Immagini caricate</p>

        <?php
        // put your code here
        ?>
    </body>
</html>

Questo è addavatar.php

PHP:
<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title>Aggiungi Avatar</title>
    </head>
    <body>
        <?php
        require_once("db_connect.php");
///inizializziamo il messaggio
$messaggio = " ";
// estensioni ammesse
$estensioni = array("jpg", "png", "bmp", "pdf");
// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
$dir = getcwd() . "/avatar";
// verifichiamo che sia stato premuto il submit
if (isset($_POST['upload']) && $_POST['upload'] == "Carica immagine") {
    // nome del file
    $nomefile = strtolower($_FILES["image"]["name"]);
    // recuperiamo l'esensione
    $estensionefile = pathinfo($nomefile, PATHINFO_EXTENSION);
    // controlliamo il tipo immagine
    if (in_array(strtolower($estensionefile), $estensioni)) {
        // controllo caricamento
        if (is_uploaded_file($_FILES["image"]["tmp_name"])) {
            // spostiamo il file nella cartella immagini
            if (!move_uploaded_file($_FILES["image"]["tmp_name"], "$dir/$nomefile")) {
                $messaggio = "Impossibile spostare il file";
            } else {
                $messaggio = "Immagine caricata e memorizzata con successo";
                $q_i = mysql_query("INSERT INTO photo(immagine) VALUES('$nomefile')");
//                var_dump($q_i);
            }
        } else {
            $messaggio = "Errore nell'upload del file.";
        }
    } else {
        $messaggio = "Tipo immagine non consentito";
    }
}

// indico il percorso della cartella
// Questo è il terzo file che non viene chiamato in nessun modo. Quindi  ho pensato
//  di metterlo di seguito

$d = dir(getcwd() . "/avatar");
//ciclo il contenuto
while ($entry = $d->read()) {
    if ($entry != "." && $entry != "..") {
        // se non è un altra cartella
        if (!is_dir("/avatar" . $entry)) {
            // mostro l'immagine
            echo "<img class='thumb' src='img/" . $entry . "' alt='img'/>";
        }
    }
}
$d->close();

        ?>
    </body>
</html>

Questo è il risultato finale.

Nessun_file_selezionato.png

Mi sapreste spiegare il perchè ??? Ah un ultima cosa la tabella.

Tabella: photo

PHP:
create table photo (
   
id            INT(11) NOT NULL AUTO_INCREMENT,
photo      VARCHAR(255) NOT NULL,
PRIMARY KEY (id);
);
 

Discussioni simili