phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Problema con una query.

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Rispondi
Dr.Joek\
Utente
Utente
Messaggi: 9
Iscritto il: 07/12/2015, 16:47
Versione: 3.1.5
Server: Windows
PHP: 1.4
Database: MySql

Problema con una query.

Messaggio da Dr.Joek\ » 07/12/2015, 16:49

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

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Problema con una query.

Messaggio da Sir Xiradorn » 07/12/2015, 16:56

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
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Dr.Joek\
Utente
Utente
Messaggi: 9
Iscritto il: 07/12/2015, 16:47
Versione: 3.1.5
Server: Windows
PHP: 1.4
Database: MySql

Re: Problema con una query.

Messaggio da Dr.Joek\ » 07/12/2015, 17:06

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.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Problema con una query.

Messaggio da Micogian » 07/12/2015, 18:02

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.

Dr.Joek\
Utente
Utente
Messaggi: 9
Iscritto il: 07/12/2015, 16:47
Versione: 3.1.5
Server: Windows
PHP: 1.4
Database: MySql

Re: Problema con una query.

Messaggio da Dr.Joek\ » 07/12/2015, 18:10

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.

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Problema con una query.

Messaggio da Sir Xiradorn » 07/12/2015, 19:11

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."'"
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Problema con una query.

Messaggio da Micogian » 07/12/2015, 19:44

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.

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 55 ospiti