Inserire un'immagine avatar nel profilo per avere ogni utente la sua pagina

paperinik4

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


Vorrei una mano. Mi sono impantanato come al solitoe non riesco ad andare avanti. Il problema è questo. Ho creato una tabella chiamata infoutenti, dove all'interno di essa, ho messo i seguenti dati:

Nome Tabella: infoutenti

PHP:
CREATE TABLE `infoutenti` (
   `id`                INT(11) NOT NULL AUTO_INCREMENT,
   `avatar`          VARCHAR(255) NOT NULL,
    PRIMARY KEY  (`id`)
);

Questa è la tabella, poi c'è la parte riguardante l'upload dell'immagine è un semplice form in formato html & php chiamato:

uploadavatar.php

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

?>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="miofile">   //Secondo voi a posto del "miofile" cosa ci dovrei mettere ????
    <input type="submit" value="Upload">
</form>

</body>
</html>

Dopodichè c'è upload.php

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


// RECUPERO I PARAMETRI DA PASSARE ALLA FUNZIONE PREDEFINITA PER L'UPLOAD
    $cartella = 'immagini';
    $percorso = $_FILES['miofile']['tmp_name'];
    $nome = $_FILES['miofile']['name'];
    // ESEGUO L'UPLOAD CONTROLLANDO L'ESITO
    if (move_uploaded_file($percorso, $cartella . $nome))
    {
        $query="INSERT INTO infoutenti(avatar)  VALUES('$avatar')";   //Qua dovrebbe eseguire la memorizzazione del link dell'immagine

$query=mysql_query($query);
        print "Upload eseguito con successo"; 
    }
    else
    {
        print "Si sono verificati dei problemi durante l'Upload"; 
    }
?>

Il fatto è che la memorizzazione avviene, ma ho nel db tutto vuoto vi posto anche un'immagine del db così vi rendete conto di cosa intendo dire. Mi sapreste dire dove sbaglio ???? O se c'è un metodo più diretto per caricare una semplice immagine nel proprio avatar ???

Ecco l'immagine del db. Ino9ltre io vorrei che quando utente si logga compaia nella sua pagina personale il suo profilo con la sua immagine, e quando utente2 si logga compaia nella sua pagina personale il suo profilo con la sua relativa immagine. Insomma utente non può vedere il profilo di utente2 e utente 2 non può vedere il profilo utente. So che ho già chiesto aiuto, ma proprio non riesco ad andare avanti, purtroppo mi sono impantanato. Spero che qualche buon anima pia mi dia una mano. Non è una richiesta di farmi uno scrip, è solo che devo capire come andare avanti e se la strada che ho imboccato è giusta o sbagliata. Grazie a tutti.
 
Be' ovvio..da quel che posso vedere la variabile $avatar non contiene mai nulla perché non la inizializzi; nel db dovrebbe andare l'indirizzo dove è situata la foto.
 
Mettendo l'indirizzo dell'immagine e logicamente va inizializzata prima del suo utilizzo.
 
Questo:
PHP:
$avatar=$cartella.$nome;
Sempre se sei sicuro che voglia chiamare così la cartella.
 
Ciao

Ora ho capito,

comunque la cartella si chiama immagini. Quindi dovrei fare in questa maniera:

PHP:
 $avatar=$immagini.$nome;

Qualcoisa di sbagliato ???? (Quasi sicuramente....) Sarebbe un caso che ci azzeccassi al primo colpo ehehehehe
 
Si se la cartella di chiama immagini dovresti fare in questo modo:
PHP:
 $avatar=$immagini."/".$nome;
E dovresti cambiare anche nella if nello stesso modo. Però controlla dove viene salvata l'immagine.
Hai detto che il caricamento funzionava bene, ne sei sicuro?
 
Ciao

Lo spero,

Le immagini al momento si vedono, però quando chiudi il broweser e rilanci il login, non viene visualizzata, manca la query di richiamo per visualizzarla (quasi sicuramente). A dire il vero dei tre file volevo unirlo in un unico file. Solo che al momento che vado a premere il tasto "carica", non mi fa un tubo. Se separo i tre file funziona egreciamente , ma appena clicco su "carica", mi da il seguente errore:

"Warning: strtoupper() expects parameter 1 to be string, array given in /volume1/web/utenti/provalogin/paginaris.php on line 30 "

Su tutti i file ho messo la seguente cosa. Anche nel file che avevo provato ad unire.

PHP:
require_once("connetti.php");
require_once("paginaris.php");
session_start('nome');

Poi vado su carica e mi da l'errore che ti hos egnalato prima. Dove sbaglio ?????
 
Ciao

Ciao Longo,

Hoquesta funzione in un unico form. Non riesco ad aggiustarla per far richiamare il file inser_immages.php, in quanto sta unito al file chiamato uploaderavatr.php Come la posso sistemare ???' Mi puoi dare una mano per favore ???

script:

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

Ti posto anche uploaderavatar.php:

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");
require_once("paginaris.php");


#se non esistono delle cartelle le creo
if(!file_exists('img_temp'))
{
	mkdir('img_temp/',0777);
}
if(!file_exists('immages'))
{
	mkdir('immages/',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>
  <!---Inizia insert_immages---->
          
<?php
require_once("connetti.php");
require_once("paginaris.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);
				}
			}
			$handle = 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();

?>

Spero che mi auterai. grazie.
 
Analizzando il tuo penultimo messaggio:
Utilizzi la funzione strtoupper() che converte la stringa in maiuscolo. Quindi si aspetta almeno una lettera, se l'immagine si chiama: "1.jpg" allora la funzione ti restituisce quell'errore.
 
Ciao

Ciao Longo,

Scusami se ti contraddisco. Analizzando bene il problema, quella trasformazione da minuscolo a maiuscolo, non è rifrita al nome dell'immagine, ma bensì alla sessione. Se non erro. Hai visto anche l'ultimo messaggio con i due file uniti e il problema della funzione per caso ???????
 
Non si tratta di contraddirmi o meno. L'errore che hai postato è su quella funzione e non so dove l'hai utilizzata. Siccome parliamo di immagini credevo l'avessi utilizzato li.
Indipendentemente da dove è utilizzata è l'errore in quel caso.
 
Ciao

Ok, chieo scusa. Allora ti posto il form dove l'ho utilizzata:

paginaris.php

PHP:
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">
 
    <?php

    require_once("connetti.php");
    session_start();
if(isset($_COOKIE["ultimoaccesso"])) {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $ultimo_cookie = $_COOKIE["ultimoaccesso"];
    $me= "Il tuo ultimo accesso è stato il:  $ultimo_cookie";
} else {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $me= "Non ti sei mai collegato a questa pagina";
}


if(isset($_SESSION['nome'])) {

$array = mysql_query("SELECT * FROM utenti WHERE id=" . $_SESSION['id']);  

$array=mysql_fetch_array($array);  
    
$array =  strtoupper($_SESSION['nome'] );     // Eccola è questa, credo che si riferisca a questa l'errore che mi da.
// if(isset($_SESSION['nome']))  {   

    echo "<div class=\"messaggio\"><h1>";

    
echo "BENVENUTO ".$array."<br />";
    
    echo $me;

      echo "</div> </h1>";

}else{
    header("Location:failed.php");      
    exit();   
 
//}

}
 ?> 
 
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>benvenuto</title>

<body>
 
    
<center> <br> <br> <br>

 
 <input type="button" onClick="location.href='uploadavatar.php';" style='padding:5px' value="Modifica" />
 <input type="button" onClick="location.href='logout.php';" style='padding:5px' value="Cancella" />
 <input type="button" onClick="location.href='logout.php';" style='padding:5px' value="Salva" />
 <input type="button" onClick="location.href='logout.php';" style='padding:5px' value="Logout" /> 
 
   
</center>
 </body>
</html>
 
Ciao

Come posso sistemare questa funzione:

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

Dovrei eliminare il richiamo, ossia questo:

PHP:
$.post('insert_immages.php',{fine:'yes'}

In quanto il file che mi richiamaa, l'ho unito e quindi la funzione in quel caso si dovrebbe modificare, ma non ho idea di come. In pratica, quella funzioncina carica l'immagine e la fa vedere. Io dovrei riuscire ad ottenere lo stesso risultato in un unico file chiamato uploadavatar.php Appunto la devo modificare.
 
Una cosa per volta e in teoria un post-> un problema.
Il problema di prima è stato risolto?
 
Ciao

Non credo,

perchè sto cercando di unire i tre file e in pratica il prblema è concatenato con quello di prima. Posso dire con certezza che il problema di prima non è stato risolto. E non riesco ad unire in un unico file. Comunque cerchiamo di risolvere il problema dell'errore e poi pensiamo con un altro post semmai a quello dell'unione.
 
Ultima modifica:
Intendo: il caricamento dell'immagine funziona? La carica nella cartella giusta? Viene messo il link nel db?
 

Discussioni simili