caricare immagini, inserire percorso nel db e visualizzarlo

Buongiorno a tutti sono nuovo del forum ma grazie ai vostri corsi stò programmando pian piano un sito di annunci, riesco a caricare le immagini dal form, in una cartella, ma non riesco a visualizzarle ecco i codici:

FORMFOTO.HTM

<html>
<head>
<title>funzionerà???
</title>
</head>
<form enctype='multipart/form-data' action='elaborafoto.php' method='post'>
il tuo nome: <input type='text' name='nome'>
<br>
Metti la tua immagine:
<input type='hidden' name='MAX_FILE_SIZE' value='100000'>
 <input name='immagine1' type='file'><br>
<input type='submit' value='Invia le immagini'>
</htm>

ELABORAFOTO.PHP

<?php
$connessione=mysql_connect("localhost", "------","----------");
$selezione_db=mysql_select_db("prove", $connessione);
$inserimento=mysql_query("insert into forum (nome, percorso) values(\"$nome\", \"$destinazione\")");
$TMPDIR = "c:\\Temp\\uploads";
$ultimo_id=mysql_insert_id();
$nome_immagine = $HTTP_POST_FILES ['immagine1'] ['tmp_name'];
$destinazione = "c:\\Apache Software Foundation\\Apache2.2\\htdocs\\prove\\immagini\\.$id.jpg";
$nuovo_nome = $destinazione.$ultimo_id.".jpg";
move_uploaded_file($nome_immagine,$nuovo_nome);
echo "<img src=\"$ultimo_id.jpg\">";
?>

Qualcuno ha dei suggerimenti??

Grazie!!!

inviato 7 anni fa
gianluca80
X 0 X

Ciao, ho notato alcune cose che non vanno bene in questo script:

1. $destinazione = "c:\\Apache Software Foundation\\Apache2.2\\htdocs\\prove\\immagini\\.$id.jpg";

La variabile $id dov'è? Non l'hai nè dichiarata nè definita precedentemente. (immagino tu volessi scrivere $ultimo_id)

2. Hai fatto un casotto con la concatenazione delle stringhe:

$nuovo_nome = $destinazione.$ultimo_id.".jpg";

Sintatticamente è giusta me logicamente no, in pratica $nuovo_nome sarebbe uguale a:

"c:\\Apache Software Foundation\\Apache2.2\\htdocs\\prove\\immagini\\.$id.jpg.$ultimo_id.jpg";

3. $inserimento=mysql_query("insert into forum (nome, percorso) values(\"$nome\", \"$destinazione\")");

Setssa cosa di prima: Dove hai dichiarato $nome e $destinazione?

PS: Invece di $HTTP_POST_FILES puoi usare la variabile superglobale $_FILES

risposto 7 anni fa
Hroud
X 0 X

Grazie!! ora riesco benissimo a memorizzare le foto con il nome del id del record corrispondente

Io in teoria la variabile percorso l ho dichiarata ma l ho dichiarata dopo la query, per avere l ultimo id ma non me la memorizza, se la dichiaro prima della query mi memorizza il percorso ma non mi salva le foto con l ultimo id, in poche parole mi salva una sola foto e la chiama 0 come si può fare??

Grazie!!

risposto 7 anni fa
gianluca80
X 0 X

Posto lo script:

<?php
$connessione=mysql_connect("localhost", "root","elettronica");
$selezione_db=mysql_select_db("prove", $connessione);
$nome = htmlspecialchars($_POST['nome']);
$inserimento=mysql_query("insert into forum (nome, percorso) values(\"$nome\", \"$destinazione\")");
$TMPDIR = "c:\\Temp\\uploads";
$ultimo_id=mysql_insert_id();
$nome_immagine = $_FILES ['immagine1'] ['tmp_name'];
$destinazione = "c:\\Apache Software Foundation\\Apache2.2\\htdocs\\prove\\immagini\\$ultimo_id";
$nuovo_nome = $destinazione.".jpg";
move_uploaded_file($nome_immagine,$nuovo_nome);
echo "<img src=\"ultimo_id.jpg\">";
?>

In questo non mi da il percorso nel db

<?php
$connessione=mysql_connect("localhost", "root","elettronica");
$selezione_db=mysql_select_db("prove", $connessione);
$nome = htmlspecialchars($_POST['nome']);
$TMPDIR = "c:\\Temp\\uploads";
$ultimo_id=mysql_insert_id();
$nome_immagine = $_FILES ['immagine1'] ['tmp_name'];
$destinazione = "c:\\Apache Software Foundation\\Apache2.2\\htdocs\\prove\\immagini\\$ultimo_id";
$nuovo_nome = $destinazione.".jpg";
move_uploaded_file($nome_immagine,$nuovo_nome);
$inserimento=mysql_query("insert into forum (nome, percorso) values(\"$nome\", \"$destinazione\")");
echo "<img src=\"ultimo_id.jpg\">";
?>

In quest' altro modo non mi memorizza le foto

risposto 7 anni fa
gianluca80
X 0 X

Il primo esempio va bene, non ti memorizza il percorso semplicemente perchè l'hai dichiarato dopo, dichiaralo prima di eseguire la query.

Un'ultima precisazione: echo "<img src=\"ultimo_id.jpg\">";questo funziona solo se elaborafoto.php si trova nella stessa cartella delle foto, altrimenti per visualizzarla correttamente devi mettere il tutto il percorso, cioè $nuovo_nome.

Ciao!  :D

risposto 7 anni fa
Hroud
X 0 X

C'e l ho fatta ;D :D

 O0

Grazie!!!

risposto 7 anni fa
gianluca80
X 0 X

A dire la verità ho sistemato il tutto cosi:

Lo posto cosi magari puo venire utile a qualcuno

ELABORAFOTO.PHP

<?php
$connessione=mysql_connect("localhost", "root","elettronica");
$selezione_db=mysql_select_db("prove", $connessione);
$nome = htmlspecialchars($_POST['nome']);
$titolo = htmlspecialchars($_POST['titolo']);
$inserimento=mysql_query("insert into forum (nome, titolo) values(\"$nome\", \"$titolo\")");
$TMPDIR = "c:\\Temp\\uploads";
$ultimo_id=mysql_insert_id();
$nome_immagine = $_FILES ['immagine1'] ['tmp_name'];
$destinazione = "c:\\Apache Software Foundation\\Apache2.2\\htdocs\\prove\\immagini\\$ultimo_id";
$nuovo_nome = $destinazione.".jpg";
move_uploaded_file($nome_immagine,$nuovo_nome);
if($inserimento)
 {
  header('location:guardafoto.php');
  }
else
{
echo "Hai sbagliato";
}
?>

GUARDAFOTO.PHP

<html>
<?php
$connessione=mysql_connect("localhost", "root","elettronica");
$selezione_db=mysql_select_db("prove", $connessione);
$lettura_risultati=mysql_query("select id, nome, titolo from forum order by id");
  while($scatola_temporanea = mysql_fetch_array($lettura_risultati))
  {
     $id=$scatola_temporanea['id'];
    $nome=$scatola_temporanea['nome'];
    $titolo=$scatola_temporanea['titolo'];
echo "<table width=\"100%\" border=\"0\" align=\"center\" bgcolor=\"white\" cellspacing=\"1\" cellpadding=\"1\" bordercolor=\"black\" background=\"white\">";
echo "<tr>";
echo "<td height=\"50\" width=\"50\" rowspan=\"2\">";
echo "<a href=\"guardaannuncio.php\"><img height=\"50\" wheight=\"50\" src=\"immagini//$id.jpg\"></a>";
echo "</td>";
echo "<td>";
echo "<a href=\"guardaannuncio.php\">&nbsp &nbsp <u>$nome ha annunciato</u></a>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<a href=\"guardaannuncio.php\">&nbsp &nbsp <u>$titolo</u></a>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<hr width=\"100%\" color=\"#2c8522\" size=\"2\">";
}
?>
<a href="formfoto.htm"> Torna indietro </a>
</html>

Mi sembra un codice valido... però io non sono una cima...anzi... :P

risposto 7 anni fa
gianluca80
modificato 7 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda