PHP Update immagine di un utente

  • Creatore Discussione Creatore Discussione Nickname
  • Data di inizio Data di inizio
se in $_SESSION['utente'] c'è il nome e non l'id devi cambiare la query cosi
PHP:
$query = "UPDATE utenti SET foto = '$nomefile' WHERE nome = '" . $_SESSION['idUtente'] . "'";
basta che non hai piu utenti con nome luca altrimenti cambi la foto a tutti, per questo si consiglia sempre di usare un id univoco
 
se in $_SESSION['utente'] c'è il nome e non l'id devi cambiare la query cosi
PHP:
$query = "UPDATE utenti SET foto = '$nomefile' WHERE nome = '" . $_SESSION['idUtente'] . "'";
basta che non hai piu utenti con nome luca altrimenti cambi la foto a tutti, per questo si consiglia sempre di usare un id univoco

Allora, precisamente uso l'username che è univoco quindi dovrebbe andare bene lo stesso.
Ora non dà più errori solo che, la foto nella cartella viene sempre caricata correttamente, ma nel database compare solo "1" e inoltre toglie le foto a tutti gli altri utenti .-. Anzi precisamente invece della foto mette "0".
 
prova stampare la query e vedi cosa c'è di sbagliato
PHP:
$query = "UPDATE utenti SET foto = '$nomefile' WHERE nome = '" . $_SESSION['idUtente'] . "'";  
echo $query;
 
prova stampare la query e vedi cosa c'è di sbagliato
PHP:
$query = "UPDATE utenti SET foto = '$nomefile' WHERE nome = '" . $_SESSION['idUtente'] . "'";  
echo $query;

Compare questo
UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca
 
Compare questo
UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca
Copiando hai dimenticato l'ultimo apice?
Allora, precisamente uso l'username che è univoco quindi dovrebbe andare bene lo stesso.
E l'username è contenuto nel campo nome?
Edit: ok ho visto che hai cambiato la query inserendo username al posto di nome.

Visto che hai modificato inserendo username, non è che hai toccato anche la parte finale della query dimenticandoti l'ultimo apice?
La query dovrebbe essere questa:
Codice:
$query = "UPDATE utenti SET foto = '$nomefile' WHERE username = '" . $_SESSION['idUtente'] . "'";
 
Copiando hai dimenticato l'ultimo apice?

E l'username è contenuto nel campo nome?
Edit: ok ho visto che hai cambiato la query inserendo username al posto di nome.

Visto che hai modificato inserendo username, non è che hai toccato anche la parte finale della query dimenticandoti l'ultimo apice?
La query dovrebbe essere questa:
Codice:
$query = "UPDATE utenti SET foto = '$nomefile' WHERE username = '" . $_SESSION['idUtente'] . "'";

No non mi sembra, controlla pure se vuoi ma non mi sembra
PHP:
if (isset($_FILES["foto"]["name"]) && !empty($_FILES["foto"]["name"])) {
        $nomefile = strtolower($_FILES["foto"]["name"]);
        if (is_uploaded_file($_FILES["foto"]["tmp_name"])) {
            if (move_uploaded_file($_FILES["foto"]["tmp_name"], "uploadimg/$nomefile")) {
                $connect = new mysqli("", "", "", "");
                $query = "UPDATE utenti SET foto = '$nomefile' WHERE username = '" . $_SESSION['utente'] . "'";  
echo $query; 
                if (!$connect->query($query)) {
       echo "Errore query :" . $connect->error;
}  
                $connect->close();
            }
        }
    }
 
I dati arrivano correttamente.
E la query è esatta. Quale è l'errore che ti viene fuori?
 
I dati arrivano correttamente.
E la query è esatta. Quale è l'errore che ti viene fuori?

Eh quello che ho scritto, ovvero

UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca

Che poi in realtà non è un errore, però le immagini non vengono associate all'utente nella tabella, e al posto della foto mette 1 e toglie la foto a tutti gli altri utenti mettendo 0.
 
Molto strano.
UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca
Questo non è un errore ma è il risultato del codice:
PHP:
echo $query;
Anche se in realtà dovrebbe essere:
UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca'
E' per questo che dicevo dell'apice finale che mancava.
 
Molto strano.

Questo non è un errore ma è il risultato del codice:
PHP:
echo $query;
Anche se in realtà dovrebbe essere:
UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca'
E' per questo che dicevo dell'apice finale che mancava.

Si infatti l'avevo notato anche io però come hai visto non è quello il problema.
Vi prego aiutatemi a risolvere questa cosa perché è davvero urgente
 
riposta lo script completo compreso il form e metti a iniziopagina
PHP:
var_dump($_SESSION);
e posta
 
riposta lo script completo compreso il form e metti a iniziopagina
PHP:
var_dump($_SESSION);
e posta

Grazie per la pazienza e scusatemi

Allora, questo è il form:

HTML:
<form id="formmodifica" action='update2.php' method='POST' enctype='multipart/form-data'>
<table border="0" align="center">

<tr><td width="113" align="right" id="gestione" for="foto">Foto</td> <td width="239" align="center"><input type="file" name="foto" enctype='multipart/form-data' id="foto" /></td></tr>


<tr>
<td colspan="2" align="center">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="center"><span style="color: #F00; font-weight: bold;">Conferma le tue modifiche inserendo:<br />Il username e Password</span></td>
</tr>
<tr><td colspan="2" align="center">&nbsp;</td></tr>
<tr><td align="right">Username:</td><td><input type='username' id='username2' name='username'></td></tr>
<tr><td align="right">Vecchia Password:</td><td><input type='password' id='password2' name='password'></td></tr>
</table>
<br />
<table border="0" align="center">
<tr>
<td><input type='submit' id='submitM' value='Modifica' name='submit'></td>
</tr>
</table>
</form>

E questo è lo script completo:

PHP:
<?php

	ob_start();
	include 'config.php';
	connect();
	session_start();
	
?>

<?php
var_dump($_SESSION);  

if (isset($_POST['submit'])){
	
$email = addslashes(trim($_POST['email']));
$indirizzo = addslashes(trim($_POST['indirizzo']));
$telefono = addslashes(trim($_POST['telefono']));
$cellulare = addslashes(trim($_POST['cellulare']));	
$fax = addslashes(trim($_POST['fax']));
$foto = addslashes(trim($_POST['foto']));
$foto = mysql_real_escape_string($_FILES["foto"]["name"]);

$password = addslashes(trim($_POST['password']));
$password_cript = md5($password);



if (isset($_FILES["foto"]["name"]) && !empty($_FILES["foto"]["name"])) {
        $nomefile = strtolower($_FILES["foto"]["name"]);
        if (is_uploaded_file($_FILES["foto"]["tmp_name"])) {
            if (move_uploaded_file($_FILES["foto"]["tmp_name"], "uploadimg/$nomefile")) {
                $connect = new mysqli("", "", "", "");
                $query = "UPDATE utenti SET foto = '$nomefile' WHERE username = '" . $_SESSION['utente'] . "'";  
echo $query; 
                if (!$connect->query($query)) {
       echo "Errore query :" . $connect->error;
}  
                $connect->close();
            }
        }
    }
	
if ($password){
	
$exists = mysql_query ("SELECT * FROM utenti WHERE password = '$password_cript'") or die ("Impossibile completare la richiesta");
if (mysql_num_rows($exists) != 0){
		

mysql_query ("UPDATE utenti SET foto='$foto' AND password = '$password_cript'") or die ("Caricamento dei dati nel database fallito.");
echo "I dati sono stati modificati correttamente.</br>Per visualizzare le modifiche rieffettuare l'accesso!";
}else echo "Username o Password sbagliata, inserire l'username e la password che si usa per accedere nell'area partner.";	
}
 else echo "Devi inserire l'username e la password per confermare la modifica.";

}
?>


Con var_dump compare questo
Codice:
array(14) { ["id"]=> &string(2) "34" ["utente"]=> &string(7) "Luca" ["email2"]=> &string(21) "[email protected]" ["nome2"]=> &string(8) "Luca" ["cognome2"]=> &string(8) "Prova" ["indirizzo2"]=> &string(14) "via prova n.12" ["telefono2"]=> &string(10) "12345" ["cellulare2"]=> &string(10) "6789" ["fax2"]=> &string(10) "10111213" ["foto2"]=> &string(14) "primafoto.JPG" } UPDATE utenti SET foto = 'fotoprova.jpg' WHERE username = 'Luca'
 
è questa che ti modifica tutti irecord
PHP:
mysql_query ("UPDATE utenti SET foto='$foto' AND password = '$password_cript'") or die ("Caricamento dei dati nel database fallito.");
e ti mette 0 perche non si recupera cosi il nome della foto
PHP:
$foto = addslashes(trim($_POST['foto']));
tutta la parte da qui
PHP:
if ($password){
in poi al puoi cestinare
 
è questa che ti modifica tutti irecord
PHP:
mysql_query ("UPDATE utenti SET foto='$foto' AND password = '$password_cript'") or die ("Caricamento dei dati nel database fallito.");
e ti mette 0 perche non si recupera cosi il nome della foto
PHP:
$foto = addslashes(trim($_POST['foto']));
tutta la parte da qui
PHP:
if ($password){
in poi al puoi cestinare

Perfetto !! Funziona benissimo =) Grazie mille
E se io voglio che l'utente possa semplicemente togliere la foto ?
 
Basta inserire un button cancella che ti fa partire una query:
PHP:
mysql_query ("UPDATE utenti SET foto='' WHERE username = '" . $_SESSION['utente'] . "'") or die ("Eliminazione immagine fallita.");
Ovviamente poi se la foto non c'è fai visualizzare quella di default.
 
Basta inserire un button cancella che ti fa partire una query:
PHP:
mysql_query ("UPDATE utenti SET foto='' WHERE username = '" . $_SESSION['utente'] . "'") or die ("Eliminazione immagine fallita.");
Ovviamente poi se la foto non c'è fai visualizzare quella di default.

Funziona perfettamente, solo quattro cose, molto importanti però:

• In questo modo la foto viene cancellata dalla tabella utenti, ma non dalla cartella uploadimg, come faccio invece a fare in modo che si cancellino entrambe le cose?

• Una cosa stupida, come faccio in modo che viene visualizzato un messaggio quando la foto viene cancellata ? Sembrerà strano ma non ci riesco .-.

• Quando la foto viene caricata, quella vecchia rimane, io vorrei invece che si cancellasse la vecchia e rimanesse solo quella nuova, come faccio, unisco i due script ?

• Come faccio a impostare dei "limiti" per la foto ? Ovvero larghezza, altezza, peso, formato ecc. ?

Grazie mille a tutti mi state aiutando moltissimo =)
 
Ultima modifica:
• In questo modo la foto viene cancellata dalla tabella utenti, ma non dalla cartella uploadimg, come faccio invece a fare in modo che si cancellino entrambe le cose?
Grazie alla funzione unlink.
• Una cosa stupida, come faccio in modo che viene visualizzato un messaggio quando la foto viene cancellata ? Sembrerà strano ma non ci riesco .-.
Puoi inserire un messaggio in una variabile che la puoi passare tramite metodo get e quando torni alla pagina precedente lo visualizzi.
• Quando la foto viene caricata, quella vecchia rimane, io vorrei invece che si cancellasse la vecchia e rimanesse solo quella nuova, come faccio, unisco i due script ?
Basta caricare la foto con lo stesso nome e quella precedente viene sovrascritta. Quindi magari nomina la foto con l'username dell'utente.
• Come faccio a impostare dei "limiti" per la foto ? Ovvero larghezza, altezza, peso, formato ecc. ?
Prova a dare uno sguardo agli esempi pubblicati nel manuale.
 
Grazie alla funzione unlink.

Puoi inserire un messaggio in una variabile che la puoi passare tramite metodo get e quando torni alla pagina precedente lo visualizzi.

Basta caricare la foto con lo stesso nome e quella precedente viene sovrascritta. Quindi magari nomina la foto con l'username dell'utente.

Prova a dare uno sguardo agli esempi pubblicati nel manuale.

Aallora.. esaminiamo un problema alla volta altrimenti non capiamo più niente :P

La funzione unlink la conosco ma come faccio ad utilizzarla in questo caso ?
Dovrei fare una cosa del genere ?

PHP:
unlink("uploadimg/$nomefile");
 
Ultima modifica:

Discussioni simili