allora qui manca qualcosa
o forse non hai abilitata l'estensione mysqli ma mi pare stranoPHP:$connect = new mysqli("localhost", "root", "password", "database");
Ora da questo errore
Errore query :Unknown column 'Luca' in 'where clause
allora qui manca qualcosa
o forse non hai abilitata l'estensione mysqli ma mi pare stranoPHP:$connect = new mysqli("localhost", "root", "password", "database");
$query = "UPDATE utenti SET foto = '$nomefile' WHERE nome = '" . $_SESSION['idUtente'] . "'";
se in $_SESSION['utente'] c'è il nome e non l'id devi cambiare la query cosi
basta che non hai piu utenti con nome luca altrimenti cambi la foto a tutti, per questo si consiglia sempre di usare un id univocoPHP:$query = "UPDATE utenti SET foto = '$nomefile' WHERE nome = '" . $_SESSION['idUtente'] . "'";
prova stampare la query e vedi cosa c'è di sbagliato
PHP:$query = "UPDATE utenti SET foto = '$nomefile' WHERE nome = '" . $_SESSION['idUtente'] . "'"; echo $query;
Copiando hai dimenticato l'ultimo apice?Compare questo
UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca
E l'username è contenuto nel campo nome?Allora, precisamente uso l'username che è univoco quindi dovrebbe andare bene lo stesso.
$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'] . "'";
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?
Questo non è un errore ma è il risultato del codice:UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca
echo $query;
Molto strano.
Questo non è un errore ma è il risultato del codice:
Anche se in realtà dovrebbe essere:PHP:echo $query;
UPDATE utenti SET foto = '250644_315166391908040_2016804073_n.jpg' WHERE username = 'Luca'
E' per questo che dicevo dell'apice finale che mancava.
riposta lo script completo compreso il form e metti a iniziopagina
e postaPHP:var_dump($_SESSION);
<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"> </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"> </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>
<?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.";
}
?>
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'
mysql_query ("UPDATE utenti SET foto='$foto' AND password = '$password_cript'") or die ("Caricamento dei dati nel database fallito.");
$foto = addslashes(trim($_POST['foto']));
if ($password){
è questa che ti modifica tutti irecord
e ti mette 0 perche non si recupera cosi il nome della fotoPHP:mysql_query ("UPDATE utenti SET foto='$foto' AND password = '$password_cript'") or die ("Caricamento dei dati nel database fallito.");
tutta la parte da quiPHP:$foto = addslashes(trim($_POST['foto']));
in poi al puoi cestinarePHP:if ($password){
mysql_query ("UPDATE utenti SET foto='' WHERE username = '" . $_SESSION['utente'] . "'") or die ("Eliminazione immagine fallita.");
Basta inserire un button cancella che ti fa partire una query:
Ovviamente poi se la foto non c'è fai visualizzare quella di default.PHP:mysql_query ("UPDATE utenti SET foto='' WHERE username = '" . $_SESSION['utente'] . "'") or die ("Eliminazione immagine fallita.");
Grazie alla funzione unlink.• 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?
Puoi inserire un messaggio in una variabile che la puoi passare tramite metodo get e quando torni alla pagina precedente lo visualizzi.• Una cosa stupida, come faccio in modo che viene visualizzato un messaggio quando la foto viene cancellata ? Sembrerà strano ma non ci riesco .-.
Basta caricare la foto con lo stesso nome e quella precedente viene sovrascritta. Quindi magari nomina la foto con l'username dell'utente.• 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 ?
Prova a dare uno sguardo agli esempi pubblicati nel manuale.• Come faccio a impostare dei "limiti" per la foto ? Ovvero larghezza, altezza, peso, formato ecc. ?
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.
unlink("uploadimg/$nomefile");