• User

    Mysql img upload: BLOB o URL all'immagine?

    Ciao ragazzi,
    mi rivolgo a chi ha più esperienza di me in merito, altrimenti rischio di trascorrere intere notti su un progetto senza venirne a capo.

    Sto creando un CMS per un sito portfolio, dove ho creato un form che carica i dati testuali (un titolo e una descrizione, niente di più) e l'upload di un'immagine in un database, e li stampa correttamente su html.

    in questo modo, ogni riga della mia tabella corrisponde a un post; dal punto di vista organizzativo, rimane tutto molto ordinato.

    Fino a qua nessun problema: ottengo la mia pagina html con i miei post correttamente suddivisi; la struttura del post è la seguente:

    titolo, descrizione, immagine.

    Il problema sorge nel momento del caricamento multiplo di immagini.
    La stampa dell'immagine nell html avviene tramite questo script:

    if($_GET['id'] == "")
    header("Location: index.php");
    include('connect.php');
    $query = "SELECT img,img2 FROM post WHERE id = " . $_GET["id"];
    $risultato = mysql_query($query)
    or die("Query non valida: " . mysql_error());
    $tmp = mysql_fetch_array($risultato);
    header("Content-Type: " . $tmp["tipo"]);
    echo $tmp["img"];
    echo $tmp["img2"];
    

    nel campo img e img2 sono presenti effettivamente due immagini diverse, ma viene stampata sempre la prima, perchè entrambe hanno lo stesso ID, risiedendo nella stessa riga.

    detto questo, ho due domande da porvi:
    1: come far apparire due o più immagini diverse con questo metodo
    2: conviene caricare le immagini direttamente nel database, oppure nel database occorre soltanto linkarle a url esterne? in questo caso, è comunque possibile suddividere le immagini in cartelle, cui nome viene preso dal titolo del post?

    Spero di essere stato chiaro,
    grazie della disponibilità.


  • User Attivo

    @lurex89 said:

    [...]
    **1: come far apparire due o più immagini diverse con questo metodo
    **

    Non puoi fare un *echo *di entrambe le immagini, devi inserire nel tuo HTML due tag <img>, una per ogni immagini che vuoi mostrare.

    Non so come si chiama il tuo script per mostrare le immagini ma devi fare qualcosa tipo:
    [HTML]<img src="script-mostra-immagini.php?id=id&immagine=1" />
    <img src="script-mostra-immagini.php?id=id&immagine=2" />[/HTML]
    e ad esempio a seconda del parametro che passi ($_GET['immagine'] in questo caso) scegli quale immagine prendere e mostrare dal database con un
    [PHP]$query = "SELECT " . ( $_GET['immagine'] == 2 ? 'img2' : 'img' ) . " FROM post WHERE id = " . mysql_real_escape_string($_GET["id"]);[/PHP]
    @lurex89 said:

    ** 2: conviene caricare le immagini direttamente nel database, oppure nel database occorre soltanto linkarle a url esterne? in questo caso, è comunque possibile suddividere le immagini in cartelle, cui nome viene preso dal titolo del post?**

    Dal punto di vista delle performance il tema è molto dibattuto: c'è chi dice che è più efficiente mettere solo la URL nel database ma i vantaggi in termini di velocità sono molto ridotti. Usa il metodo che meglio si adatta al design del tuo sistema e con cui ti trovi meglio.

    HTH, ciao! 🙂