[PHP] Modifica dell'immagine avatar

Stato
Chiusa ad ulteriori risposte.

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

In un post precedente ho parlato delle immagini, ho postato anche i codici che avevo. Ora, volevo capire come potevo modificare l'immagine se l'utente volesse farlo. Ho fatto dei tentativi, ma con risultati pessimi. Mi irivoglo sopratutto alle persone che fino ad ora mi hanno aiutatoo con grande successo positivo. Speravo che bastasse mettere una pagina tipo questa:

salva.php

PHP:
<?php

require_once("connetti.php");

//$email = $email;

$immagine = $_GET['immagine'];
echo "<h1> Immagine in corso di modifica. Attendere prego ... </h1>";

//$qry="UPDATE utenti  SET attivo='1' WHERE email='"$email'"';

$qry="UPDATE immagine  SET id='id' WHERE immagine='".$immagine."';";


if (mysql_query($qry)) {
    echo "... Immagine cambiata correttamente...";
    header("Refresh: 3;URL=paginaris.php"); 
    
   // header("Refresh: 3;URL=login.php"); 
    header("Refresh: 3;URL=login.php"); 
} else {
    echo "Errore: cambio immagine non avvenuto";
}

?>

E mik domandavo, la query è giusta ??? La seguente query che posto in separata sede:

PHP:
$qry="UPDATE immagine  SET id='id' WHERE immagine='".$immagine."';";
 
Vuoi dare l'opportunità di cambiarla soltanto? Oppure di caricare altre e poi l'utente, tra quelle che ha caricato, sceglie l'avatar?
 
Ciao

Uhmmm non saprei,

Forse la seconda che hai detto.... Perchè le foto sono situate in una cartella chiamata immagini, quindi la dovrebbero selezionare da quella cartella penso. Tu cosa mi consigli ????
 
Dipende di cosa si tratta.. Se è un forum come questo allora ne basta una e quando l'utente vuole cambiare avatar ne carica un'altra. Giusto per fare un esempio
 
Ciao

L'idea mia è abbastanza confusionaria ancora. Nel senso che, se l'utente vuole cambiare l'avatar, deve avere a mio avviso, la possibilità di selezionare le immagini in una qualsiasi cartella del sul pc. Però bisogna dargli anche la possibilità. Inoltre potrebbe andar bene anche di far visualizzare le foto tutte quelle che ha. Entrambe le soluzioni andrebbero bene, ma volevo capire se l'update funziona anche per le immagini in quella maniera e quello che avevo postato era corretto o meno. Nell'incertezza te lo riposto:

o così:

PHP:
$qry="UPDATE immagine  SET immagine='immagine' WHERE id='".$id."';";

O pomì (a parte la battutina):

PHP:
$qry="UPDATE immagine  SET id='id' WHERE immagine='".$immagine."';";

Grazie.
 
Secondo me dovresti prima decidere cosa vuoi e poi successivamente metterei a programmarlo.
La query ha senso (se così si può dire) se l'utente può caricare un'immagine che andrà direttamente come avatar. Se non c'è l'effettovo bisogno di avere più immagini caricate online (di solito c'è il bisogno quando un altro utente per conoscerti ha l'accesso alle tue foto o altro). Se deve essere solo un 'avatar' allora ne basta una e basterebbe sovrascrivere l'altra senza cambiare nulla al db.
 
Ciao

Ciao,

E' solo un update dell'immagine quello che per ora voglio fare. Poi ci sarà anche la questione di più foto riunite in più album. Ma per adesso è solo aggiornare l'avatar nel caso in cui l'utente si stufi diell'immagine.
 
Ok allora basta salvare l'immagine caricata sempre con lo stesso nome, magari con l'id dell'utente in modo che nella cartella immagini/id_1.jpg ci sia l'avatar dell'utente con id 1.
 
Ciao

Ciao Buongiorno,

E come faccio a pescare l'id dell'utente che si trova nella tabella utenti e l'immagine si trova invece nella tabella immagine ????? Ho separato le informaazioni. C'è il modo di relazionarli fra loro ????? Se si come ???? Grazie.
 
Iniziamo col dire capisco che si tratta di una domanda anche se c'è un solo punto interrogativo :) detto questo l'id dell'utente lo puoi prendere dalla tabella utenti (suppongo) con una query su quella tabella.
Ricordo che tu metti in sessione il nome, è univoco il nome degli utenti? Cioè ci sei tu ("Fabio"), se si iscrive un altro Fabio può inserire il suo nome oppure è un username univoco? Se è univoco la foto la puoi chiamare col nome dell'utente
 
Ciao Longo,

Allora, il nome non è univoco, visto che al mondo non esiste un solo "fabio" ma ne esistono a milioni, invece per quanto riguarda lo username e di conseguenza l'email sono univoci. infatti, se tu ti registri, con un'email e con un usernamen nel mio caso: [email protected] paperinik4 (username), c'è un controllo su entrambi i campi. Se esiste nel db te lo segnala, attenzione l'email è già esistente e stesso vale per lo username. Attenzione lo username esiste nell'archivio. Inoltre ci sono anche i controlli dei caratteri sull'eìmail, ma quello è n'altra cosa. Quindi da come hai detto tu la foto non la posso chiamare con il njome dell'utente. ma tanto za questo punto se c'è l'ha memorizzata sul pc è l'utente che decide di come chiamare la foto. Nel mio caso ho messo una foto di paperinik presa da google immagini.
 
Allora chiama l'immagine con l'id dell'utente preso ovviamente dalla tabella utenti.
 
Ultima modifica:
Se utilizzi l'id dell'utente puoi anche non salvare niente nella tabella immagini e non ne avrai bisogno perché sai che nella cartella immagini/{id_utente}.jpg hai il suo avatar.
 
Basta che carica l'immagine nella cartella immagini e che da come nome all'immagine l'id dell'utente. Me lo devi dire tu se va bene.
 
Ciao

C'ho pensato parecchio e scusamis e ti rispondo in ritardo;

Ma a qwuesto punto non so. Sono molto indeciso. Ti rimando lo script per intero. Vedi se secondo te si può fare qualche modifica oppure va bene così. l'importante è che ci sia la selezione multipla ossita ctrl+tasto dx mouse.

index.php (originale)

PHP:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.js" type="text/javascript"></script>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js'></script>
<script src='http://memai.altervista.org/js/jquerymin.js'></script><script 
<script>
function togli(x)
{
	$('#'+x).toggle();
	var immagine = document.getElementById('hidden'+x).value;
	$.get('togli.php',{img:immagine},function(done){$('#cancella_img').html(done)});
}


function carica()
{
	$.post('insert_immages.php',{fine:'yes'},function(done){$('body').html(done)});
}

</script>
<?php

require_once("connetti.php");


#se non esistono delle cartelle le creo
if(!file_exists('img_temp'))
{
	mkdir('img_temp/',0777);
}
if(!file_exists('immagini'))
{
	mkdir('immagini/',0777);
}
if($_POST['sub'])
{
	#Inizializzo la cartella dove andranno a finire le imamgini
	$dir = 'img_temp/';
	#ricevo i dati delle immagini
	#$nome per il nome del file, es: pippo.jpeg
	$nome = $_FILES['file']['name'];
	#$nome_temporaneo invece per il nome temporaneo che
	#il server crea per l'immagine pippo.jpeg
	$nome_temporaneo = $_FILES['file']['tmp_name'];
	
	#Inizializzo una variabile a cui dò un valore intero pari a 0
	#semplicemente per far girare il codice while e leggere l'array
	$n=0;
	#finche n sarà minore delle immagini caricate, il ciclo continuer�
	while($n<count($nome))
	{
		#trovo le informazioni , come: l'altezza, la larghezza e il sorgente delle immagini
		#creando una lista e usando poi getimagesize() per prelevare le informazioni
		list($larghezza,$altezza,$sorgente,$attributo) = getimagesize($nome_temporaneo[$n]);
		#creo uno switch in base al sorgente e per ogni caso  effettuer� un preciso evento
		switch($sorgente)
		{
			case IMAGETYPE_GIF:
			#creo le immagini
			$immagine = imagecreatefromgif($nome_temporaneo[$n]);
			imagegif($immagine, $dir.$nome[$n]);
			break;
			
			case IMAGETYPE_JPEG:
			$immagine = imagecreatefromjpeg($nome_temporaneo[$n]);
			imagejpeg($immagine, $dir.$nome[$n]);
			break;
			
			case IMAGETYPE_PNG:
			$immagine = imagecreatefrompng($nome_temporaneo[$n]);
			imagepng($immagine, $dir.$nome[$n]);
			break;
			
			case IMAGETYPE_BMP:
			$immagine = imagecreatefrombmp($nome_temporaneo[$n]);
			imagebmp($immagine, $dir.$nome[$n]);
			break;
		}
		
		#Creo il div dove gli assegno l'id per identificare  con JQuery le imamgini appena caricate
		?>	<div id='<?php echo $n?>'>
				<img src='<?php echo $dir.$nome[$n]?>' style='width:100px; height:100px'>
				<input  id='hidden<?php echo $n ?>' type='hidden' value='<?php echo $dir.$nome[$n] ?>'/>
				<div onclick='togli("<?php echo $n ?>")'>Togli</div>
			</div>
			<div id='rimetti<?php echo $n ?>'  onclick='rimetti("<?php echo $n ?>")' style='display:none'>Rimetti</div>
		<?php
		$n++; #aumento la variabile inizializzata per il funzionamento dello while
	}
	?>
		<div id='cancella_img'></div>
		<input type='submit' value='carica' onclick='carica();void 0'/>
	<?php
	exit;
}
?>
<form action='' method='POST' enctype='multipart/form-data'>
	<input type='file' name='file[]' multiple size ="60"/>
	<input type='submit'  name='sub' value='Carica'/>
</form>

insert_immages.php

PHP:
<?php
require_once("connetti.php");

if(isset($_POST['fine']))
{
	#Inserisci questa funzioncina per leggere tutti i file contenuti nella cartella immagini
	#che poi verranno inseriti nel db tramite una query grazie ad un for
	function illustrazioni($cartella){
		$foto=Array();
		if(file_exists($cartella)){
			$directory = opendir($cartella);
			while (false !== ($file = readdir($directory))) { 
				if(is_file($cartella.$file)){
					array_push($foto,$file);
				}
			}
			 closedir($directory);
		}
		sort($foto);
		return $foto;
	}
	$foto_t=array();
	$foto_t=illustrazioni("img_temp/");
	$conta = count($foto_t);
	for ($x=0; $x<$conta; $x++)
	{	
		$immagine_t = "img_temp/$foto_t[$x]";
		$immagine = "immages/$foto_t[$x]";
		echo "<img src='".$immagine_t."' width='100px' height='100px'> "; 
		#questa variabile contiene il valore dell'url  finale che si inserirà alla fine
		#Sposto i file nella cartella temporanea in quella fissa
		copy($immagine_t,'immages/'.$foto_t[$x]) or die('non si sposta la foto');
		##infine elimino il file nella directory temporanea
		unlink($immagine_t);
               
		$insert_query = "INSERT INTO immagine(immagine) VALUES('".$immagine."')";
		mysql_query($insert_query);
               
	}
	echo "Le immagini sono state inserite nel database con successo!";
}
mysql_close();

?>

togli.php (può esssere facoltativo se esserci onon esserci):

PHP:
<?php

require_once("connetti.php");

echo $_GET['img']." eliminata con successo!</div>";
#elimino il file con la funzione unlink()
unlink($_GET['img']);
?>

Una cosa, c'è una funzione sull'index.php che è legata al richiamo del file insert_immages.php. Tale funzione, si può togliere e unire l'index all'insert_immages.php ????

Ecco la funzioncina con il suo richiamo.

PHP:
function carica()
{
	$.post('insert_immages.php',{fine:'yes'},function(done){$('body').html(done)});    //E' questa che rompe, se si potesse togliere.....
}

A dire il vero, lil nome dell'avatar lo farei decidere all'utente . Ossia come sta nella sua cartella originale. Ad esempio se si chiama paperinik e lo vuole lasciare così perchè la scannarizato o preso da internet fatti suoi. D'altronde è l'utente che decide. ovviamente se modifica successivamente dalla sua cartella immagini il nopme dell'avatr è ovvio che quando si logga non vede più l'immagine sua selezionata. Perchè gli ha cambiato semplicemente eil nome o cancellata. Tu cosa ne pensi ??? Questa è l'idea che ho in mente. Che poi mi servirà per caricare molte immagini e creare un photo albumprese dallo scanner o da altra fonte. Le estensioni vanno bene le classiche. Senza limite di mb.

P.S.: Io non ci sono riuscito. ho provato ma nada.
 
Ultima modifica:
Come da titolo si parla della modifica dell'immagine avatar, unico argomento della discussione.
Apro una parentesi sulla prima parte del tuo commento. "("
Io lascerei tutto come sta!
Chiudo parentesi ")"

Per quanto riguarda le immagini dove è il problema? Le salvi col nome che aveva e metti l'indirizzo nel database. Lo avevi già fatto se non erro.
 
Io ci sono sempre, più che altro cerca di rimanere sempre attinente al titolo della discussione.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili