• User

    Mi avete abbandonato?:bho:


  • User Attivo

    Ciao giovy58,

    ho provato ad inserire un'immagine ed in effetti c'e' qualcosa che non funziona.

    Prova a postare il codice di "insert.php" e "VisualizzaFoto.php".

    :ciauz:


  • User Attivo

    Sicuro che nella variabile $percorso vada impostato "../public/img_foto/" e non "public/img_foto/".
    Se lo script che deve spostare la foto nella cartella pubblic, si trova allo stesso livello della cartella, "../" non serve, in quanto obbligano lo script a tornare indietro di un livello superire per cercare la cartella dove posizionare i file.


  • User

    Si, sono sicuro in quanto è in una cartella superiore del sito, e tralarto con una sola immagine funziona, a dir la verità anche con due ci sono riuscito, ma devo riscrivere sempre la routine, e mi volevo evolvere un pochino(visto che non capsco nulla di programmazione) utilizzando il ciclo di for, che potrebbe avere degli sviluppi interessanti, ad esempio si potrebbe decidere prima quante immagini impostare per ogni articolo etc.


  • User Attivo

    Secondo me non funziona per il fatto che cerchi di inviare più immagini nella stessa cartella public rinominandole tutte con lo stesso nome.

    mysql_db_query(Sql125150_5, $comando);

    for(...)
    {
    $ultimo_id=mysql_insert_id();
    $file_temp=($_FILES['userfile.$numFoto']['tmp_name']);
    $percorso="../public/img_foto/";
    $nuovo_nome=$percorso.$ultimo_id.".jpg";

    Impostato così, $ultimo_id è sempre uguale ad ogni ciclo del FOR dato che l'inserimento del DataBase è unico e viene eseguito prima di entrare nel FOR.
    Di conseguenza $nuovo_nome=$percorso.$ultimo_id.".jpg"; sarà sempre uguale per ogni foto inviata, causando sovrascrizioni oppure errori.
    Per questo se ripeti due volte la routin funziona, perchè crei un nuovo inserimento nel DB e quindi un nuovo ID da assegnare alla foto.


  • User

    Hai perfettamente ragione per la prima parte, in quanto l'id rimane lo stesso, però quando inserisco due foto nel form inserisco due immagini con nome file diversi e nella pagina che upload le immagini ripeto due volte la routine dell'upload con i due nomefile diversi, ma l'id del record al quale sono abbinati è identico cioè unico.
    Faccio l'esempio solo perchè ho paura di non sapermi spiegare:
    Nel Form che in questo caso è un html
    [HTML]<tr valign="baseline"> <td nowrap align="right">Foto</td>
    <td> <input name="userfile" type="file" id="foto"></td></tr>
    <tr valign="baseline"> <td nowrap align="right">Foto 2</td>
    <td> <input name="userfile1" type="file" id="foto"></td></tr>
    [/HTML]

    Nella pagina di inserimento

    [PHP]$ultimo_id=mysql_insert_id(); //valore di foto_id dopo l'inserimento
    $file_temp=($_FILES['userfile']['tmp_name']); //file temporaneo che contiene l'immagine caricata
    $percorso="../public/img_foto/"; //cartella sul server dove verrà spostata la foto
    $nuovo_nome=$percorso.$ultimo_id.".jpg"; //nuovo nome dell'immagine
    echo "$nuovo_nome <br>";
    if (is_uploaded_file($file_temp)){
    move_uploaded_file($file_temp,$nuovo_nome); //verifica se il file è stato caricato sul server}
    header("Location:VisualizzaFoto.php"); // sposto l'immagine nella cartella e vado alla pagina di visualizzazione
    } else {
    header("Location:Errore.php"); // vado alla pagina di errore
    }
    $s='bis';
    $ultimo_id=mysql_insert_id(); //valore di foto_id dopo l'inserimento
    $file_temp=($_FILES['userfile1']['tmp_name']); //file temporaneo che contiene l'immagine caricata
    $percorso="../public/img_foto/"; //cartella sul server dove verrà spostata la foto
    $nuovo_nome=$percorso.$s.$ultimo_id.".jpg"; //nuovo nome dell'immagine
    echo "$nuovo_nome <br>";
    if (is_uploaded_file($file_temp)){
    move_uploaded_file($file_temp,$nuovo_nome); //verifica se il file è stato caricato sul server}
    [/PHP]

    Fin qui ci sono, ma se riuscissi a fare lo stesso lavoro con il ciclo di for, potrei decidere a priori anche in numero di foto da inserire, e penso che la cosa possa servire anche ad altri


  • User Attivo

    Nello script che hai postato, quello con il FOR, il nome di destinazione non cambia mai, mentre nella routin ripetuta si.

    FOTO 1:
    $nuovo_nome=$percorso.$ultimo_id.".jpg";

    FOTO 2:
    $s='bis';
    $nuovo_nome=$percorso.$s.$ultimo_id.".jpg";

    Se ci fai caso $nuovo_percorso di FOTO1 è diverso da $nuovo_percorso di FOTO2 perchè inserisci "bis".

    Prova a mettere nel ciclo FOR questa stringa e fare un test
    $nuovo_nome=$percorso.$numFoto.ultimo_id.".jpg";


  • User

    Test effettuato, sempre lo stesso errore,
    ../public/img_foto/13.jpg si è verificato un errore durante l'upload: ../public/img_foto/23.jpg si è verificato un errore durante l'upload: ../public/img_foto/33.jpg si è verificato un errore durante l'upload:

    Come vedi il nome lo sistema, ma non effettua l'upload delle immagini.

    E' come se avesse il nome ma non l'immagine da uplodare cioè voglio dire mi dà l'impressione che dal form alla pagina di questo script l'indicazione dell'immagina da uplodare si perdesse, mtre il nome se lo costruisce nel ciclo di for non so se ho reso l'idea di quello che penso.


  • User Attivo

    Provare a togliere il punto in questi due pezzi di codice

    <input name='userfile*.*$numFoto' ...

    $file_temp=($_FILES['userfile*.*$numFoto']['tmp_name']);

    Cambiando in

    <input name='userfile$numFoto' ...

    $file_temp=($_FILES['userfile$numFoto']['tmp_name']);


  • User

    Niente da fare, sempre lo stesso errore.