Form caricamento immagine

searedone

Utente Attivo
11 Giu 2010
508
0
0
MHHHHHHH

help non capisco perché non funziona, è iun semplice caricamento di una immagine posto il codice

form
PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"  method="post" enctype="multipart/form-data"> 
  <input type="hidden" value="800000" name="MAX_FILE_SIZE" />
   
 
 <input type="file" name="file_inviato"> 
 <input type="image" src="immagini/salva.gif"  value='salva'>
</form>
PHP:
<?php 

require ('dbc.php');

 $user_uid = $_POST['user_uid'];  
  $nome_file_temporaneo = $_FILES['file_inviato']['tmp_name'];
	$nome_file_vero = $_FILES['file_inviato']['name'];
	$tipo_file = $_FILES['file_inviato']['type'];
	$dati_file = file_get_contents($nome_file_temporaneo);
	$dati_file = addslashes($dati_file);
	

  $sql = "INSERT  INTO users SET
  
  nome_file = '$nome_file_vero', 
				tipo_file = '$tipo_file', 
				dati_file = '$dati_file'
				 
			 user_id=".$_SESSION['user_id']."";	
				 
 
  
  ?>

db:

campo uid , username, ecc ecc, nome_file varchar 255 tipo_file varcar 255 dati_file longblob
 
ciao
prima alcune cose:
1. è importante dare il name al submit (vedi 2)
2. mi sembra dall'action del form che il form che la parte php siano nella stessa pagina, quindi il codice che processa il form dovrebbe essere racchiuso tra

PHP:
if(isset($_POST['name_del_submit']){
	//il codice
}
3. da dove vengono?
$user_uid = $_POST['user_uid'];
$_SESSION['user_id']
??
nel form non c'è un campo chiamato user_uid
non vedo l'istruzione session_start(), visto che stai usando una sessione
 
La sessione SESSION START è all'inizio della pagina,
per comodità non ho postato tutto ...

ora pero' ho un dubbio :(

La tabella users è già attiva quindi forse per aggiungere l'immagine all'users non devo usare una insert ma un UPDATE

sto provando così ma mi succede una cosa strana:

se tolgo il WHERE mi carica la foto ma ovviamente a tutti gli users, se metto il WHERE non mi posta nulla ??? mi sapresti dire perché ???

posto il codice

PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"  method="post" enctype="multipart/form-data"> 
  <input type="hidden" value="800000" name="MAX_FILE_SIZE" />
   
 
 <input type="file" name="file_inviato"> 
 <input type="image" src="immagini/salva.gif"  value='salva'>
</form>


<?php 

require ('db_connect.php');

if(isset($_POST['user_uid']));
//I dettagli della categoria sono stati aggiornati
$user_uid = $_POST['user_uid'];
	$nome_file_vero = $_FILES['file_inviato']['name'];
	$tipo_file = $_FILES['file_inviato']['type'];
	$dati_file = file_get_contents($nome_file_temporaneo);
	$dati_file = addslashes($dati_file);
	$nome_file_temporaneo = $_FILES['file_inviato']['tmp_name'];

$sql = "UPDATE users SET nome_file_vero='$nome_file_vero', tipo_file='$tipo_file', dati_file='$dati_file' WHERE uid='$uid' ";
if(@mysql_query($sql)) {
	
	echo '<p>category details updated.</p>';
	
}else{
	echo '<p>Error Updating category details: ' . mysql_error() . '</p>';
}

?>

Premetto che la tabella users il campo id è uid, il campo SESSION start è ad inzio pagina ..... :(
 
ciao
cosa vuoi dire con tabella attiva? se il record non esiste devi usare l'insert, se il record già esiste e vuoi modificarlo devi usare l'update (es aggiungere la foto se prima non c'era)
poi, sarò orbo, ma non vedo da dove salta fuori $_POST['user_uid'], e che cosa centra col submit
per caso non intendevi
<input type="image" src="immagini/salva.gif" value='salva'>
mettere il pulsante di submit
<button type="submit" src="immagini/salva.gif" nane="invia" value='salva'>
anche perchè se non ti piace il classico pulsante prova a guardare quest'articolo
http://blog.mrwebmaster.it/2010/03/26/abbelliamo-orrendo-pulsante-submit-reset.html
(e correlati)

in tal caso l'i(isset diventa

PHP:
if(isset($_POST['invia']){
//....
}

p.s.
session_start();
non è un campo, ma un'istruzione php
 
Si scusa hai ragione.

Ho risolto proprio adesso così, ti posto il codice così se serve a qualcuno sa come fare.

PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"  method="post" enctype="multipart/form-data"> 
  <input type="hidden" value="800000" name="MAX_FILE_SIZE" />
   
 
 <input type="file" name="file_inviato"> 

 <input  type="submit" name="update"  value="Update">
</form>


<?php echo $_SESSION['user_uid'];

require ('db_connect.php');

if(isset($_POST['update']));
//I dettagli della categoria sono stati aggiornati
$user_uid = $_POST['uid'];
$nome_file_temporaneo = $_FILES['file_inviato']['tmp_name'];
	$nome_file_vero = $_FILES['file_inviato']['name'];
	$tipo_file = $_FILES['file_inviato']['type'];
	$dati_file = file_get_contents($nome_file_temporaneo);
	$dati_file = addslashes($dati_file);
	

$sql = "UPDATE users SET nome_file_vero='$nome_file_vero', tipo_file='$tipo_file', dati_file='$dati_file' WHERE uid=".$_SESSION['user_uid']." ";
if(@mysql_query($sql)) {
	
	echo '<p>category details updated.</p>';
	
}else{
	echo '<p>Error Updating category details: ' . mysql_error() . '</p>';
}

?>

Ho dovuto aggiungere questo nel WHERE per farlo funzionare WHERE uid=".$_SESSION['user_uid']."
 

Discussioni simili