Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    58

    come far apparire il valore di un input type="file"

    Salve a tutti,

    ho un problema nel far apparire il valore in un input tipo File. Nel modulo della pagina modifica.php appaiono diversi campi di testo correttamente, ma manca il valore dell'immagine precedentemente inserita insieme agli altri valori, nella pagina insert.php


    Nerlla pagina modifica.php nel modulo per l'aggiornamento ottengo le seguenti informazioni:

    input type=text name=$titolo value=$title Valore che appare nel campo = Titolo articolo

    input type=text name=$desc value=$desc Valore che appare nel campo = Desc. articolo

    input type=file name=$img value=$img Valore che appare nel campo = non appare nulla!


    Al momento dell'inserimento nella pagina insert.php, l'input File nel modulo, ha un altro nome tipo: name="img_name" e oltre a queste informazioni, vengono anche inserite le dimensioni dell'immagine nel database.


    Come posso far apparire il valore in un input type="file"? E soprattutto, posso poi aggiornare quel file (immagine) semplicemente inserendo nella pagina modifica.php una nuova immagine?

    Basterį il nome dell'immagine foto.jpeg (se l'immagine é giį presente nella cartella immagini) o dovrį essere inserita tutta la path come avviene al momento dell'inserimento nella pagina insert.php?

    Un sentito ringraziamento a chi vorrį darmi una mano.


    Tim

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Ciao, hai mai fatto un upload con php?

    Ci sono diverse cose che cambiano rispetto ai campi testuali.

    Innanzitutto nel form devi aggiungere "enctype=multipart/form-data", poi nella pagina che riceve il file avrai riempito l'array $_FILES, indipendentemente che tu faccia il submit in GET o POST, i dati relativi al file non appariranno.

    L'array $_FILES ha 4 chiavi associative:

    $_FILES['size']; // le dimensioni in byte del file caricato
    $_FILES['name']; // il nome originale sull'hard disk dell'utente che l'ha caricato.
    $_FILES['tmp_name']; // il nome con path del file una volta caricato (in genere viene caricato nella directory /tmp/, ma dipende dalla configurazione del server e dal sistema operativo.
    $_FILES['error']; // un codice che verrą valorizzato in caso di errore.

    Come hai visto il file non viene caricato con il nome originale, e non viene caricato nella root del tuo sito.

    Per spostarlo dove vuoi tu (se non lo fai periodicamente il server svuota la directory temporanea), usi la funzione move_uploaded_file.

    Ad ogni modo ti rimando a questo articolo, che ti farą comprendere a pieno i passaggi:

    http://php.html.it/articoli/leggi/848/upload-con-php/

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    58
    Ciao gianiaz,

    grazie per la pronta risposta.

    In effetti mi cimento da poco con l'upload dei file immagine e il loro relativo aggiornamento. Sapevo comunque che non appaiono nel campo dell'input i valori. La domanda era se cč un sistema per farli apparire visto che se indico tipo text appare subito il nome del file. Pare quindi che non sia possibile in quantpo si tratta di un file che viene inserito in un file Temp con un nome diverso.

    Bene, e allora come faccio ad aggiornare le immagini partendo da quel modulo?

    Potresti indicarmi uno spezzone di codice dove poter vedere come funziona? Le 4 chiavi associative dell'Array $_FILES che hai indicato sono presenti appunto nella pagina insert.php ma io l'aggiornamento delle informazioni lo faccio dalla pagina modifica.php , come fare quindi per far aggiornare quell'immagine? Il fine é di aggiornare l'immagine lasciando le altre informazioni intatte.

    Ho letto tutto l'articolo che hai proposto, purtroppo peró parla di Upload e non di aggiornamento vero e proprio.

    Quali sono i parametri che bisogna richiamare visto che il file Temp verrį probabilmente sovrascritto, ma l'immagine rimane al suo posto nella pagina dell'articolo. Č proprio quell'immagine che vorrei aggiornare.

    Come fare?


    Grazie ancora per l'aiuto.

    Tim

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Scusa ma non credo di aver capito bene il problema, se rifai un upload di un'immagine nella pagina modifica otterrai sempre l'array $_FILES, e utilizzerai lo stesso metodo che hai utilizzato per l'inserimento.

    Ho capito bene?

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    58
    Ciao gianiaz,

    grazie per la risposta. temo sia molto difficile spiegarti senza farti vedere come stanno le cose. In realtį é come dici tu, fare un upload della foto nuovamente ma questa volta nella pagina modifica, dovrebbe risolvere il problema.

    Ho provato a copiare l'intero blocco proveniente dalla pagina Insert.php relativo alle immagini (Form inputs file e la query al database, quest'ultima modificandola da Insert Into nometabella in Update nometabella Set . Ma non sono riuscito a farlo funzionare.

    Pensi che un semplice Update usando la query "insert Into" sia piś indicato a questo punto? Praticamente sullo stesso ID, sovrascrivere l'immagina relativa?

    Mi viene il dubbio in questo momento che possa essere questa la soluzione per il problema. Io ho indicato Update nella query e non come in originale dal file insert.php, Insert Into.

    Se hai qualche idea sarebbe molto gentile da parte tua farmelo sapere. Io intanto vado a controllare quest'ultima ipotesi, eventualmente se riesco, ti faccio sapere.


    Grazie ancora per la tua disponibilitį.

    Tim

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Ma ottieni qualche errore dalla procedura?

    Il file va a finire dove vuoi e con il nome che vuoi?
    Il db invece mi sembra di aver capito che non viene aggiornato, giusto?

    Tieni presente che la sintassi delle query di update č diversa da quelle di inserimento:

    es.
    codice:
    UPDATE tabella SET campo1="valore1", campo2="valore2" WHERE id=$id
    Dove $id te lo sarai portato dietro nel form di modifica.


  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    58
    Cuai gianiaz,

    grazie per la tua disponibilitį.

    Seguendo un tuo consiglio e modificandolo in parte ho copiato la query della pagina insert.php e l'ho inserita nella pagina modifica.php.

    Quando ora vado a fare l'aggiornamento delle immagini per esempio o di un qualunque altro campo, la query che é impostata su INSERT INTO mi crea una nuova tabella con ID e tutto il resto identici senza sovrascrivere quell'altra.

    Il problema sta quindi nel fatto che io faccio fare INSERT e non UPDATE alla query. Ho provato a modificare la query in UPDATE ma data la mia poca esperienza mi ritorna un errore:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(id, cod, imgs, imgb, imgs_h, imgs_w, imgb_h, imgb_w, img_op, db_it, db_en, dl_i' at line 1

    La query é la seguente:

    $query = "INSERT INTO catalog (id, cod, imgs, imgb, imgs_h, imgs_w, imgb_h, imgb_w, img_op, db_it, db_en, dl_it, dl_en, lung, altz, prof, alt, alten, tito, titen, desc_ita, desc_eng, cat) VALUES (NULL ,

    '".$codice."',
    '".$img_small_name."',
    '".$img_big_name."',

    '".$heights."',
    '".$widths."',
    '".$heightb."',
    '".$widthb."',

    '".$img_op_name."',
    '".$descb_it."',
    '".$descb_en."',
    '".$text_it."',
    '".$text_en."',
    '".$_POST[lung]."',
    '".$_POST[altz]."',
    '".$_POST[prof]."',
    '".$_POST[alt]."',
    '".$_POST[alten]."',
    '".$_POST[tito]."',
    '".$_POST[titen]."',
    '".$_POST[desc_ita]."',
    '".$_POST[desc_eng]."',
    '".$_POST[cat]."' )";
    mysql_query($query) or die(mysql_error());
    mysql_close();



    Come fare per modificarla in UPDATE SET ?


    La query originale che faceva l'Update delle informazioni ma non delle immagini é la seguente:


    $rs = mysql_query("UPDATE catalog SET

    cod = '$_POST[cod]',
    db_it = '$_POST[db_it]',
    db_en = '$_POST[db_en]',
    dl_it = '$_POST[dl_it]',
    dl_en = '$_POST[dl_en]',
    lung = '$_POST[lung]',
    altz = '$_POST[altz]',
    prof = '$_POST[prof]',
    alt = '$_POST[alt]',
    alten = '$_POST[alten]',
    tito = '$_POST[tito]',
    titen = '$_POST[titen]',
    desc_ita = '$_POST[desc_ita]',
    desc_eng = '$_POST[desc_eng]',
    novita = '$_POST[novita]',
    cat = '$_POST[cat]',
    date = NOW()
    WHERE id = '$_POST[id]' ") or die("Errore: ".mysql_error());
    mysql_query($rs);

    mysql_close();




    Č forse alla fine possibile modificare quest'ultima query tenendo conto che i file immagini da aggiungere sono:

    img_small = '$_POST[img_small]',
    img_big = '$_POST[img_big]',
    img_op = '$_POST[img_op]',



    Un sentito ringraziamento per il tuo aiuto.


    Tim

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Ma sei sicuro che il nome dei files stia in questi campi:

    Č forse alla fine possibile modificare quest'ultima query tenendo conto che i file immagini da aggiungere sono:

    img_small = '$_POST[img_small]',
    img_big = '$_POST[img_big]',
    img_op = '$_POST[img_op]',
    e non in qualcosa del genere?
    codice:
    $_FILES['img_small']['name']
    In ogni caso la soluzione l'hai gią scritta tu, basta aggiungere alla tua query la coppia
    codice:
    nomecampo="valore",
    quindi:
    codice:
    $rs = mysql_query("UPDATE catalog SET
    
    cod = '$_POST[cod]',
    db_it = '$_POST[db_it]',
    db_en = '$_POST[db_en]',
    dl_it = '$_POST[dl_it]',
    dl_en = '$_POST[dl_en]',
    lung = '$_POST[lung]',
    altz = '$_POST[altz]',
    prof = '$_POST[prof]',
    alt = '$_POST[alt]',
    alten = '$_POST[alten]',
    tito = '$_POST[tito]',
    titen = '$_POST[titen]',
    desc_ita = '$_POST[desc_ita]',
    desc_eng = '$_POST[desc_eng]',
    novita = '$_POST[novita]',
    cat = '$_POST[cat]',
    
    img_small='".$_FILES['img_small']['name']."', 
    
    date = NOW()
    WHERE id = '$_POST[id]' ") or die("Errore: ".mysql_error());
    mysql_query($rs);
    Infine anche se esula dall'oggetto di questa discussione, una cosa da evitare č fare un inserimento diretto come fai tu in questa query, i dati che arrivano via $_POST $_GET $_COOKIE vanno sempre controllati.


  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    58
    Stavo giį per fare un salto dalla sedia quando ho visto la tua soluzione.

    Purtroppo cé un errore. Qui di seguito l'errore della query che ho copiato qui sopra:


    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'date = NOW() WHERE id = '872'' at line 22


    Dove sta questo errore? E siccome in realtį si potrebbero fare aggiornare sempre tutte le informazioni visto che verrebbero sovrascritte ogni volta anche se non modificate, si potrebbe togliere: date = NOW()
    WHERE id = '$_POST[id]'
    che provoca questo errore ? se si, potresti reinserire la query esatta?

    Altrimenti magari dirmi come evitare quell'errore?...

    Grazie per la tua squisita disponibilitį e preparazione.

    Tim

    ps:

    Ma sei sicuro che il nome dei files stia in questi campi:


    Citazione:

    Č forse alla fine possibile modificare quest'ultima query tenendo conto che i file immagini da aggiungere sono:

    img_small = '$_POST[img_small]',
    img_big = '$_POST[img_big]',
    img_op = '$_POST[img_op]',
    NO!, io avevo immaginato qualcosa del genere, ma in realtį é la tua stringa che si sarebbe dovuto usare.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    58
    Scusami gianiaz,

    nel copiare la query non avevo copiato una virgola.
    img_small='".$_FILES['img_small']['name']."',

    L'errore é il seguente: Unknown column 'img_small' in 'field list'


    Qualche idea?

    Tim

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.