• User

    Importare immagini da url a SQL

    Domanda da 1.000.000 di ?/$ ,
    come caspita posso importare un'immagine da un url al db, senza che il db si porti dietro tutto l'url???
    (L'immagine si trova in un file xml insieme ad altri dati )
    Siamo alle solite...:o
    Satifal... tu che regni in questo forum mi potresti dare un aiutino!!
    Grazie anticipatamente:smile5:


  • User Attivo

    Ciao SartSale,
    non sono Satifal purtroppo...:D
    cosa intendi importare un'immagine in un db? Utilizzare un dato di tipo blob, sfruttando mysql come filesystem? Cosa significa portarsi dietro l'url?

    Se spieghi un po' di più vediamo di venirne a capo...
    :ciauz:


  • User

    @ceccus said:

    Ciao SartSale,
    non sono Satifal purtroppo...:D
    cosa intendi importare un'immagine in un db? Utilizzare un dato di tipo blob, sfruttando mysql come filesystem? Cosa significa portarsi dietro l'url?

    Se spieghi un po' di più vediamo di venirne a capo...
    :ciauz:

    Ciao e grazie per esserti interessato al mio problema!

    Ti spiego subito ho un file in xml con chiamate(non fare caso alla terminologia vado apprendendo pian piano)es:<FAX>042200000</FAX> <EMAIL>[email protected]</EMAIL> <WEB>.xxx.it</WEB> <pictures> <picture> <picture_url> xxxxxx.com/xxxxx/xxxxxx.jpg</picture_url> <picture_title>foto 1</picture_title> </picture> <picture> <picture_url> xxxxxx.com/xxxxx/xxxxxx.jpg</picture_url> <picture_title>foto 2</picture_title> </picture> </pictures> <date>20/8/2008</date>ed un parser che mi esporta il tutto in php-sql```
    <?php

    function insertContact( $fax, $email, $web, $pictures, $picture, $picture_url, $picture_title, $date) {
    $query = "INSERT INTO tabella fax, email, web, pictures, picture, picture_url, picture_title) values ('$fax','$email','$web','$pictures','$picture','$picture_url','$picture_title','$date')";
    $result = executeQuery($query);
    }

    function executeQuery($query) {
    $DB_SERVER = "xxxxx";
    $DB_USERNAME = "xxxxx";
    $DB_PASSWORD = "xxxx";
    $DB_NAME = "xxxxxx";

    $connect = mysql_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD);
    $db = mysql_select_db($DB_NAME, $connect);
    $result = mysql_query($query, $connect) or die("errore");
    mysql_close($connect);
    return $result;
    

    }

    if (!($fp=@fopen("mio_file.xml", "r"))) die ("Couldn't open XML.");
    $usercount=0;
    $userdata=array();
    $state='';

    function startElementHandler ($parser,$name,$attrib){
    global $usercount;
    global $userdata;
    global $state;

    switch ($name) {
    case $name=="NAME" : {

    break;
    }
    case $name=="" : {

    break;
    }

    default : {$state=$name;break;}
    }
    }

    function endElementHandler ($parser,$name){
    global $usercount;
    global $userdata;
    global $state;
    $state='';
    if($name=="CONTACT") {$usercount++;}
    }

    function characterDataHandler ($parser, $data) {
    global $usercount;
    global $userdata;
    global $state;
    if (!$state) {return;}
    if ($state=="FAX") { $userdata[$usercount]["fax"] = $data;}
    if ($state=="EMAIL") { $userdata[$usercount]["email"] = $data;}
    if ($state=="WEB") { $userdata[$usercount]["web"] = $data;}
    if ($state=="PICTURES") {$userdata[$usercount]["pictures"] = $data;}
    if ($state=="PICTURE") {$userdata[$usercount]["picture"] = $data;}
    if ($state=="PICTURE_URL") {$userdata[$usercount]["picture_url"] = $data;}
    if ($state=="PICTURE_TITLE") {$userdata[$usercount]["picture_title"] = $data;}
    if ($state=="DATE") {$userdata[$usercount]["date"] = $data;}
    }
    if (!($xml_parser = xml_parser_create())) die("Couldn't create parser.");
    xml_set_element_handler( $xml_parser, "startElementHandler", "endElementHandler");
    xml_set_character_data_handler( $xml_parser, "characterDataHandler");

    while( $data = fread($fp, 4096)){
    if(!xml_parse($xml_parser, $data, feof($fp))) {
    break;}}
    xml_parser_free($xml_parser);

    for ($i=0;$i<$usercount; $i++)
    {

        if ($userdata*["fax"]) {echo "".$userdata*["fax"]."<br>";}
        if ($userdata*["email"]) {echo "email: <a href=\"mailto:".$userdata*["email"]."\">".$userdata*["email"]."</a><br>";}
        if ($userdata*["web"]) {echo "<a href=\"".$userdata*["web"]."\">".$userdata*["web"]."</a><br>";}      
        if ($userdata*["pictures"]) {echo "".$userdata*["pictures"]."<br>";}
        if ($userdata*["picture"]) {echo "".$userdata*["picture"]."<br>";}
        if ($userdata*["picture_url"]) {echo "<a href=\"".$userdata*["picture_url"]."\">".$userdata*["img src="]."<img src=\"".$userdata*["picture_url"]."\"</a><br>";}   
        if ($userdata*["picture_title"]) {echo "".$userdata*["picture_title"]."<br>";}
        if ($userdata*["date"]) {echo "".$userdata*["date"]."<br>";}    
        if ($userdata*["comment"]) {echo "<tr><td colspan=2>Notes: ".$userdata*["comment"]."</td></tr>\n";}
    

    insertContact( $userdata*["fax"], $userdata*["email"], $userdata*["web"], $userdata*["pictures"], $userdata*["picture"], $userdata*["picture_url"], $userdata*["picture_title"], $userdata*["date"]);

    }

    ?>

    </table>
    </body><html>

    Sin qui tutto bene l'unico neo e che le immagini che arrivano sul db sono complete di url:```
    xxxxxx.com/xxxxx/xxxxxx.jpg
    ``` di conseguenza vengono stampate a video come url e non come immagini ```
    xxx.jpg
    ```.
    Spero di essere stato chiaro.....spero!!
    :smile5:

  • User Attivo

    @StartSale said:

    Sin qui tutto bene l'unico neo e che le immagini che arrivano sul db sono complete di url:```

    xxxxxx.com/xxxxx/xxxxxx.jpg
    di conseguenza vengono stampate a video come url e non come immagini
    xxx.jpg

    Spero di essere stato chiaro.....spero!!
    :smile5:

    Meglio di così!
    Non ti resta che trasformarle in immagini con il tag <img>...

    Se recuperi la URL dell'immagine, ad esempio nella variabile $userdata["picture_url"]*, non ti resta che scrivere:

    echo '<img src="'.$userdata["picture_url"].'">';*

    Se ho capito male, spiega meglio in che altro modo ipotizzavi di lavorare...

    Volendo puoi copiarti l'immagine su server, ma sempre per la url della stessa ti conviene passare...


  • User

    @ceccus said:

    Meglio di così!
    Non ti resta che trasformarle in immagini con il tag <img>...

    Se recuperi la URL dell'immagine, ad esempio nella variabile $userdata["picture_url"]*, non ti resta che scrivere:

    echo '<img src="'.$userdata["picture_url"].'">';*

    Se ho capito male, spiega meglio in che altro modo ipotizzavi di lavorare...

    Volendo puoi copiarti l'immagine su server, ma sempre per la url della stessa ti conviene passare...

    Il problema si verifica quando richiamo l'mmagine dal campo immagine ```
    <? echo "<a class="pic"a href="public/images/$immagine" rel="lightbox[public/images]"><img src="public/images/$immagine" width="280"height="200"><span></span></a>";?>

    Anzichè stamparmi l'mmagine mi dà l'url, poichè l'mmagine viene caricata sul server con tutto l'url e non solo es: fiore.jpg.
    Spero di essermi spiegato:)

  • User Attivo

    Per eliminare il percorso dal nome del file puoi usare la funzione "basename" del php.

    http://it2.php.net/basename


  • User

    @olaola said:

    Per eliminare il percorso dal nome del file puoi usare la funzione "basename" del php.

    it2.php.net/basename
    Sei un grande, conosco php.net, :?, zoppico un bel...
    Vorrei chiederti, approfittando della tua cortesia, come fare a:

    I dati del file xml sono: id, region, make.
    La tabella di destinazione ha le stesse voci ma con nomi diversi:
    codice, regione, marca.
    Per caricarli senza dover cambiare i nomi dei campi del db ho fatto così :
    Ho questo:```
    $query="INSERT INTO tabella VALUES ('','$codice'='id','$regione'='region','$marca'='make')";


  • User

    @StartSale said:

    Sei un grande, conosco php.net, :?, zoppico un bel...
    Vorrei chiederti, approfittando della tua cortesia, come fare a:

    I dati del file xml sono: id, region, make.
    La tabella di destinazione ha le stesse voci ma con nomi diversi:
    codice, regione, marca.
    Per caricarli senza dover cambiare i nomi dei campi del db ho fatto così :
    Ho questo:```

    $query="INSERT INTO tabella VALUES ('','$codice'='id','$regione'='region','$marca'='make')";

    Scusami ho dimenticato di dirti che finalmente mi carica l'immagine senza url:vai:


  • User Attivo

    $query="INSERT INTO tabella(codice,regione,marca) VALUES ('$codice','$regione','$marca')";