Pagina 1 di 4 123 ... UltimoUltimo
Visualizzazione risultati 1 fino 30 di 104

Discussione: inserire foto in mysql

  1. #1
    Guest

    Predefinito inserire foto in mysql

    salve sto creando una pagina news. ogni news deve contenere delle foto come faccio a inserire foto nel DB mysql.
    ho già creato
    titolo
    testo
    con DB mysql e php .
    adesso non so come inserire le foto su ogni news

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Non è consigliabile inserire dati come immagini nel database. Tieni le immagini nei file all'interno dello spazio web, e includile nel testo dell'articolo come normali immagini usando l'apposito elemento HTML img.

  3. #3
    Guest

    Predefinito

    non ho capito come fare.perche' la pagina news sara' collegata al DB sql tramite script php. come faccio ad inserire in ogni news che aggiungo le immagini?

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da seprova Visualizza messaggio
    non ho capito come fare.perche' la pagina news sara' collegata al DB sql tramite script php. come faccio ad inserire in ogni news che aggiungo le immagini?
    metti le immagini in una cartella, e nel db memorizzi il nome (con o senza path).
    Quando la richiami avrai il valore di src del tag img

  5. #5
    Guest

    Predefinito

    non riesco a capire come faccio ad inserire nel DB e programmarlo in php
    cioe' tramite il form dove aggiungo titolo e descrizione delle news
    devo avere un altro modulo dove c'e' sfoglia trovare foto e inserirla sotto la news
    Ultima modifica di seprova : 02-05-2015 alle ore 07.31.29

  6. #6
    Guest

    Predefinito

    allora ho inserito nel form
    titolo
    descrizione
    e foto con il seguente comando:Immagine:
    Codice HTML:
    <input type="file" name="txt_file" size="40">
    invece di inserire nel DB voglio inserirle in una cartella cosi' allegeriamo il DB con solo il titolo e descrizione.
    Codice PHP:
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Senza nome 1</title>
    </head>
    <body>
    <?php
    $username
    ="seprova";
    $password="";
    $database="my_seprova";
    mysql_connect(localhost,$username,$password);
    @
    mysql_select_db($database)or die ("Impossibile selezionare il DB");
    $query=("SELECT*FROM novita");
    $risultati=mysql_query($query);
    $num=mysql_numrows($risultati);
    mysql_close ();
    echo
    "<b><center>Benvenuti nelle NEWS </center></b><br><br>";
    $i=0; while ($i<$num){
    $titolo=mysql_result($risultati,$i,"titolo");
    $corpo_testo=mysql_result($risultati,$i,"corpo_testo");
    echo
    "<b><center>$titolo</b></center><br>";
    echo
    "<b>$corpo_testo</b><hr>";
    $i++;
    }
    ?>
    </body>
    </html>
    questo il codice creato funzionante.
    non so adesso come fare per l'inserimento delle fotografie nella cartella e visualizzarle sotto a descrizione.
    lo schema della pagina news sara questo:
    titolo (centrale) descrizione e fotografie sotto ad ogni descrizione
    Ultima modifica di karl94 : 03-05-2015 alle ore 17.27.02 Motivo: Formattazione del codice

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da seprova Visualizza messaggio
    e foto con il seguente comando:Immagine: <input type="file" name="txt_file" size="40">
    invece di inserire nel DB voglio inserirle in una cartella cosi' allegeriamo il DB con solo il titolo e descrizione.
    Aspetta.
    Non inserirle nel DB non vuol dire NON FARE L'UPLOAD.
    Devi inviare il file ugualmente al server, solo che invece che salvarlo dentro al DB, lo sposti in una cartella a tua discrezione (che puoi e devi protegere), e nel DB registri il solo nome.

    Citazione Originalmente inviato da seprova Visualizza messaggio
    [...]questo il codice creato funzionante.
    non so adesso come fare per l'inserimento delle fotografie nella cartella e visualizzarle sotto a descrizione.
    lo schema della pagina news sara questo:
    titolo (centrale) descrizione e fotografie sotto ad ogni descrizione
    Per richiamare l'immagine metti dove la vuoi

    Codice:
    <img src="path/alla/cartella/dove/tieni/l'immagine/mia_immagine.jpg>
    PS. Stai usando uno stile di scrittura davvero obsoleto.
    tag come <center> non devi usarli, usa piuttosto i fogli di stile.
    le istruzioni mysql_ sono deprecate usa piuttosto mysqli o PDO
    Ultima modifica di vplaza : 02-05-2015 alle ore 10.18.23

  8. #8
    Guest

    Predefinito

    il codice che hai scritto dove lo devo mettere. e la prima volta che ho queste immagini da inserire.cioe' il codice che mi hai scritto lo devo inserire qua:
    Codice PHP:
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Senza nome 1</title>
    </head>
    <body>
    <?php
    $username
    ="seprova";
    $password="";
    $database="my_seprova";
    mysql_connect(localhost,$username,$password);
    @
    mysql_select_db($database)or die ("Impossibile selezionare il DB");
    $query=("SELECT*FROM novita");
    $risultati=mysql_query($query);
    $num=mysql_numrows($risultati);
    mysql_close ();
    echo
    "<b><center>Benvenuti nelle NEWS </center></b><br><br>";
    $i=0; while ($i<$num){
    $titolo=mysql_result($risultati,$i,"titolo");
    $corpo_testo=mysql_result($risultati,$i,"corpo_tes to");
    echo
    "<b><center>$titolo</b></center><br>";
    echo
    "<b>$corpo_testo</b><hr>";
    <
    img src="path/alla/cartella/dove/tieni/l'immagine/mia_immagine.jpg>
    $i++;
    }
    ?>
    </body>
    </html>
    Ultima modifica di karl94 : 03-05-2015 alle ore 17.27.21

  9. #9
    Guest

    Predefinito

    Beh, innanzitutto ti dico che dovresti proprio studiare almeno le basi.
    Dove metterlo lo sai tu e solo tu.
    Quello è solo il tag che mostra una immagine in una pagina web per cui lo devi mettere esattamente dove vuoi che appaia.
    Nell'ultimo pezzo di cocie che hai scritto hai anche fatto l'errore di scrivere html in mezzo al php. Quindi o chiudi i tag PHP prima di scrivere il tag IMG e lo riapri dopo

    Codice PHP:
    <?php
    [...]
    echo
    "<b>$corpo_testo</b><hr>";
    ?>
    <img src="path/alla/cartella/dove/tieni/l'immagine/mia_immagine.jpg">
    <?php
    $i
    ++;
    [...]
    ?>
    oppure te lo fai stampare dallo stesso interprete PHP


    Codice PHP:
    <?php
    [...]
    echo
    "<b>$corpo_testo</b><hr>";
    echo
    "<img src=\"path/alla/cartella/dove/tieni/l'immagine/mia_immagine.jpg\">";
    $i++;
    [...]
    ?>
    Mi sembrava superfluo ma non si sa mai, te lo scrivo chiaramemte:

    path/alla/cartella/dove/tieni/l'immagine/ è solo per dirti che devi sostituire questo col percorso alla cartella dove risiede l'immagine che vuoi mostrare.

  10. #10
    Guest

    Predefinito

    si ho capito che era un esempio il percorso
    Ultima modifica di seprova : 02-05-2015 alle ore 13.13.23

  11. #11
    Guest

    Predefinito

    il php html lo so forse non mi sono spiegato bene e la prima volta che ho a che fare con questo problema.
    gentilmente signor vplaza se mi dai il contatto email ti mando il progetto che ho fatto cosi' mi capisci meglio
    Ultima modifica di seprova : 02-05-2015 alle ore 13.02.35

  12. #12
    Guest

    Predefinito

    Qui siamo in una community e dalle domande - e relative risposte - tutti ne hanno dei benefici.

    Possiamo continuare qui.

    Ti elenco i passi da fare, mi dici dove ti fermi e perchè:

    1. Pagina (PHP o html non importa) con FORM da dove l'utente carica i dati (compresa l'immagine, per cui il form avrà enctype="multipart/form-data" e il campo per l'immagine di tipo file).

    2. Pagina PHP che riceve i dati e li salva così:
    2a. Salva il file uploadato in una cartella a tua scelta (puoi darle un nome strano, proteggerla dall'accesso diretto via .htaccess, ecc).
    2b. Memorizza i campi di testo nel DB, e in un campo ulteriore memorizzi il nome del file corrispondente.

    3. Per mostrare i dati usi una pagina PHP che interroga il DB (SELECT), recupera i dati da mostrare, e li elenca, avendo cura di inserire un tag IMG nel punto dove vuoi che venga mostrata l'immagine e che il valore di src sia impostato coi dati prelevati dal DB relativi all'immagine.

    Tutto questo è uno schema di massima, poi lo puoi adattare alle tue esigenze gestendo di volta in volta la singola problematica (la prima che mi viene in mente è la presenza di un file con lo stesso nome)
    Ultima modifica di vplaza : 02-05-2015 alle ore 14.13.06

  13. #13
    Guest

    Predefinito

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Senza nome 1</title>
    </head>
    <body>
    <?php
    $username="seprova";
    $password="";
    $database="my_seprova";
    mysql_connect(localhost,$username,$password);
    @mysql_select_db($database)or die ("Impossibile selezionare il DB");
    $query=("SELECT*FROM novita");
    $risultati=mysql_query($query);
    $num=mysql_numrows($risultati);
    mysql_close ();
    echo"<b><center>Benvenuti nelle NEWS </center></b><br><br>";
    $i=0; while ($i<$num){
    $titolo=mysql_result($risultati,$i,"titolo");
    $corpo_testo=mysql_result($risultati,$i,"corpo_tes to");
    echo"<b><center>$titolo</b></center><br>";
    $i++;echo"<b>$corpo_testo</b><hr>";

    }
    ?>
    </body>
    </html>

    mi blocco qua.
    l'immagine deve stare sotto a
    echo"<b>$corpo_testo</b><hr>";

    il form l ho fatto tutto ok. dal punto 2 mi blocco

  14. #14
    Guest

    Predefinito

    ho creato la pagina form funziona perfettamente,questo è lo script che comunica il form html con php ho creato la cartella di nome [foto],creato lo script di visualizzazione delle news funziona ma l'immagine non viene visualizzata perché sbaglio qualcosa nello script sotto creato
    <?php
    $con=mysqli_connect("localhost","seprova","passwor d",my_seprova);
    if (mysqli_connect_errno()){
    echo "failed to connect to MYSQL: " .mysqli_connect_error();
    }
    if(is_uploaded_file($_FILES['immagine_file']['tmp_name'])) {
    if($_FILES['image']['size']>102400)
    $messaggio.="Il file ha dimensioni che superano i 100 KB<br />";
    list($width, $height, $type, $attr)=getimagesize($_FILES['image']['tmp_name']);
    if(($width>800) or ($height>600))
    $messaggio.="Il file non deve superare le dimensioni di 800x600<br />";
    if(($type!=1) and ($type!=2) and ($type!=3))
    $messaggio.="Il file caricato deve essere un'immagine<br />";
    if(file_exists('upload_img/'.$_FILES['image']['name']))
    $messaggio.="Esiste già un file con lo stesso nome. Rinominare l'immagine prima di caricarla<br />";
    if(!move_uploaded_file($_FILES['immagine_file']['tmp_name'], 'foto/'.$_FILES['immagine_file']['name']))
    $messaggio.="Errore imprevisto nel caricamento del file. Controllare i permessi della cartella di destinazione";
    $titolo=mysqli_real_escape_string($con,$_POST['titolo']);
    $corpo_testo=mysqli_real_escape_string($con,$_POST['corpo_testo']);
    $immagine_file=mysqli_real_escape_string($con,$_PO ST['immagine_file']);
    $sql="INSERT INTO novita (titolo,corpo_testo,immagine_file)
    VALUES ('$titolo','$corpo_testo','$immagine_file')";
    if (!mysqli_query ($con,$sql)){
    die ('Error: ' .mysqli_error ($con));
    }
    echo "1 record added";
    mysqli_close ($con);
    ?>
    Ultima modifica di seprova : 05-05-2015 alle ore 08.23.03

  15. #15
    Guest

    Predefinito

    Quello che vedo dal tup script è che hai fatto un po' di confusione.
    In alcuni punti richiami $_FILES['immagine_file']['tmp_name'] mentre in altri $_FILES['image']['tmp_name'] e ancora $_FILES['image']['name'].
    Cerca di evitare il puro copia/incolla.
    Cerca piuttosto di capire quello che fanno i singoli passi.

    Poi ha messo una serie di IF che non fanno altro che mostrare dei messaggi ma non interrompono lo script in caso di problemi (dimensioni eccessive, tipo del file, ...).

    Nel DB viene cmq scritto il record?

    PS: per favore non scrivere codice in mezzo al testo. Usa i tag per la formattazione, il codice si leggerà molto meglio.
    Ultima modifica di vplaza : 05-05-2015 alle ore 08.57.34

  16. #16
    Guest

    Predefinito

    ok. anche senza inserire nel DB
    io voglio che l'immagine deve stare sotto il corpo_testo. cioe' quello funziona esattamente.
    non so l'immagine come si fa. ho creato la cartella foto il form che inserisce questo tutto ok.
    voglio sapere cosa devo aggiungere nello script php per far funzionare questo


    allora questo funziona perfettamente adesso ti faccio vedere lo script creato. questo sono riuscito a scriverlo.
    <?php
    $con=mysqli_connect("localhost","seprova","passwor d",my_seprova);
    if (mysqli_connect_errno()){
    echo "failed to connect to MYSQL: " .mysqli_connect_error();
    }
    $titolo=mysqli_real_escape_string($con,$_POST['titolo']);
    $corpo_testo=mysqli_real_escape_string($con,$_POST['corpo_testo']);
    $sql="INSERT INTO novita (titolo,corpo_testo)
    VALUES ('$titolo','$corpo_testo')";
    if (!mysqli_query ($con,$sql)){
    die ('Error: ' .mysqli_error ($con));
    }
    echo "1 record added";
    mysqli_close ($con);
    ?>
    adesso in questo script per aggiungere l'inserimento delle immagini sotto al corpo_testo cosa devo aggiungere?
    cosi' capiamo meglio
    Ultima modifica di seprova : 05-05-2015 alle ore 11.38.35

  17. #17
    Guest

    Predefinito

    Te la butto li senza troppi fronzoli tipo controlli sulla connessione, sui dati, ecc...



    Codice PHP:
    <?php
    $con
    = new mysqli("localhost", "seprova", "", "my_seprova");

    $sql = "SELECT * FROM novita";

    $risultati = $con->query( $sql );

    echo
    "<h1>Benvenuti nelle NEWS </h1>";

    foreach(
    $risultati as $row) {
    echo
    "<p>{$row['titolo']}</p>";
    echo
    "<p>" . nl2br($row['corpo_testo']) . "</p>";
    echo
    "<img src=\"uploads/{$row['file']}\" alt=\"{$row['file']}\" />";
    echo
    "<hr />";
    }

    $risultati->free();
    $con->close();
    ?>
    Ultima modifica di vplaza : 05-05-2015 alle ore 22.15.45

  18. #18
    Guest

    Predefinito

    funzionava tutto perfettamente. da quando ho cambiato il codice dettato da lei non funziona piu' niente non riesco a capire perché.
    Ultima modifica di seprova : 06-05-2015 alle ore 08.25.16

  19. #19
    Guest

    Predefinito

    Prova così:

    Codice PHP:
    <?php
    $con
    = new mysqli("localhost", "seprova", "", "my_seprova");

    $sql = ( "SELECT * FROM novita" );

    $risultati = $con->query( $sql );

    echo
    "<h1>Benvenuti nelle NEWS </h1>";

    while(
    $row = $risultati->fetch_array( MYSQLI_ASSOC ) ) {
    echo
    "<p>{$row['titolo']}</p>";
    echo
    "<p>" . nl2br($row['corpo_testo']) . "</p>";
    echo
    "<img src=\"uploads/{$row['file']}\" alt=\"{$row['file']}\" />";
    echo
    "<hr />";
    }

    $risultati->free();
    $con->close();
    ?>
    Qui un esempio funzionante.
    Ultima modifica di vplaza : 06-05-2015 alle ore 09.16.03

  20. #20
    Guest

    Predefinito

    grazie sig. vplaza adesso funziona quello e il file di visualizzazione .
    il form funziona anche con lo script che ho creato io.interagisce con il form per l'inserimento di nuove news nel database.
    solo che manca la configurazione dell'immagine. incollo il codice php.
    <?php
    $con=mysqli_connect("localhost","seprova","passwor d",my_seprova);
    if (mysqli_connect_errno()){
    echo "failed to connect to MYSQL: " .mysqli_connect_error();
    }
    $titolo=mysqli_real_escape_string($con,$_POST['titolo']);
    $corpo_testo=mysqli_real_escape_string($con,$_POST['corpo_testo']);
    $sql="INSERT INTO novita (titolo,corpo_testo)
    VALUES ('$titolo','$corpo_testo')";
    if (!mysqli_query ($con,$sql)){
    die ('Error: ' .mysqli_error ($con));
    }
    echo "1 record added";
    mysqli_close ($con);
    ?>
    Ultima modifica di seprova : 06-05-2015 alle ore 11.46.29

  21. #21
    Guest

    Predefinito

    Puoi darmi del tu, è normale nelle frequentazioni online ;)

    Nel codice che hai postato manca completamente la parte relativa all'upload del file immagine.
    Ora potrei anche incollarti il codice usato nell'esempio, ma hai visto tui stesso come il semplice copia/incolla non produca nessun progresso.

    L'approccio che ho usato è questo:
    Memorizzo prima i dati dell'articolo e mi ricavo il relativo id.
    Faccio un po di verifiche sull'upload del file (formato, dimensione, ecc) e salvo il file in una cartella anteponendo l'id dell'articolo corrispondente (tipo xx_nomefile.jpg).
    se anche la parte dell'upload ha esito positivo aggiorno il record sul db aggiungendo il nome del file, altrimenti segnalo che qualcosa è andato storto (o potrei anche eliminare l'articolo)

  22. #22
    Guest

    Predefinito

    no quello sig vplaza l ho scritto io. questo lo sapevo fare ma non ho mai studiato a scuola il problema delle immagini. capito?
    infatti il problema dall'inizio era solo l'immagine che non abbiamo mai trattato.
    ma il resto l ho scritto io lo script e funzionava.
    il problema dell'immagine per me è un argomento nuovo :(.il professore non c'e' l ha mai spiegato
    Ultima modifica di seprova : 06-05-2015 alle ore 21.51.13

  23. #23
    Guest

    Predefinito

    Beh sarà pure vero che non lo avete fatto a scuola ma se hai voglia di imparare, su internet ci sono centiania di guide su come gestire l'upload.

    Fai almeno la prova.

    Se poi non riesci scrivi cosa hai fatto e vediamo di aiutarti.

  24. #24
    Guest

    Predefinito

    non riesco proprio dove inserire sullo script che ho creato. ho creato una cartella di nome uploads dove andranno a finire le foto.come detto da lei.
    questo e lo script creato:
    <?php
    $con=mysqli_connect("localhost","seprova","passwor d",my_seprova);
    if (mysqli_connect_errno()){
    echo "failed to connect to MYSQL: " .mysqli_connect_error();
    }
    $titolo=mysqli_real_escape_string($con,$_POST['titolo']);
    $corpo_testo=mysqli_real_escape_string($con,$_POST['corpo_testo']);
    $sql="INSERT INTO novita (titolo,corpo_testo)
    VALUES ('$titolo','$corpo_testo')";
    if (!mysqli_query ($con,$sql)){
    die ('Error: ' .mysqli_error ($con));
    }
    echo "1 record added";
    mysqli_close ($con);
    ?>
    gentilmente mi fa vedere i comandi immagine dove li devo mettere e me lo spieghi.ti ringrazio di vero cuore

  25. #25
    Guest

    Predefinito

    Citazione Originalmente inviato da seprova Visualizza messaggio
    non riesco proprio dove inserire sullo script che ho creato. ho creato una cartella di nome uploads dove andranno a finire le foto.come detto da lei.
    questo e lo script creato:
    <?php
    $con=mysqli_connect("localhost","seprova","passwor d",my_seprova);
    if (mysqli_connect_errno()){
    echo "failed to connect to MYSQL: " .mysqli_connect_error();
    }
    $titolo=mysqli_real_escape_string($con,$_POST['titolo']);
    $corpo_testo=mysqli_real_escape_string($con,$_POST['corpo_testo']);
    $sql="INSERT INTO novita (titolo,corpo_testo)
    VALUES ('$titolo','$corpo_testo')";
    if (!mysqli_query ($con,$sql)){
    die ('Error: ' .mysqli_error ($con));
    }
    echo "1 record added";
    mysqli_close ($con);
    ?>
    gentilmente mi fa vedere i comandi immagine dove li devo mettere e me lo spieghi.ti ringrazio di vero cuore
    Non esistono "comandi immagine".
    Il processo prevede che tramite form venga inviato un file (che sia immagine o altro poco importa, la gestione è speculare).
    Questo processo si chiama upload.

    Perdonami ma nel tuo codice non vedo neanche un accenno alla gestione dell'upload.
    Ora, almeno provaci. Dai un'occhiata ai link indicati. Fai delle prove.
    Dopo, solo dopo, se non riesci, vediamo dove ti fermi e perchè.

    Scopiazzarti del codice così, non ti aiuterebbe. Credimi.

  26. #26
    Guest

    Predefinito

    se me lo spieghi per bene. perché su internet ho visto c'e' scritto ma non è spiegato bene
    Ultima modifica di seprova : 07-05-2015 alle ore 14.52.03

  27. #27
    Guest

    Predefinito

    Codice PHP:
    <?php
    $con
    =mysqli_connect("localhost","seprova","passwor d",my_seprova);
    if (
    mysqli_connect_errno()){
    echo
    "failed to connect to MYSQL: " .mysqli_connect_error();
    }
    if(
    is_uploaded_file($_FILES['image']['tmp_name'])) {
    if(
    $_FILES['image']['size']>102400)//questo per controllare che il file non e superiore a 100kb
    $messaggio.="Il file ha dimensioni che superano i 100 KB<br />";
    list(
    $width, $height, $type, $attr)=getimagesize($_FILES['image']['tmp_name']); //recupero delle informazioni delle immagini
    if(($width>900) or ($height>900)) //con questo controllo la dimesione dell'immagine
    $messaggio.="Il file non deve superare le dimensioni di 900x900<br />";
    if((
    $type!=1) and ($type!=2) and ($type!=3)) //controllo che il file sia un immagine esempio jpg
    $messaggio.="Il file caricato deve essere un'immagine<br />";
    if(
    file_exists('upload_img/'.$_FILES['image']['name'])) //controllo che il file dell'immagine caricata non abbia lo stesso nome di un altra
    $messaggio.="Esiste già un file con lo stesso nome. Rinominare l'immagine prima di caricarla<br />";
    //salvo il file nella cartella di destinazione
    if(!move_uploaded_file($_FILES['image']['tmp_name'], 'upload_img/'.$_FILES['image']['name'])) //salvataggio del fai nella cartella upoload
    $messaggio.="Errore imprevisto nel caricamento del file. Controllare i permessi della cartella di destinazione";
    $titolo=mysqli_real_escape_string($con,$_POST['titolo']);
    $corpo_testo=mysqli_real_escape_string($con,$_POST['corpo_testo']);
    $sql="INSERT INTO novita (titolo,corpo_testo)
    VALUES ('
    $titolo','$corpo_testo')";
    if (!
    mysqli_query ($con,$sql)){
    die (
    'Error: ' .mysqli_error ($con));
    }
    echo
    "1 record added";
    mysqli_close ($con);
    ?>
    sig. la vplaza dopo 1ora di studio ho finito di scrivere il codice.ho commentato anche il procedimento
    Ultima modifica di alemoppo : 07-05-2015 alle ore 22.14.17 Motivo: +tag [php]

  28. #28
    Guest

    Predefinito

    Provo a spiegarti il procedimento che ho seguito io.

    Per prima cosa per poter inviare dei file attraverso un form occorre impostare l'attributo enctype su multipart/form-data

    Codice HTML:
    <form action="inserisci.php" method="post" enctype="multipart/form-data">
    Adesso prepariamo una tabella nel DB.
    Seguendo il tuo schema, nel predisporre l'esempio ho impostato una tabella con questo schema:

    Codice:
    CREATE TABLE `novita` (  
      `id` int(11) NOT NULL AUTO_INCREMENT,  
      `data` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',  
      `titolo` varchar(200) NOT NULL,  
      `corpo_testo` blob NOT NULL,  
      `file` varchar(200) NOT NULL DEFAULT 'noimage.jpg',  
      PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8
    Quindi una tabella con 5 campi
    - ID che sarà la chiave primaria
    - data che sarà impostata alla data di creazione
    - titolo che conterrà il titolo dell'articolo
    - corpo_testo a cui facciamo riferimento per memorizzare il testo dell'articolo
    - file che conterrà il nome del file immagine, e che, se non impostato, sarà automaticamente impostato a noimage.jpg (per gli articoli senza immagini, o nel caso qualcosa vada storto e si voglia tenere comunque l'articolo.

    Fatto questo vediamo di impostare questa benedetta pagina inserisci.php

    iniziamo con l'aprire la connessione al DB

    Codice PHP:
    $con = @new mysqli("localhost", "seprova", "", "my_seprova");

    if (
    $con->connect_errno ){
    echo
    "Non riesco a connettermi a MYSQL: " . $con->connect_error;
    exit();
    }
    se la connessione non riesce mostro un messaggio di errore ed fermo l'elaborazione.
    Adessocominciamo con l'impostare alcune variabili (titolo e corpo_testo, nonchè la data) avendo cura di bonificarle

    Codice PHP:
    $titolo = $con->real_escape_string( $_POST['titolo'] );
    $corpo_testo = $con->real_escape_string( $_POST['corpo_testo'] );
    $now = date('Y-m-d H:i:s');
    Ho impostato l'orario secondo il formato del tipo DATETIME di MySQL aaaa-mm-gg hh:mm:ss.
    Adesso verifichiamo che siano stati inseriti titolo e corpo, altrimenti fermiamo tutto

    Codice PHP:
    // Se non è stato inserito il TITOLO mostro un errore e fermo l'esecuzione
    if(!$titolo) {
    echo
    "<p>Non &egrave; stato inserito il TITOLO.<br />Non &egrave; possibile proseguire.</p>";
    echo
    "<a href=\"index.html\">Indietro</a>";
    exit();
    }

    // Se non è stato inserito il CORPO dell'articolo mostro un errore e fermo l'esecuzione
    if(!$corpo_testo) {
    echo
    "<p>Non &egrave; stato inserito il CORPO DELL'ARTICOLO.<br />Non &egrave; possibile proseguire.</p>";
    echo
    "<a href=\"index.html\">Indietro</a>";
    exit();
    }
    Arrivati a questo punto possiamo procedere all'inserimento dell'articolo

    Codice PHP:
    $sql = "INSERT INTO novita (data, titolo, corpo_testo) VALUES ('{$now}', '{$titolo}', '{$corpo_testo}')";

    if ( !
    $con->query($sql) ){
    // Se non è stato possibile l'inserimento mostro un errore e fermo l'esecuzione
    echo "<p>Non &egrave; stato possibile insirire l'articolo a causa di un errore.</p>";
    echo
    "<p>" . $con->error . "</p>";
    exit();
    }else{
    // Se tutto è anadato giusto recupero l'id dell'articolo inserito.
    $last_id = $con->insert_id;
    }
    Se tutto è andato bene ci recuperiamo l'id dell'inserimento appena fatto, altrimenti mostriamo l'errore e fermiamo l'esecuzione.

    Adesso passiamo alla gestione dell'upload

    Impostiamo qualche parametro.
    La directory dove porre i files

    Codice PHP:
    $target_dir = "uploads/";
    il nome da dare al file caricato (io ho scelto di anteporre l'id dell'articolo cui si riferisce)

    Codice PHP:
    $target_file = $target_dir . $last_id . "_" . basename( $_FILES['txt_file']['name'] );
    una variabile di controllo

    Codice PHP:
    $uploadOk = 1;
    e salviamoci anche il tipo di file caricato

    Codice PHP:
    $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
    Adesso un po' di controlli

    Codice PHP:
    // Controllo se il file esiste già
    if( file_exists($target_file) ) {
    echo
    "Spiacente, il file esiste gi&agrave;.";
    $uploadOk = 0;
    }

    // Controllo la dimensione del file (in bites) (si può omettere)
    if( $_FILES["txt_file"]["size"] > 1000000) {
    echo
    "Spiacente, il file &egrave; troppo grande.";
    $uploadOk = 0;
    }

    // Consento solo alcuni formati di file
    if( $_FILES["txt_file"]["size"] > 0) { //se la dimensione del file caricato è >0, quindi se c'è un file caricato
    if( $imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
    echo
    "Spiacente, sono permessi solo file JPG, JPEG, PNG e GIF.";
    $uploadOk = 0;
    }
    }
    Adesso la parte del salvataggio del file vera e propria.

    Codice PHP:
    // Controllo se $uploadOk è 0 a causa di errori
    if ( $uploadOk == 0 ) {
    $sql = "DELETE FROM novita WHERE id = " . $last_id;
    $con->query($sql);

    echo
    "<p>Il file non &egrave; stato caricato</p>";
    echo
    "<a href=\"index.html\">Indietro</a>";

    // Se veramente tutto è anadato bene provo a salvare il file
    }else{
    if(
    $_FILES["txt_file"]["size"] > 0) {
    if(
    move_uploaded_file($_FILES['txt_file']['tmp_name'], $target_file)) {
    $sql = "UPDATE novita SET file = '" . basename( $_FILES['txt_file']['name'] ) . "' WHERE id = " . $last_id;
    $con->query($sql);
    echo
    "<p>Articolo inserito correttamente.</p>";
    echo
    "<a href=\"web_news.php\">Vedi elenco</a>";
    }
    }else{
    echo
    "<p>Articolo inserito correttamente.</p>";
    echo
    "<a href=\"web_news.php\">Vedi elenco</a>";
    }
    }
    Infine chiudo la connessione.

    Codice PHP:
    $con->close();

  29. #29
    Guest

    Predefinito

    sig. vplaza grazie adesso me lo studio.se ho dei problemi posso chiedere?
    Ultima modifica di seprova : 08-05-2015 alle ore 19.05.56

  30. #30
    Guest

    Predefinito

    buonasera sig. vplaza sto ancora studiando il codice voglio capirlo bene. La ringrazio tantissimo. un informazione se in un articolo vorrei inserire piu' immagini come devo fare?
    2) il file viene salvato nella cartella che ho creato nome uploads. solo che non salva.
    $target_dir="seprova.altervista.org/inserisci.uploads/"; cioè indica la cartella dove salvare i file (immagini) giusto? solo che l'immagine non me li fa visualizzare mi esce solo l'icona noimage.jpg.

    Immagine: <input type="file" name="file" size="40">
    name= ho scelto file >giustamente dove c e $_FILE[txt_file] devo inserire il nome che ho scelto [file] giusto?
    Ultima modifica di seprova : 09-05-2015 alle ore 07.53.22

Pagina 1 di 4 123 ... UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •