Memorizzare un'immagine in db mysql

  • Creatore Discussione Creatore Discussione vodka
  • Data di inizio Data di inizio
nono, il percorso lo scrivo normalmente per salvarlo nel db ma poi quando lo salva, lo salva senza "\" e poi ovviamente quando estraggo i dati mi dà il percorso senza "\".
Il campo dell'immagine è di tipo text
 
Ecco:
PHP:
<?php
	include 'config.php';
	$url="C:\Users\Public\Pictures\Sample Pictures\Pinguini.jpg";
	$titolo="Che bella giornata";
	$testo="Film realizzato dal celebre attore pugliese checco zalone che presenta le sue esilaranti avventure";
	$query= "INSERT INTO datifilm (foto, titolo, testo) VALUES ('$url', '$titolo', '$testo')";
	mysql_query($query) or die (mysql_error());
	mysql_close();
?>
 
Ho capito. Il backslash è un carattere di escape, quindi se vuoi inserire un backslash in un campo di testo nel database dovrai usare la funzione addslashes per inserire un doppio backslash. Esempio:
PHP:
<?php
require 'config.php';

$url = 'C:\Users\Public\Pictures\Sample Pictures\Pinguini.jpg';
$titolo = 'Che bella giornata';
$testo = 'Film realizzato dal celebre attore pugliese checco zalone che presenta le sue esilaranti avventure';

// aggiungo i doppi backslash
$url = addslashes($url);

$query = "INSERT INTO datifilm (foto, titolo, testo) VALUES ('$url', '$titolo', '$testo')";
mysql_query($query) or die(mysql_error());

mysql_close();
?>
 
ciao
se stai lavorando in locale e (per ipotesi) tu abbia chiamato il file carica_foto.php e tu lo abbia salvato
nella cartella di apache www
dentro la www hai anche la cartella Sample Pictures con dentro la varie foto (non dare nomi con spazi)
PHP:
<?php 
    include 'config.php'; 
    $url="Sample Pictures/Pinguini.jpg"; //non mettere spazi chiamala Sample_Pictures
    $titolo="Che bella giornata"; 
    $testo="Film realizzato dal celebre attore pugliese checco zalone che presenta le sue esilaranti avventure"; 
    $query= "INSERT INTO datifilm (foto, titolo, testo) VALUES ('$url', '$titolo', '$testo')"; 
    mysql_query($query) or die (mysql_error()); 
?>
poi fai il file leggi_foto.php (come il seguente) e lo salvi sempre nella cartella www
PHP:
<?php 
    include 'config.php'; 
    $query="SELECT * FROM datifilm";
	$result=mysql_query($query);
	$riga=mysql_fetch_array($result);
	$url=$riga['foto'];
    $titolo=$riga['titolo'];
    $testo=$riga['testo'];
    echo "$titolo<br>";//stampi il titolo
	echo "<img src=\"$url\"><br>";//stampi la foto
	echo "$testo<br>";//stampi il testo
?>
comunque ti conviene tenere il nome della cartella separato e nel db mettere solo Pinguini.jpg.
poi nel file leggi_foto.php
imposti la cartella
PHP:
$path="Sample Pictures/";
e la concateni al nome
PHP:
$url=$path.$riga['foto'];
in questo modo puoi cambiare o utilizzare più cartelle
 
ok così il percorso lo salvo correttamente risolvendo questo problema ma purrtoppo l'immagine continua a non visualizzarla...:confused:
 
ciao
se invece di usare la \ tu usassi la / non avresti bisogno di usare ne strip(tease) ne add. provare per credere.
se poi salvi nel db solo ed esclusivamente il nome del file immagine e aggiungi la cartella e la berra dopo: MEGLIO

p.s.
la / funzia sia su windows che su linux
 
anke applicando la funzione stripslashes non cambia nulla anke xk poi il percorso ritorna sbagliato...cmq sia l'immagine non la visualizza e non è un riquadro con la x rossa ma un riquadro con un'immagine spezzata..
 
ciao
…ma un riquadro con un'immagine spezzata..
quindi è un problema di percorso (collegamento interrotto)
ripartiamo da 0
posta:
il percorso del file php che legge (dovrebbe) l’immagine, cioè se è questo
C:\Users\Public\visualizza_immagine.php
oppure
C:\Users\ visualizza_immagine.php
o qualche altra cosa

il percorso dell’immagine
che da quello che si capisce è questo
C:\Users\Public\Pictures\Sample Pictures\Pinguini.jpg

Giusto?
 
allora il file che legge l'immagine si trova nella cartella htdocs (ora sono passato a xampp ma nn è questo il punto) quindi in E:\Program Files\xampp\htdocs\visualizzammagine.php

mentre il percorso dell'immagine è quello che hai postato tu.
 
ciao
allora prova una cosa copia la cartella Sample Pictures e le immagini in htdocs
in modo che il percorso dell'immagine diventi

Files\xampp\htdocs\Sample Pictures\pinguino.jpg

poi correggi nel file che salva nel db (svuota la tabella prima)
PHP:
<?php
//....
$url=addslashes("Sample Pictures/Pinguini.jpg");
//....
?>
e in quello che visualizza
PHP:
<?php
//...
$titolo=stripslashes($riga['titolo']);
//....
?>
poi, pensandoci bene, i percorsi assoluti che dai tu
C:\Users\Public\Pictures\Sample Pictures\Pinguini.jpg

se lavori in locale dovrebbero essere del tipo:

http://localhost:8080/eccetera.....
 
ciao
ho fatto la tabella
CREATE TABLE `datifilm` (
`id` INT( 2 ) NOT NULL ,
`foto` VARCHAR( 250 ) NOT NULL ,
`titolo` VARCHAR( 250 ) NOT NULL ,
`testo` VARCHAR( 250 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;
e mi sono creato la cartella Sample_Pictures e ci ho messo dentro la foto gatto.jpg
e ho fatto i due file php


carica.php
PHP:
<?php
    include 'config.php';  
    $url="Sample_Pictures/gatto.jpg"; //non mettere spazi chiamala Sample_Pictures 
    $titolo="Che bella giornata";  
    $testo="Film realizzato dal celebre attore pugliese checco zalone che presenta le sue esilaranti avventure";  
    $query= "INSERT INTO datifilm (foto, titolo, testo) VALUES ('$url', '$titolo', '$testo')";  
    mysql_query($query) or die (mysql_error());  
?>
vedifoto.php
PHP:
<?php  
	include 'config.php';  
    $query="SELECT * FROM datifilm"; 
    $result=mysql_query($query); 
    $riga=mysql_fetch_array($result); 
    $url=$riga['foto']; 
    $titolo=$riga['titolo']; 
    $testo=$riga['testo']; 
    echo "$titolo<br>";//stampi il titolo 
    echo "<img src=\"$url\"><br>";//stampi la foto 
    echo "$testo<br>";//stampi il testo 
?>
e questo è il risultato.
risultato.jpg

quello che intendo

http://localhost:8080/cartella_prove/vedifoto.php

è il percorso assoluto che devi dare al tuo bw per vedere la/le pagine
analogamente al posto di
Sample_Pictures/gatto.jpg
avrei potuto mettere
http://localhost:8080/cartella_prove/Sample_Pictures/gatto.jpg

il bw che legge non conosce c:
 

Discussioni simili