- Home
- Categorie
- Coding e Sistemistica
- PHP
- Importare immagini da url a SQL
-
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
-
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...
-
@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...
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```
<?phpfunction 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:
-
@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.jpgSpero di essere stato chiaro.....spero!!
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...
-
@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:)
-
Per eliminare il percorso dal nome del file puoi usare la funzione "basename" del php.
-
@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')";
-
@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
-
$query="INSERT INTO tabella(codice,regione,marca) VALUES ('$codice','$regione','$marca')";