Pagina 1 di 1

Problema con una query.

Inviato: 07/12/2015, 16:49
da Dr.Joek\
Vi garantisco che da come è spiegato di seguito sembrerà una cosa complicatissima, ma in realtà è solo una query sbagliata, quindi invito a leggere tutto il post, perché il problema di per sé è banale ma per spiegarvelo bene l'ho rilegato con immagini e gif e parti di codice.

Il fatto è molto banale: devo cambiare un valore all'interno di un database con un valore scritto su un campo di testo. Posso garantire che il $username e $mottol che vedrete funzionano alla perfezione: mottol serve per riconoscere quello che c'è scritto sul campo di scrittura, e $username sarebbe il nome dell'utente che è loggato, siccome il database è strutturato cosi:

Database > users > nomeutente > motto, nome, mail, password, amici etc... per modificare il campo motto ovviamente richiede il nomeutente e la tabella cioè "users" .

Gif breve sulla tematica dell'errore: https://gyazo.com/5c71090fd788bbfaf4e140a4799e621d
Immagine specifica sull'errore: https://gyazo.com/2939bd1ae82ea8a8f47bf2a1c381c061

Parte del codice interessata:

Codice: Seleziona tutto

<?php 
if(isset($_POST['salva'])){ 
        if(strlen($_POST['mottoli']) > 32){ 
            $result = "Scusa, ma il motto che hai scelto e troppo lungo!"; 
            $error = "1"; 
            $mottol = $M['mottoli']; 
            } else { 
             $motto2 = $userROW['motto'];
            $mottol = htmlspecialchars(addslashes($_POST['mottoli'])); 
                $percorsouser = mysql_query("SELECT * FROM users WHERE username = '".$myusername."'");
                mysql_query("UPDATE users SET  motto = '".$mottol."' WHERE username = '".$username."'") or die ("Errore MODIFICA, contattare l'amministratore ".mysql_error() .$mottol. "'  Nome utente: " .$username."' "); 
                $result = "Modifiche salvate con successo."; 
                 
            } 
             
             
        } else { 
} 
?> 

<input type="text" id="mottoli" onClick="visualizza('formmotto', 'mottoli')" value="<?php echo $myrow['motto']; ?>"/> 
<div style="display:none" id="formmotto"> 
Cambia Motto: 
<form method="post"> 
<input type="text" name="mottoli" size="32" maxlength="32" value="<?php echo $myrow['motto']; ?>" id="mottoutente" /> 
Cioè la query è sbagliata penso, il fatto è che non so dove è sbagliata:

Immagine database1: https://gyazo.com/40e531d0c5e76ceb6239730d91d26516
Immagine database2 (quando si clicca sulle specifiche di un utente): https://gyazo.com/c7de520c683418d7d26f919db7ffed47

Re: Problema con una query.

Inviato: 07/12/2015, 16:56
da Sir Xiradorn
Le mysql saranno deprecte a breve. Usa il set PDO.

Parentesi a parte prova sostituendo a

Codice: Seleziona tutto

mysql_query("SELECT * FROM users WHERE username = '".$myusername."'"); 
questo

Codice: Seleziona tutto

mysql_query("SELECT * FROM users WHERE username LIKE '".$myusername."'"); 
e correggi anche nel update la stessa cosa. Per vedere se una query funge provala lanciandola a mano. Se va adatti il codice. Se non va devi cambiarlo in maniera che funzioni

Re: Problema con una query.

Inviato: 07/12/2015, 17:06
da Dr.Joek\
il $percorsouser mi sono reso conto che è inutile, quindi nell'altra query (dell'update) devo modificarla in:

Codice: Seleziona tutto

mysql_query("UPDATE users SET  motto LIKE '".$mottol."' WHERE username LIKE '".$username."'") or die ("Errore MODIFICA, contattare l'amministratore ".mysql_error() .$mottol. "'  Nome utente: " .$username."' "); 
Ho provato ma non funziona, restituisce sempre lo stesso errore.

Re: Problema con una query.

Inviato: 07/12/2015, 18:02
da Micogian
In una tabella sarebbe buona norma usare gli ID, se ci fosse id_user sarebbe molto più semplice eseguire la query con user_id e non con "username".
Il problema potrebbe stare proprio nell'username che è "Dr.Joek" e il punto potrebbe venire considerato in maniera sbagliata. Con user_id è molto più sicuro oppure prova con un username che non contenga caratteri speciali.

Re: Problema con una query.

Inviato: 07/12/2015, 18:10
da Dr.Joek\
Micogian ha scritto:In una tabella sarebbe buona norma usare gli ID, se ci fosse id_user sarebbe molto più semplice eseguire la query con user_id e non con "username".
Il problema potrebbe stare proprio nell'username che è "Dr.Joek" e il punto potrebbe venire considerato in maniera sbagliata. Con user_id è molto più sicuro oppure prova con un username che non contenga caratteri speciali.
Hai ragione, comunque ho provato con l'id e il risultato non cambia ecco il codice:

Codice: Seleziona tutto

mysql_query("UPDATE users SET  motto = '".$mottol."' WHERE username = '".$user_id."'") or die ("Errore MODIFICA, contattare l'amministratore ".mysql_error() .$mottol. "'  Nome utente e id: " .$username."'  " .$user_id."'");
Da sempre lo stesso errore, solo che alla fine nell'errore mi dice anche l'id (perché gli ho inserito quella stringa) e l'id che mi comunica, controllando nel database, è giusto ma fallisce ancora.
Qualche altra soluzione? Per favore Micogian non mollare.

Re: Problema con una query.

Inviato: 07/12/2015, 19:11
da Sir Xiradorn
Hai provato se la query funziona in phpmyadmin o nella console?

anche qua

Codice: Seleziona tutto

WHERE username = '".$user_id."'"
va cambiato in

Codice: Seleziona tutto

WHERE username LIKE '".$user_id."'"

Re: Problema con una query.

Inviato: 07/12/2015, 19:44
da Micogian
Se hai usato la query precedente non può funzionare, user_id non è username:

Codice: Seleziona tutto

mysql_query("UPDATE users SET  motto = '".$mottol."' WHERE user_id = '".$user_id."'") or die ("Errore MODIFICA, contattare l'amministratore ".mysql_error() .$mottol. "'  Nome utente e id: " .$username."'  " .$user_id."'");
L'errore sta qui: WHERE username = '".$user_id."'
username è una stringa, user_id è un numero.