Problema con Upload immagini

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Buonasera,
ho realizzato una piccola area privata di gestione degli eventi di un sito web attraverso la quale l'utente può gestire l'inserimento degli eventi tra cui anche un'immagine tramite pannello di amministrazione. Tutto è a posto tranne l'upload delle immagini che non riesco ad inviare al database se non la stringa dell'immagine e a visualizzarla tramite pannello di amministrazione. Ho utilizzato il vostro tutorial (https://www.mrw.it/php/archiviare-immagini-database-usando-php-mysql_7021_4.html)

Secondo voi quale potrebbe essere il problema? Nel momento in cui provo a visualizzare l'immagine mi compare l'errore "id sconosciuto"
Credo che il problema sta proprio nell'invio dell'id che non viene riconosciuto
Ho creato una tabella unica con i seguenti campi:
1) Id_eventi
2) data_eventi
3) titolo_eventi
4)nome
5) type
6) size
7) immagine
8)testo_eventi

Vi posto un po' di codice sperando che riuscite a farmi capire l'errore.
FILE FORM
PHP:
<?php
include("connetti.php");
include("upload.php");

?>
<meta name="viewport" content="width=device-width">
</head>

<body>

<div id="contenitore"> 
    <div id="logo"><img src="img/logo.png" class="logo"></div>
    <h1>INSERIMENTO EVENTI</h1>
 
  <form name="valori" id="modulo" action="inse-database.php" method="post">
  	
    <input type="text" name="data" placeholder="Data Evento" required><br />
  	<input type="text" name="titolo" placeholder="Titolo Evento" required><br />
    <textarea name="desc" placeholder="Inserisci Testo" required></textarea><br />
    <div class="foto">
    	<input name="file" type="file" id="foto">
    </div>
    <input type="submit" value="INVIA" id="submit">
  <input type="hidden" name="MAX_FILE_SIZE" value="30000">
  </form>
     <div class="amministrazione"><a href="eventi-tutti.php">TUTTI GLI EVENTI VIGNALACORTE</a></div>
    </div>
<?php
include("chiudi.php");
?>

FILE LINK
PHP:
<?
include("connetti.php");
$sql = "SELECT Id_eventi, nome FROM eventi ORDER BY Id_eventi DESC";
$result = @mysql_query($sql) or die (mysql_error ());
while ($row = @mysql_fetch_array($result))
{
  $id = $row['Id_eventi'];
  $nome = $row['nome'];
  echo "<a href=\"show.php?id=".$id."\">".$nome."</a><br />";
}
?>

FILE SHOW.PHP
PHP:
<?
if (isset($_GET['id']))
{
include("connetti.php");

  $sql = "SELECT Id_eventi,type,immagine FROM eventi WHERE Id_eventi='$id'";
  $result = @mysql_query($sql) or die(mysql_error ());
  $row = @mysql_fetch_array($result);
  $id = $row['Id_eventi'];
  $type = $row['type'];
  $img = $row['immagine'];
  if (!$id)
  {
    echo "Id sconosciuto";
  }else{
    @header ("Content-type: ".$type);
    echo $img;
  }
}else{
  echo "Impossibile soddisfare la richiesta.";
}
?>
FILE UPLOAD
PHP:
<?
function upload()
{
  $result = false;
  $immagine = '';
  $size = 0;
  $type = '';
  $nome = '';
  $max_size = 300000;
  $result = @is_uploaded_file($_FILES['file']['tmp_name']);
  if (!$result)
  {
    echo "Impossibile eseguire l'upload.";
    return false;
  }else{
    $size = $_FILES['file']['size'];
    if ($size > $max_size)
    {
      echo "Il file è troppo grande.";
      return false;
    }
    $type = $_FILES['file']['type'];
    $nome = $_FILES['file']['name'];
    $immagine = @file_get_contents($_FILES['file']['tmp_name']);
    $immagine = addslashes ($immagine);
    @include 'config.php';
    $sql = "INSERT INTO eventi (nome, size, type, immagine) VALUES ('$nome','$size','$type','$immagine')";
    $result = @mysql_query ($sql) or die (mysql_error());
    return true;
  }
}
?>
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Ciao,
adesso ho sistemato il codice però ho due tipi di problemi:
1) non riesco ad archiviare l'immagine nel database tramite il form
2) nel momento in cui clicco un id di un evento per visualizzare la foto di quell'id mi posta l'elenco di tutte le foto e non solo quella all'id selezionato

Qualcuno puo' aiutarmi?
Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Cioa, riposta il codice aggiornato e il dump della tabella
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Grazie per la risposta,
ecco i codici delle pagine:

1) PAGINA CHE VISUALIZZA GLI EVENTI TRA CUI L'IMMAGINE

PHP:
<?php
$richiesta = "select Id_eventi, data_eventi, titolo_eventi, nome, testo_eventi from eventi order by Id_eventi";


$dati = mysql_query ($richiesta);
echo ("<table>");
echo ("<tr class='testata'>
		<td>IDENTIFICATIVO</td>
		<td>DATA EVENTO</td>
		<td>TITOLO</td>
		<td>DESCRIZIONE</td>
		<td>FOTO</td>
		<td>MODIFICA</td>
		<td>CANCELLA</td>
		<td>IMMAGINI</td>
		
	  </tr>");

while ($riga=mysql_fetch_array($dati)) 
{ 
	echo ("<tr class='testata2'>
		<td>" . $riga ["Id_eventi"] . "</td>
		<td>" . $riga ["data_eventi"] . "</td>
		<td>" . $riga ["titolo_eventi"] . "</td>
		<td>" . $riga ["testo_eventi"] . "</td>
		<td>" . $riga ["nome"] . "</td>
		<td><a href=\"Modifica_eventi.php?id=$riga[Id_eventi]\">Modifica</a></td>
		<td><a href=\"Cancella_eventi.php?id=$riga[Id_eventi]\">Cancella</a></td>
		<td><a href=\"link.php?id=$riga[Id_eventi]\">Foto</a></td>
	     </tr>" );
}

echo ("</table>");
include('chiudi.php');
?>

2 - PAGINA LINK
PHP:
<?
include("connetti.php");
$sql = "SELECT Id_eventi, nome FROM eventi ORDER BY Id_eventi DESC";
$result = @mysql_query($sql) or die (mysql_error ());
while ($row = @mysql_fetch_array($result))
{
  $id = $row['Id_eventi'];
  $nome = $row['nome'];
  echo "<a href=\"show.php?id=".$id."\">".$img."</a><br />";
}
?>

3- PAGINA SHOW.PHP

PHP:
<?
if (isset($_GET['id']))
{
include("connetti.php");

  $sql = "SELECT * FROM eventi WHERE Id_eventi='$id'";
  $result = @mysql_query($sql) or die(mysql_error ());
  $row = @mysql_fetch_array($result);
  $id = $row['Id_eventi'];
  $type = $row['type'];
  $img = $row['immagine'];
  if (!$id)
  {
    echo "Id sconosciuto";
  }else{
    @header ("Content-type: ".$type);
    echo $img;
  }
}else{
  echo "Impossibile soddisfare la richiesta.";
}
?>

4- PAGINA UPLOAD

PHP:
<?
function upload()
{
  $result = false;
  $immagine = '';
  $size = 0;
  $type = '';
  $nome = '';
  $max_size = 300000;
  $result = @is_uploaded_file($_FILES['file']['tmp_name']);
  if (!$result)
  {
    echo "Impossibile eseguire l'upload.";
    return false;
  }else{
    $size = $_FILES['file']['size'];
    if ($size > $max_size)
    {
      echo "Il file è troppo grande.";
      return false;
    }
    $type = $_FILES['file']['type'];
    $nome = $_FILES['file']['name'];
    $immagine = @file_get_contents($_FILES['file']['tmp_name']);
    $immagine = addslashes ($immagine);
  	include("connetti.php");
    $sql = "INSERT INTO eventi (nome, size, type, immagine) VALUES ('$nome','$size','$type','$immagine')";
    $result = @mysql_query ($sql) or die (mysql_error());
    return true;
  }
}
?>

5 - PAGINA FORM CHE INCLUDE L'UPLOAD

PHP:
 <form name="valori" id="modulo" action="inse-database.php" method="post">
  	
    <input type="text" name="data" placeholder="Data Evento" required><br />
  	<input type="text" name="titolo" placeholder="Titolo Evento" required><br />
    <textarea name="desc" placeholder="Inserisci Testo" required></textarea><br />
    <div class="foto">
    	<input name="file" type="file" id="foto">
    </div>
    <input type="submit" value="INVIA" id="submit">
  <input type="hidden" name="MAX_FILE_SIZE" value="30000">
  </form>

6 - TABELLA PHP MYADMIN
PHP:
CREATE TABLE IF NOT EXISTS `eventi` (
  `Id_eventi` int(11) NOT NULL AUTO_INCREMENT,
  `data_eventi` varchar(10000) NOT NULL,
  `titolo_eventi` varchar(1000) NOT NULL,
  `nome` varchar(50) NOT NULL,
  `size` varchar(25) NOT NULL,
  `type` varchar(25) NOT NULL,
  `immagine` blob NOT NULL,
  `testo_eventi` varchar(1000) NOT NULL,
  PRIMARY KEY (`Id_eventi`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Non è molto chiaro
nella pagina 1 manca la connessione al database
nella pagina 2 la variabile $img non è valorizzata, forse volevi scrivere $nome
nella pagina 3 $id non è valorizzato nella query devi usare il GET
PHP:
$sql = "SELECT * FROM eventi WHERE Id_eventi=" . $_GET['id'];
nel form non hai messo enctype='multipart/form-data'

Il sistema più semplice comunque è salvare l'immagine in una cartella del server e nel database solamente il percorso per raggiungerla
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Ok adesso sembra andare perché mi visualizza le immagini però non me le fa più caricare dal form. Mi spieghi meglio come salvare l'immagine in una cartella dal form? E solo il percorso nel database?

Grazie mille
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Buongiorno,
sto ancora combattendo con questo problema. Ho fatto un passo avanti nel senso che adesso sono riuscita ad impostare l'area dinamica in modo che la foto viene visualizzata dinamicamente tramite la stampa della stringa della foto inserita tramite form mentre l'immagine è presente in una cartella del sito.

Il problema è che il cliente non capisce niente di codice e quindi non sarebbe in grado di inserire l'immagine nella cartella. Per questo mi sarebbe molto utile fare in modo che il cliente la inviasse tramite form. Come posso fare? È così complicato?

Per piacere aiutatemi . Riposto i codici così potete dare un'occhiata


CODICE FORM

HTML:
<?php
include("connetti.php");

?>
<meta name="viewport" content="width=device-width">
</head>

<body>

<div id="contenitore"> 
    <div id="logo"><img src="img/logo.png" class="logo"></div>
    <h1>INSERIMENTO EVENTI</h1>
 
  <form name="valori" id="modulo" action="inse-database.php" method="post">
  	
    <input type="text" name="data" placeholder="Data Evento" required><br />
    <textarea name="desc" placeholder="Inserisci Testo" required></textarea><br />
    <div class="foto">
    	 <input type="text" name="nomefoto" placeholder="Foto" required><br />
    </div>
    <input type="submit" value="INVIA" id="submit">
  </form>
 
     <div class="amministrazione"><a href="eventi-tutti.php">TUTTI GLI EVENTI VIGNALACORTE</a></div>
    </div>
<?php
include("chiudi.php");
?>

CODICE INSERIMENTO DATABASE

PHP:
<?php
$id = $_POST["Id_eventi"];
$nomefoto = $_POST["nomefoto"];
$ladata = $_POST["data"];
$ladesc = $_POST["desc"];

include ("connetti.php");
//query che serve ad aggiornare il database

mysql_query("INSERT INTO `vignalacorte`.`Eventi-vigna`(`data`, `text`, `nome-foto`) values ('$ladata','$ladesc', '$nomefoto')");
$ultimo_id = mysql_insert_id();
?>

CODICE VISUALIZZAZIONE AREA DINAMICA SUL SITO

PHP:
 <?php
 include('connetti.php');
$richiesta = "select * from `Eventi-vigna` order by Id_eventi";

$dati = mysql_query ($richiesta);


while ($riga=mysql_fetch_array($dati)) 
{ 
	echo ("<div class='evento'>
			<div class='foto-ev'><img src='img_eventi/{$riga ['nome-foto']}'> </div>	
			<div class='data'><span class='small'><br />" . $riga ["data"] . "</span></div>
			<div class='commento'><p>" . $riga ["text"] . "</p></div>
			
	     </div>" );
}

echo ("</div>");
include('chiudi.php');
?>

Vi prego aiutatemi
 
Discussioni simili
Autore Titolo Forum Risposte Data
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
P Problema con lettura filesystem del client da server! Upload multiplo foto. PHP 5
F Problema con upload di immagini che superano 2MB PHP 14
F Problema con upload di file PHP 1
A problema con upload immagini multiple PHP 0
G Problema con upload immagini e IE7 PHP 6
V Problema con Pure Asp Upload Classic ASP 4
F Problema Upload file con Internet Explorer PHP 29
S Problema Dominio su Tiscali e upload con ADSL ALICE Domini 1
C problema upload immagini grandi con 4images Programmazione 0
D problema con upload [Era: info] PHP 13
M Problema con l'upload PHP 0
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
N Problema con position absolute e overflow HTML e CSS 4
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
O problema con query PHP 4
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema con eccessiva nitidezza apertura Camera Raw Photoshop 0
G Problema ------- con Query PHP 1

Discussioni simili