e' proprio questo che ti dicevo...per mostrare l'immagine caricata ,ogni volta devo metterci il nome del file ?
e' proprio questo che ti dicevo...per mostrare l'immagine caricata ,ogni volta devo metterci il nome del file ?
Non "a mano", devi mettere quello prelevato dal database. Così come mostri "email" o "testo", puoi mostrare anche l'immagine conoscendo appunto il nome dell'immagine.
Ciao!
regolamento altervista_______________ regolamento forum
echo '<img src="./upload2/$file_salvato>'; cosi?
Sì, più o meno. C'è una differenza tra i doppi e i singoli apici:
\" scrive i doppi apici via HTML se usi i doppi apici.Codice PHP:
echo '<img src="./upload2/$file_salvato">'; //questo NON sostituisce il contenuto della variabile: -> NO
echo "<img src=\"./upload2/$file_salvato\">"; //questo sostituisce il contenuto della variabile: -> OK
echo "<img src=\"./upload2/{$file_salvato}\">"; //questo sostituisce il contenuto della variabile: -> OK
/*stessa cosa delle due sopra ma scrivendo il singolo apice in HTML*/
echo "<img src='./upload2/$file_salvato'>"; //questo sostituisce il contenuto della variabile: -> OK
echo "<img src='./upload2/{$file_salvato}'>"; //questo sostituisce il contenuto della variabile: -> OK
echo '<img src="./upload2/'.$file_salvato.'">'; //concatenazione delle tre stringhe: -> OK
Come al solito, documentazione.
Ciao!
Ultima modifica di alemoppo : 11-10-2023 alle ore 20.57.30
regolamento altervista_______________ regolamento forum
non ne funziona neanche uno....
while ($row = $result->fetch_assoc()) {
echo '<img src="./upload2/'.$file_salvato.'">';
echo ' '.$row["testo"].' - '.$row["email"].'<br>'.PHP_EOL;
Ma $file_salvato lo hai poi prelevato dal database? Quella variabile la usavamo per scrivere nel database se non sbaglio. Per leggere era $row['file'], corretto? Se non riesci mostra il codice.
Ciao!
Ultima modifica di alemoppo : 11-10-2023 alle ore 21.03.45
regolamento altervista_______________ regolamento forum
<div style=" margin-left:350px;">
<img src="upload2"> marco e bau da roma - nando@mail.it<br>
<img src="upload2"> marco e bau da roma - nando@mail.it<br>
<img src="upload2"> franco e black - nino@mail.it<br>
<img src="upload2"> marco e bau da roma - nando@mail.it<br>
se spingo su upload2...mi apre questa pagina con doppia upload2
http://noncecapisco.altervista.org/upload2/upload2
Ultima modifica di noncecapisco : 11-10-2023 alle ore 21.22.28
Codice PHP:
<?php
$file_salvato = rand(1, 100000000).'-'.$_POST['nome'].'.'.end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "upload2/".$file_salvato);
$dati = $_POST['testo'];
$mail = $_POST['email'];
$file = $_POST['file'];
$db_host = 'localhost';
$db_user = 'noncecapisco';
$db_pass = '';
$db_name = 'my_noncecapisco';
$cn = new mysqli($db_host, $db_user, $db_pass, $db_name);
$sql = "INSERT INTO dati_utente (testo, email, file) VALUES ("
. "'" . $dati. "',"
. "'" . $mail . "',"
. "'" . $file_salvato . "'),";
if (!$cn->query($sql)) {
echo "Errore della query: " . $cn->error . ".";
} else {
header('Location: upload2/index 2.php');
}
?>
e questo e' l'index:
http://noncecapisco.altervista.org/upload2/index2.phpCodice PHP:
<?php
$servername = "localhost";
$username = "noncecapisco";
$password = "";
$dbname = "my_noncecapisco";
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM dati_utente";
$result = $conn->query($sql);
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
echo '<img src="/upload2'.$file_salvato.'"><br>';
echo ' '.$row["testo"].' - '.$row["email"].' - ' .$row["file"].'<br>'.PHP_EOL;
}
?>
Ultima modifica di alemoppo : 12-10-2023 alle ore 19.45.48
Ma nel database ci sono dei dati? (puoi verificarlo con phpMyAdmin).
Poi, correggi l'ultima virgola nella query $sql.
Infine, evita lo spazio nei nomi del file, intendo:
Ciao!Codice PHP:
header('Location: upload2/index 2.php');
regolamento altervista_______________ regolamento forum
header('Location:upload2/index2.php'); eccolo il codice , gli spazi io nel file non li l'ho... comunque no...dal form mi da questo errore....ho gia visto su php admin non ci sono... mi carica solo il file nella cartella upload2. stop.
ci ho riprovato e mi da questo errore:
Errore della query: Hai un errore nella sintassi SQL; controlla sul manuale che corrisponde alla versione del tuo server MySQL la sintassi corretta da utilizzare vicino a '( testo, email, file) VALUES ('ciao','fra_das@libero.it','23155049-.')' alla riga 1.
i dati li ha memorizzati...testo-email.e il file...ma dice che ce' un problema..
Ultima modifica di noncecapisco : 12-10-2023 alle ore 21.01.50
alemoppo....come per magia rifunziona tutto..... il sito mi stampa testo ed e-mail , il file viene spostato in unpload2 e nel database ho tutto.. alemoppo cio solo a te... aiutame a farmi vedere pure le foto e poi non ti disturbo piu'. grazie.
Ultima modifica di noncecapisco : 12-10-2023 alle ore 22.56.35
buon giorno alemoppo....non mi abbandonare proprio adesso.... senti...ho fatto una prova....
nel database sotto la voce file ce' blob 5 b.. l'ho scaricato e l'ho aperto..in pratica ce' il nome del file, lo
stesso che viene salvato nella cartella upload2. quindi... ho fatto un'altra prova ed ha funzionato:
sei al posto di echo '<img src="./upload2/$file_salvato"><br>'.PHP_EOL;
metto il nome del file '<img src="./upload2/85220210-."><br>'.PHP_EOL;
la foto me la apre con sotto il testo e la email..e' perfetto.
ricapitolando: ho capito che con $file_salvato non riconosce il nome del file.
alemoppo non mi abbandonare....
provare per credere...
http://noncecapisco.altervista.org/upload2/index2.php
Ultima modifica di noncecapisco : 13-10-2023 alle ore 11.43.38
Salve,
il motivo è legato all'uso non corretto degli apici e dei doppi apici. Sta usando la prima condizione (l'unica che non va) di quelle che le ha esposto alemoppo (qui).
PS.
Nel mio caso (ma probabilmente vale anche per gli altri utenti), ho preferito tenermi fuori da questa discussione per evitare di creare confusione. Specie quando si è neofiti, è preferibile per un deferminato argomento avere una sola persona che spiega bene le cose anzichè tante persone che lo fanno in modo differente.
Cordiali saluti.
Ultima modifica di GraphOGLRisorse : 13-10-2023 alle ore 17.42.19
buona sera signore... grazie per la risposta... ora li provo tutti e vedo quale funziona..grazie. e buonaserata.
li ho provati tutti... non funzionano...boo secondo me non associa il nome del file alla variabile $file_salvato.
http://noncecapisco.altervista.org/upload2/index2.php
Oltre al report degli errori attivo, può fare uso per debug anche di var_dump().
La variabile $file_salvato ha verificato se recupera qualcosa e cosa?
Cosa preleva la variabile $file_salvato dal database, il nome delle immagini o altro?Codice PHP:
var_dump($file_salvato);
Se non sbaglio, le immagini non sono salvate come dati nel database ma come file nella cartella upload2/.
Se le immagini sono salvate come file, forse sarebbe più semplice usare glob().
Qualcosa come questo:
Visualizza le immagni anche riordinate per data (questo è un di più).Codice PHP:
<?php
$ultimi=0;
foreach(glob('../upload2/*.{jpg,jpeg,png,gif,ico}', GLOB_BRACE) as $filename)
{
$f[filemtime($filename)]=$filename;
$ultimi++;
}
krsort($f,SORT_NUMERIC);
reset($f);
for($i=0;$i<$ultimi;$i++)
{
$nomefile = pathinfo(current($f));?>
<img src="<?= current($f) ?>" alt="<?= $nomefile[basename] ?>" title="<?= $nomefile[basename] ?>">
<?php
next($f);
}
?>
Se vuole fare delle prove con questo codice, prima di cercare d'integrarlo nella sua pagina, suggerisco di ricopiarlo su una nuova pagina con nome differente da upload (es. immagni.php), così da non rischiare di fare confusione con quanto già ha fatto con alemoppo.
Cordiali saluti.
infatti il problema e' proprio questo....allora nel database oltre al testo e alla email, sotto la voce file ce'
scritto blob 9 b...l'ho scaricato ed aperto con
il blocco note, ce' scritto il nome del file..ovviamente a numeri,es : 3456776-. (senza estensione) ed' e' quello
che mi sposta nella cartella upload. infatti se spingo si apre la foto. per questo che nella mia ignoranza ho detto
che nel $file_salvato secondo me non e' memorizzato il nome del file.grazie, si si..grazie il file che ho postato e'
uno di prova...quello vero non lo tocco..quando riusciro' a farlo funzionare lo integrero'.
questo e' il codice di upload dal form...
e questo e' l'index...Codice PHP:
<?php
$file_salvato = rand(1, 100000000).'-'.$_POST['nome'].'.'.end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "upload2/".$file_salvato);
$dati = $_POST['testo'];
$mail = $_POST['email'];
$file = $_POST['file'];
$db_host = 'localhost';
$db_user = 'noncecapisco';
$db_pass = '';
$db_name = 'my_noncecapisco';
$cn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($cn->connect_errno) {
echo "Connessione fallita: ". $cn->connect_error . ".";
exit();
}
$sql = "INSERT INTO dati_utente (testo, email, file) VALUES ("
. "'" . $dati. "',"
. "'" . $mail . "',"
. "'" . $file_salvato . "')";
if (!$cn->query($sql)) {
echo "Errore della query: " . $cn->error . ".";
}else{
echo "Registrazione effettuata correttamente.";
}
header ('location:[url]http://noncecapisco.altervista.org/upload2/index2.php');[/url]
?>
Codice PHP:
<?php
$servername = "localhost";
$username = "noncecapisco";
$password = "";
$dbname = "my_noncecapisco";
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM dati_utente";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
echo "<img src="./upload2/$file_salvato"><br>".PHP_EOL;
echo' '.$row["testo"].' - '.$row["email"].'<br>';
}
?>
Ultima modifica di alemoppo : 14-10-2023 alle ore 01.55.30 Motivo: +tag
Mi sfugge qualcosa...
La variabile $temp non esiste, quindi così non è valorizzata. $temp dovrebbe essere valorizzata con l'estensione del file, osbaglio?Codice PHP:
$file_salvato = rand(1, 100000000).'-'.$_POST['nome'].'.'.end($temp);
Riguardo alla variavile $file_salvato, sta sbagliando l'uso dei doppi apici:
usando solo i doppi apiaci in questo modo, sepezza la stringa.Codice PHP:
echo "<img src="./upload2/$file_salvato"><br>".PHP_EOL;
Così è uno dei modi corretti:
Si possono usare sempre i doppi apici, solo se si fa uso anche di \ prima di alcuni di essi (diifficle dirlo in modo semplice), che equivale ad alternare i doppi apici con i singoli.Codice PHP:
echo "<img src='./upload2/$file_salvato'>".PHP_EOL;
Forse voleva fare così ed ha dimenticato il \ prima dei doppi apaici?Codice:echo "<img src=\"./upload2/$file_salvato\">".PHP_EOL;
Cordiali saluti.
Ultima modifica di GraphOGLRisorse : 13-10-2023 alle ore 21.12.35
ci ero arrivato anche io che $temp non e' valorizzata....ma come la valorizzo?
$temp = esplode ($file_salvato = rand(1, 100000000).'-'.$_POST['nome'].'.'.end($temp)); cosi?
Ultima modifica di noncecapisco : 13-10-2023 alle ore 21.10.48
Ultima modifica di GraphOGLRisorse : 13-10-2023 alle ore 21.25.36
Se è facsimile al messaggio con il codice che ho modificato nell'altra discussione $temp è l'estensione originale del file inoltrato.
Qui nota il file si sta spostando in /upload e non /upload2Codice PHP:
<?php
/* Commento multi linea
$filename = "dati.txt";
$handle = fopen($filename, "ab");
fwrite ($handle,$_POST['testo']);
fwrite($handle, "\r\n");
*/
$temp = explode(".", $_FILES["file"]["name"]);
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".rand(1, 100000000).'-'.$_POST['nome'].'.'.end($temp));
header('Location: upload/index.php');
?>
PS. esiste $_FILES['name']['file'] ma non $_POST['file'] accade perché si da per ovvio il codice del form mentre invece la variabile è $_FILES per il file. Per un determinato ordine di inizio e fine l'unica alternativa è postare il codice completo (solo questa è quella corretta).
Ultima modifica di darbula : 13-10-2023 alle ore 23.01.21
PS: ringrazio tutti per l'aiuto che mi state dando, ma forse non mi sono spiegato bene ,alemoppo mi ha aiutato a
scrivere questi due codici per fare questo:
con il codice upload del form riesco a scrivere nel database " testo-email- e il nome del file ,salvato sotto la
voce blob." in piu' lo salvo anche nella cartella upload/2 "senza estensione", me se spingo si apre la
foto,quindi esiste.
con il codice index riesco a stampare a video " il testo- l'email ,e quello che vorrei e' visualizzare anche la
foto. e' solo che non riesco a stamparla a video..(ovviamente io non sono capace) riallego il codice upload e il
codice index.
NB: a me, manca solo di richiamare la foto a schermo. grazie. e buona giornata a tutti.
codice upload:
Codice PHP:
<?php
$file_salvato = rand(1, 100000000).'-'.$_POST['nome'].'.'.end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "upload2/".$file_salvato);
$dati = $_POST['testo'];
$mail = $_POST['email'];
$file = $_POST['file'];
$db_host = 'localhost';
$db_user = 'noncecapisco';
$db_pass = '';
$db_name = 'my_noncecapisco';
$cn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($cn->connect_errno) {
echo "Connessione fallita: ". $cn->connect_error . ".";
exit();
}
$sql = "INSERT INTO dati_utente (testo, email, file) VALUES ("
. "'" . $dati. "',"
. "'" . $mail . "',"
. "'" . $file_salvato . "')";
if (!$cn->query($sql)) {
echo "Errore della query: " . $cn->error . ".";
}else{
echo "Registrazione effettuata correttamente.";
}
header ('location:http://noncecapisco.altervista.org/upload2/index2.php');
?>
codice index:
Codice PHP:
<?php
$servername = "localhost";
$username = "noncecapisco";
$password = "";
$dbname = "my_noncecapisco";
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM dati_utente";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
echo "<img src="./upload2/$file_salvato"><br>".PHP_EOL;
echo' '.$row["testo"].' - '.$row["email"].'<br>';
}
?>
Ultima modifica di alemoppo : 14-10-2023 alle ore 08.55.18 Motivo: +tag
Beh salviamo anche l'estensione!
Ma hai un motivo per salvare l'immagine con quel nome? è vero che è praticamente impossibile che escano due numeri uguali da 1 a 100000000, ma se succede sovrascriveresti una immagine già presente! Farei prima un controllo se il file esiste, nel caso, ricalcolerei il nome del file (ma questo facciamolo quando funzionerà tutto il resto).Codice PHP:
$file_salvato = rand(1, 100000000).'.'.pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
Per mostrare l'immagine:
Devi alternare doppi apici con singoli apici. Questa cosa in effetti all'inizio non è semplice da capire.Codice PHP:
echo "<img src='./upload2/".$row["file"]."'><br>".PHP_EOL;
Se non dovesse funzionare, puoi mostrare il codice HTML generato? (o indicare la pagina index).
EDIT:
In generale, i form di upload sono i più vulnerabili ad attacchi, ora immagino non ti interessa proteggerti in questo caso. In futuro però dovresti:
- Controllare l'estensione del file se è tra quelle che ti aspetti
- Usare GD per controllare se l'immagine caricata è veramente una immagine (ad esempio con la imagecreatefrompng() )
- Controllare che $_FILES["file"]["size"] non sia troppo grande
Ciao!
Ultima modifica di alemoppo : 14-10-2023 alle ore 09.17.31
regolamento altervista_______________ regolamento forum
ciao alemoppooooooooooooooooooooooooooooooooo che bello sentirti ah ah! senti io ho provato a fare quello che hai
detto tu,ma non funziona, pero' in piu' questa volta associa il nome e il testo ad una immagine specifica.
ti allego il report generato..
<div style=" margin-left:390px;">
<img src='./upload2/36182668-.'><br>
marina - fra_das@libero.it<br><img src='./upload2/3807901-.'><br>
boo - nando@mail.it<br><img src='./upload2/9353201-.'><br>
roma - fra_das@libero.it<br><img src='./upload2/96143508-.'><br>
roma - nando@mail.it<br><img src='./upload2/Array'><br>
marina - fra_das@libero.it<br><img src='./upload2/15902298-.'><br>
roma - nando@mail.it<br><img src='./upload2/28919086-.'><br>
marina - nando@mail.it<br><img src='./upload2/7800682.'><br>
- <br>
</div>
grazie alemoppooooooooo
Manca appunto l'estensione, ricarica le immagini salvando anche l'estensione.
Ciao!
regolamento altervista_______________ regolamento forum
ho elimitato tutto , ho caricato testo-email- e foto, e' uguale a prima,pero' in piu' ha l'estensione.
<div style=" margin-left:390px;">
<img src='./upload2/3864157.jpg'><br>
marina nando@mail.it<br>
</div>
alemoppo...nella cartella upload2 avevo eliminato tutto. giustamente e (grazie a te) dopo l'upload, nella cartella
mi ritrovo il file 3864157.jpg lo stesso che e' nel report dell'index. ora... perche' se nella cartella spingo il file
si apre la foto e invece nell'index non si apre? eeeeeeeeee grazie alemoppo
alemoppo forse ho trovato l'inghippo.... se nel report dell'index spingo :
<img src='./upload2/3864157.jpg'><br>
mi apre la pagina: (non trovata)
http://noncecapisco.altervista.org/u...d2/3864157.jpg
ce' scritto 2 volte upload2.
ho risoltoooooooooooooooooooooooooooooooooooooooooooo oooooooooo
non trovava il file.. ho fatto cosi':
echo "<img src='".$row["file"]."'><br>".PHP_EOL;
grazie alemoppooooooooooooooooooooooooooooooooooooooooooo oooooooooooooooooooooooooooooooooooooooo
Ultima modifica di noncecapisco : 14-10-2023 alle ore 11.37.03
regolamento altervista_______________ regolamento forum
nooooooo quella e' la pagina che lascio per il finale...non ti sei accorto che non ha il testo e l'email? la pagina dove stiamo lavorando(tu) e' questa upload2/index2.php...prova...
Stessa cosa, a me pare funzionare: https://noncecapisco.altervista.org/upload2/index2.php
Ciao!
regolamento altervista_______________ regolamento forum
perfetto