Trasferimento immagini da una tabella ad un'altra

  • Creatore Discussione Creatore Discussione Ciakko
  • Data di inizio Data di inizio

Ciakko

Nuovo Utente
5 Giu 2014
11
0
1
Sono fermo ad un punto morto raggiunto con un ragionamento contorto, per cui scusatemi da subito per la mia ignoranza.
In sostanza voglio mettere a schermo un'anteprima del form compilato, composto da file di testo e immagine presa dal proprio HD. Per comodità di gestione, e anche perchè non conosco alternative, ho pensato di inserire i dati in una tabella fatta per l'anteprima nel momento che si preme anteprima. In questo modo posso riprendermi i dati "anteprima", rimetterli a schermo e ricompilare in maniera automatica il form con gli stessi dati, pronti per essere spediti alla tabella definitiva tramite il tasto invia. Vi chiedo da subito se c'è un'altra soluzione che posso usare in alternativa se non risolvo con questa.

Il problema con il mio metodo è che con l'immagine (campo BLOB) non so come inserirla all'interno di un form. L'input type="file" non è precompilabile (dico bene? sarebbe bello poter conservare il percorso del file) e inserire l'immagine in un input type="text" non funziona, quando la vado a rimettere nel database trova il file vuoto.

Ora, per ovviare a questo problema, ho pensato di riprendere i dati dalla tabella "anteprima" e rigirarli nella tabella definitiva, senza farli passare per il form html. Anche questa soluzione non mi riporta a schermo la mia immagine sebbene veda che in tabella c'è effettivamente un campo BLOB con il suo peso e la sua estensione.

Siccome mastico appena php lavoro su degli script trovati in rete e modificati all'occorrenza. Ho notato che prima di caricare un file sul database il mio script fa questo:
PHP:
if ( !($handle = fopen ($_FILES['userFile']['tmp_name'], "r")) ) {
   die('<p>Error opening temp file</p></body></html>');
} else if ( !($image = fread ($handle, filesize($_FILES['userFile']['tmp_name']))) ) {
   die('<p>Error reading temp file</p></body></html>');
} else {
	fclose ($handle);

Da quanto ho capito apre il file ricevuto dal form, ne ricava la grandezza ed inserisce i dati nella variabile $image che è quella poi inviata al database nel campo BLOB.
Quando io rigiro la mia immagine da una tabella all'altra questo processo lo ometto perchè non saprei come trattare il file in quel caso. Potrebbe essere questo il motivo?

Vi invio i codici della pagina con il form e della pagina con la connessione al DB.
Ogni consiglio oltre che la soluzione al mio problema sarebbe molto gradita.
Grazie mille
Ciao


HTML:
	<?php
		mysql_connect("****", "****", "****");
		mysql_select_db("****");
		mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

		$sql="SELECT * FROM `anteprima` WHERE id=1";
		$dati=mysql_query($sql);
		$row=mysql_fetch_array($dati);
	?>
	
	<article>
	<div class="content3">
		<div class="foto2">
		<?php
        echo '<img src="getfotoant.php?id=' . $row['id'] . '" alt="' . $row['alt'] . '" title="' . $row['alt']  .'" width="300px" />  ' . "\n";
		?>
			
		<br/>
		<?php echo $row["descfoto"]; ?>
		</div>
		<div class="article3">
			<h2><?php echo $row["titolo"]; ?></h2>
			<h4><?php echo $row["sottotitolo"]; ?></h4>
			<pre><p><?php echo $row["descrizione"]; ?></p></pre>
			<p>
			PRODOTTI: <?php echo $row["prodotti"]; ?>
			</p>
		</div>
	</div>
	</article>
	
	
<div class="content3" style="background:transparent; box-shadow:none">
	<form class="upload" action="../db/prodottiupload.php" method="post" enctype="multipart/form-data">
	<p>Seleziona la foto</p>
	<input class="input" type="file" name="userFile" id="userFile" />
	<p>Testo alternativo</p>
	<input class="input" type="text" name="alt" required value="<?php echo $row['alt']; ?>"/>
	<p>Descrizione della foto</p>
	<input class="input" type="text" name="descFoto" value="<?php echo $row['descfoto']; ?>"/>
	<p>Titolo</p>
	<input class="input" type="text" name="title" required value="<?php echo $row['titolo']; ?>"/>
	<p>Sottotitolo</p>
	<input class="input" type="text" name="subtitle" required value="<?php echo $row['sottotitolo']; ?>"/>
	<p>Descrizione prodotto</p>
	<textarea class="input scorre" rows="8" name="descrizione" required /><?php echo $row['descrizione']; ?></textarea>
	<p>Prodotti</p>
	<input class="input" type="text" size="30" name="prodText" required value="<?php echo $row['prodotti']; ?>"/>
	<button class="invio" type="submit" formaction="../db/prodottiupload.php?anteprima=01">Anteprima</button>
         <button class="invio" type="submit"  formaction="../db/prodottiupload.php?scelto=01">Invia</button>
</form>
</div>



PHP:
if(isset($_GET["scelto"])){
		
		mysql_connect("****", "****", "****");
		mysql_select_db("****");
		mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

		
		$sql="SELECT * FROM `anteprima` WHERE id=1";
		$dati=mysql_query($sql);
		$row=mysql_fetch_array($dati);
		
		$query = 'INSERT INTO prodotti (immagine,alt,type,descfoto,titolo,sottotitolo,descrizione,prodotti) VALUES ("' . $row['immagine'] . '","' . $row['alt'] . '","' . $row['type'] . '","' . $row['descFoto'] . '","' . $row['title'] . '","' . $row['subtitle'] . '","' . $row['descrizione'] . '","' . $row['prodText'] . '")';
		$result = mysql_query($query);
		if (!$result) {
		die("Errore nella query $query: " . mysql_error());
		} else {
		header("location: ../prodotti.php?conferma=1");
		}
 
Ultima modifica:
Ho risolto con:

PHP:
$query = "INSERT INTO prodotti (immagine,alt,type,descfoto,titolo,sottotitolo,descrizione,prodotti)
        SELECT immagine,alt,type,descfoto,titolo,sottotitolo,descrizione,prodotti
        FROM anteprima
        WHERE id=1";

Mi resta il dubbio del perchè non funzionasse rigirando la variabile da una tabella all'altra.
 

Discussioni simili