Upload immagini

maxxjo

Utente Attivo
27 Apr 2013
56
0
0
Ciao!
ho un form php per fare l'upload immagini e quello che vorrei fare e che ogni volta che carico una foto sul database mysql, l'inserimento della foto parta dal ID 1 e non da l'ultimo id inserito, questo perché ho creato una pagina php dove posso cancellare le foto che voglio dal database, ma così facendo mi ritrovo ad avere dei buchi tra l'id esempio: ID 1,2,3,4 se cancello la foro con id 2 mi ritrovo così; 1,3,4.
Invece io vorrei ovviare a questo problema con un nuovo upload di immagini che vada in automatico ad inserire la foto li dove manca , ecco perché partire da Id 1 e non dall'ultimo id inserito.

Pagina Upload php
PHP:
<?php 
// se è stato inviato il file...
if(isset($_POST['invia']))
{
	// se ci sono stati problemi nell'upload del file
	if(!isset($_FILES['file_inviato']) OR $_FILES['file_inviato']['error'] != UPLOAD_ERR_OK)
	mostra_form("errore nell'invio del file. Riprova");

	// connessione e selezione del database
	mysql_connect('localhost', 'root', 'root')
	or die('Connessione non riuscita: ' . mysql_error());

	if(!mysql_select_db('gallery'))
	die('Selezione database fallita!');

	// recupero alcune informazioni sul file inviato
	$nome_file_temporaneo = $_FILES['file_inviato']['tmp_name'];
	$nome_file_vero = $_FILES['file_inviato']['name'];
	$tipo_file = $_FILES['file_inviato']['type'];

	// leggo il contenuto del file
	$dati_file = file_get_contents($nome_file_temporaneo);

	// preparo il contenuto del file per la query
	$dati_file = addslashes($dati_file);

	// query per inserire il file nel DB
	$query = "INSERT INTO tabella_files SET
				nome_file = '$nome_file_vero', 
				tipo_file = '$tipo_file', 
				dati_file = '$dati_file'"; 

	mysql_query($query)
	OR die('Query non valida: ' . mysql_error());

	// mostro nuovamente il form ed un messaggio di successo
	mostra_form("Memorizzazione del file <b>$nome_file_vero</b> nel database eseguita correttamente.");
}
else
{
	mostra_form();
}

/**
* Mostra il form per l'upload del file 
* 
*/ 
function mostra_form($messaggio = '')
{
	?><head> 
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
	<title>Carica file nel database</title> 
	</head> 
	 
	 
	 
	<p><?php echo $messaggio?> <br /> Seleziona un file da memorizzare nel database: <p></p> 
	<form name="form1" enctype="multipart/form-data" method="post" action=""> 
	<p> 
	<input type="file" name="file_inviato"> 
	<p></p> 
	<p> 
	<input type="submit" name="invia" value="Invia file"> 
	<p></p> 
	</form> 
	 <input type="hidden" name="MAX_FILE_SIZE" value="30000">

	 
	<?php 
	exit();
}
?>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
andare a modificare una chiave primaria autoincrement è un casino. è meglio non farlo.
se non vede l'ultima l'ultima immagine che hai inserito devi modificare il metodo di visualizzazione.

p.s.
racchiudi sempre il codice tra gli appositi tag (seconda riga formattazione post, ultime tre iconcine nell'ordine CODE, HTML, PHP)

p.s. al p.s.
le immagini le carichi solo tu o le possono caricare anche altri?
perchè se le possono caricare anche altri stai correndo dei grossi rischi, qualche maleintenzionato potrebbe caricarti un file .exe, quindi devi verificare il tipo di file caricato prima di caricarlo e se non è un'immagine impedire il caricamento
 

maxxjo

Utente Attivo
27 Apr 2013
56
0
0
imamgine

grazie per l'immediata risposta..
L'ultima immagine che carico la vedo, il mio problema è che se cancello un qualsiasi id all'interno del database poi non posso più vedere quella foto, ecco perché mi sarebbe piaciuto poter inserire la foto partendo sempre da id1 e non dall'ultimo id inserito che chiaramente fà auto_increment, così che si possa inserire l'immagine nel id mancante e non lasciare buchi come: ID 1,2,4,7 ecc.. io vorrei invece che fosse crescente 1,2,3,4,5,6,7
Le foto le caricano più persone..
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
....se cancello un qualsiasi id all'interno del database poi non posso più vedere quella foto...
è logico se la cacelli non la puoi più vedere.
se vuoi continuarre a vederla potresti aggingere un campo alla tabella (es)
Codice:
id
nome_file 
tipo_file 
dati_file
visibile tipo set('S','N') default 'S'
quando le fai vedere nella query metti nel WHERE
....AND visibile='S'...
per eliminarla non fai il delete ma l'UPDATE mettendo il campo visibile al valore 'N'
se poi vuoi eliminarle fisicamente in seguito fai il delete WHERE visibile='N' (e/o altre condizioni)
poi per verificare che il file sia ammesso potresti fare (io faccio così)
PHP:
<?php
//.......
$ammessi=array('jpg','png','gif');//o altre estenzioni che ti interessano
$estensione=pathinfo($_FILES['file_inviato']['name'], PATHINFO_EXTENSION); ;
if(!in_array($estensione,$ammessi)){
	echo "file non ammesso";
	//e rimandi al form
}
//....
?>
 

maxxjo

Utente Attivo
27 Apr 2013
56
0
0
delete foto

quando facci il delete della foto mi compare questo se inserisco il codice che mi hai dato..
Errore nella query DELETE FROM tabella_files WHERE visibile='N': Unknown column 'visibile' in 'where clause'


ecco la pagina php per il delete foto dal database.
PHP:
<?php
//input data
$mysql_host='localhost';
$mysql_user='root';
$mysql_password='root';
$my_database='gallery';

//connecting,selecting database
$link=mysql_connect ($mysql_host, $mysql_user, $mysql_password)
or die ('Could not connect: ' . mysql_error());
mysql_select_db($my_database) or die('Could not select database');

if($_POST)
{
	$ids = isset($_POST['id']) ? $_POST['id'] : array();
	elimina_record($ids);
}
elseif(isset($_GET['id']))
{
	elimina_record(array($_GET['id']));
}
else
	mostra_lista();

function mostra_lista()
{
	// mostro un eventuale messaggio
	if(isset($_GET['msg']))
		echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

	// preparo la query
	$query = "SELECT * FROM tabella_files";

	// invio la query
	$result = mysql_query($query);

	// controllo l'esito
	if (!$result) {
		die("Errore nella query $query: " . mysql_error());
	}

	echo '
	<form name="form1" method="post" action="">
	<table border="1">
		<tr>
			<th>&nbsp;</th>
			<th>Nome</th>
			<th>&nbsp;</th>
		</tr>';

	while ($row = mysql_fetch_assoc($result))
	{
	
// in questa stringa devi inserire il titolo per visualizzare il nome da cancellare
$nome = htmlentities($row['nome_file']);

		// preparo il link per la modifica dei dati del record
		$link = $_SERVER['PHP_SELF'].'?id=' . $row['id'];

		echo "<tr>
				<td><input name=\"id[]\" type=\"checkbox\" value=\"$row[id]\" /></td>
				<td>$nome</td>
				<td><a href=\"$link\">elimina</a></td>
			</tr>";
	}

	echo '</table>
		<br />
		<input type="submit" name="Submit" value="Elimina record selezionati" />
		</form>';

	// libero la memoria di PHP occupata dai record estratti con la SELECT
	mysql_free_result($result);

	// chiudo la connessione a MySQL
	mysql_close();
}

function elimina_record($ids)
{
	// verifico che almeno un id sia stato selezionato
	if(count($ids) < 1)
	{
		$messaggio = urlencode("Nessun record selezionato!");
		header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
		exit;
	}

	// per precauzione converto gli ID in interi
	$ids = array_map('intval',$ids);

	// creo una lista di ID per la query
	$ids = implode(',',$ids);

	// preparo la query
	$query = "DELETE FROM tabella_files WHERE visibile='N'";

	// invio la query
	$result = mysql_query($query);

	// controllo l'esito
	if (!$result) {
		die("Errore nella query $query: " . mysql_error());
	}

	// conto il numero di record cancellati
	$num_record = mysql_affected_rows();

	// chiudo la connessione a MySQL
	mysql_close();

	$messaggio = urlencode("Numero record cancellati: $num_record");
	header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
}

//closing connection
mysql_close($link);

?>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Errore nella query DELETE FROM tabella_files WHERE visibile='N': Unknown column 'visibile' in 'where clause'
hai aggiunto il campo in tabella? e se si verifica che il nome corrisponda (comprese maiuscole/minuscole)
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Script upload immagini jQuery 0
felino [PHP] Uploadify: upload immagini PHP 0
N [PHP] Problema upload immagini wordpress PHP 2
MarcoGrazia [PHP] Upload e successiva visualizzazione immagini in DB PHP 3
S PHP: Aiuto con upload immagini che si auto tuotano PHP 24
A Upload multiplo di immagini in PHP PHP 3
C Upload immagini con classe non funzionante PHP 1
Rikk73 Problema upload immagini PHP 4
P Upload immagini Javascript 0
F Problema con upload di immagini che superano 2MB PHP 14
A Problema con Upload immagini PHP 9
P upload immagini tramite ajax Ajax 7
P upload immagini con antepria jQuery 1
H Estrarre il nome delle immagini dall'upload PHP 10
R upload immagini multiplo e ridimensionamento PHP 0
S [RISOLTO] Fatal error in Upload Multiplo di immagini PHP 2
R upload e ridimensionamento immagini in php PHP 0
R upload e ridimensionamento immagini in php PHP 1
F [Risolto] upload immagini con la classe di Baol74 con size immagine Classic ASP 15
L [PHP] Upload immagini e ridimensionamento automatico PHP 9
M upload multiplo di 2 immagini su database mysql PHP 23
A problema con upload immagini multiple PHP 0
F Upload immagini PHP 3
P Modifica totale dello script upload immagini PHP 1
N problema script php mysql multi upload immagini PHP 31
G Upload immagini di un utente Classic ASP 7
M Upload immagini (era: una domanda per gli esperi) PHP 2
A upload immagini problema PHP 3
M [ajax] Upload immagini in un form multistep Ajax 0
D upload immagini con blob PHP 1
G gestire upload di immagini e files, mi serve un consiglio PHP 3
N Upload Immagini Sito Personalizzazione Gadget PHP 11
O PHP ecommerce > da un sito funzionante > duplicazione riuscita ma non upload immagini PHP 19
I Upload di più immagini PHP 1
I Upload immagini senza form PHP 12
G Problema con upload immagini e IE7 PHP 6
LaKanka Upload immagini da server senza ftp PHP 9
A Upload immagini su server (in locale e in remoto) Classic ASP 2
M EDITOR DI TESTO: tinyMCE e Ajax per l'upload di immagini da pc Ajax 12
LaKanka Fatal error upload immagini PHP 19
minatore upload immagini PHP 3
F galleria immagini upload e resize... PHP 4
N Problema upload immagini! HELP! PHP 0
SolidSnake4 miglior script per l'upload di immagini con php su DB PHP 5
A Form upload immagini PHP 15
C upload baol e sostituzione immagini in db access Classic ASP 1
C aggiornare immagini con upload baol74 Classic ASP 3
C upload di baol e percorso immagini su db access Classic ASP 3
C problema upload immagini grandi con 4images Programmazione 0
U upload delle immagini con ASP Classic ASP 5

Discussioni simili