• Home
  • Forum
  • Fare Web
  • PHP

Upload immagini

  • Creatore Discussione Creatore Discussione maxxjo
  • Data di inizio Data di inizio 7 Mag 2013
M

maxxjo

Utente Attivo
27 Apr 2013
56
0
0
  • 7 Mag 2013
  • #1
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: 7 Mag 2013

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 7 Mag 2013
  • #2
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
 
M

maxxjo

Utente Attivo
27 Apr 2013
56
0
0
  • 7 Mag 2013
  • #3
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.044
150
63
PR
www.borgo-italia.it
  • 7 Mag 2013
  • #4
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
}
//....
?>
 
M

maxxjo

Utente Attivo
27 Apr 2013
56
0
0
  • 8 Mag 2013
  • #5
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: 8 Mag 2013

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 8 Mag 2013
  • #6
ciao
Errore nella query DELETE FROM tabella_files WHERE visibile='N': Unknown column 'visibile' in 'where clause'
Clicca per allargare...
hai aggiunto il campo in tabella? e se si verifica che il nome corrisponda (comprese maiuscole/minuscole)
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

P
Script upload immagini
  • pippuccio76
  • 9 Feb 2021
  • jQuery
Risposte
0
Visite
3K
jQuery 9 Feb 2021
pippuccio76
P
[PHP] Uploadify: upload immagini
  • felino
  • 24 Lug 2018
  • PHP
Risposte
0
Visite
1K
PHP 24 Lug 2018
felino
N
[PHP] Problema upload immagini wordpress
  • nicola93.rinaldi
  • 23 Giu 2017
  • PHP
Risposte
2
Visite
2K
PHP 25 Giu 2017
nicola93.rinaldi
N
[PHP] Upload e successiva visualizzazione immagini in DB
  • MarcoGrazia
  • 28 Nov 2016
  • PHP
Risposte
3
Visite
2K
PHP 28 Nov 2016
MarcoGrazia
S
PHP: Aiuto con upload immagini che si auto tuotano
  • sebastianoweb
  • 21 Lug 2016
  • PHP
  • 2
Risposte
24
Visite
7K
PHP 28 Lug 2016
sebastianoweb
S
A
Upload multiplo di immagini in PHP
  • alemian95
  • 29 Mar 2016
  • PHP
Risposte
3
Visite
2K
PHP 30 Mar 2016
criric
C
Upload immagini con classe non funzionante
  • controsenso
  • 21 Gen 2016
  • PHP
Risposte
1
Visite
1K
PHP 29 Gen 2016
davide.arduini
Problema upload immagini
  • Rikk73
  • 7 Apr 2015
  • PHP
Risposte
4
Visite
2K
PHP 8 Apr 2015
Rikk73
P
Upload immagini
  • pippuccio76
  • 31 Mar 2015
  • Javascript
Risposte
0
Visite
1K
Javascript 31 Mar 2015
pippuccio76
P
F
Problema con upload di immagini che superano 2MB
  • Fabio Grasso
  • 23 Nov 2014
  • PHP
Risposte
14
Visite
3K
PHP 2 Dic 2014
Fabio Grasso
F
A
Problema con Upload immagini
  • aledero75
  • 3 Ott 2014
  • PHP
Risposte
9
Visite
2K
PHP 13 Nov 2014
aledero75
A
P
upload immagini tramite ajax
  • processore
  • 2 Ott 2014
  • Ajax
Risposte
7
Visite
3K
Ajax 22 Ott 2014
filomeni
P
upload immagini con antepria
  • processore
  • 3 Giu 2014
  • jQuery
Risposte
1
Visite
1K
jQuery 3 Giu 2014
criric
H
Estrarre il nome delle immagini dall'upload
  • Hackx
  • 27 Mar 2014
  • PHP
Risposte
10
Visite
3K
PHP 28 Mar 2014
Hackx
H
R
upload immagini multiplo e ridimensionamento
  • rober23
  • 14 Gen 2014
  • PHP
Risposte
0
Visite
1K
PHP 14 Gen 2014
rober23
R
S
[RISOLTO] Fatal error in Upload Multiplo di immagini
  • Simone Torre
  • 28 Dic 2013
  • PHP
Risposte
2
Visite
2K
PHP 28 Dic 2013
Simone Torre
S
R
upload e ridimensionamento immagini in php
  • rober23
  • 23 Ott 2013
  • PHP
Risposte
0
Visite
1K
PHP 23 Ott 2013
rober23
R
R
upload e ridimensionamento immagini in php
  • rober23
  • 23 Ott 2013
  • PHP
Risposte
1
Visite
1K
PHP 23 Ott 2013
borgo italia
F
[Risolto] upload immagini con la classe di Baol74 con size immagine
  • fabiusRiders
  • 8 Ott 2013
  • Classic ASP
Risposte
15
Visite
4K
Classic ASP 20 Ott 2013
fabiusRiders
F
L
[PHP] Upload immagini e ridimensionamento automatico
  • _LAIL_
  • 2 Ott 2013
  • PHP
Risposte
9
Visite
9K
PHP 23 Lug 2016
borgo italia
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?