non inserisce i dati nel db

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
ho letto le altre discussioni presenti sul forum su questo argomento, fatto come avete consigliato, ma nulla...
i dati non vengono inseriti nel db!!!

Allego il codice..
PHP:
<?PHP
	include "varDB.inc";

	function connect() {
	mysql_connect ("localhost","root","") OR die (non riesco a connettermi);
	mysql_select_db ("sito") OR die (non riesco a trovare il DB);



	

?>

<HTML>
<Head>
	<title>Registrazione- Login utente</title>
	
<head>

<body>

<?php
	if (!isset ($_POST['invia'])){ ?>
	 
	 
	 
<form method="POST" action="#">
		<label for="username">Username</label>
		<input type="text"name="username" id="username"/><br>
		<label for="password1"> Password</label>
		<input type="password" name="password1" id="password1"/><br>
		<label for="password2">Ripeti Password</label>
		<input type="password" name="password2" id="password2"/><br>
		<label for=""email>Email</label>
		<input type="text"name="email" id="email"/>
		<input type="submit" name="invia" value="registrati"/><br>
</form>		
		
<?php
	}else { //valori del form
	$username=$_POST['username'];
	$password1=$_POST['password1'];
	$password2=$_POST['password2'];
	$email=$_POST['email'];
	
	
//controlli campi vuoti e password
		if($username=="" || $email==""){
		echo"devi riempire tutti i campi";
		}elseif($password1=="" || $password2==""){
		echo"devi riempire tutti i campi";
		}elseif($password2 !=$password1){
		echo"Le password non coincidono";
		}else{
		
		$controllodati=mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");
		$contautenti=mysql_num_rows($controllodati);
		
		if($contautenti >0){
		echo"Nome utente o email già in uso";
		
		}else{
		
		//inserisci utenti in db, tabella utenti
		$inserimentoutenti=mysql_query ("INSERT INTO utenti (id,username, password2, email) VALUES('','$username','$password2','$email')");
		
		if($inserimentoutenti){
		echo"Congratulazioni";
			}else{
				echo"inserisci di nuovo i dati";
			}
	
}

}
}
}

?>


</body>	
</html>

:incazz::incazz::incazz::incazz:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
immagino che l'id sia autoincrement, quindi toglilo. poi dividi la query e metti un var dump per verificare che la query venga scritta come vorresti
PHP:
<?php
//.....
  $query="INSERT INTO utenti (username, password2, email) VALUES('$username','$password2','$email')";
  var_dump($query);//qesto dopo la verifica lo togli o lo commenti
  $inserimentoutenti=mysql_query ($query); 
//.....
?>
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
ciao
immagino che l'id sia autoincrement, quindi toglilo. poi dividi la query e metti un var dump per verificare che la query venga scritta come vorresti
PHP:
<?php
//.....
  $query="INSERT INTO utenti (username, password2, email) VALUES('$username','$password2','$email')";
  var_dump($query);//qesto dopo la verifica lo togli o lo commenti
  $inserimentoutenti=mysql_query ($query); 
//.....
?>

Ho tolto Id che era di autoincremento. Ma adesso leggo questo messaggio string(87) "INSERT INTO utenti (username, password2, email) VALUES('pippo','cccc','[email protected]')"

chiedo perchè sono poco pratica..ovviamente i dati inseriti erano di prova...


Ho modificato i valori password e la variabile password, in pratica
$query="INSERT INTO utenti (username, password, email) VALUES('$username','$password2','$email')";

E il var_dump è messo in commento..devo lasciare la query cosi come mi hai detto sopra?
Grazie in anticipo!!
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima cosa: il var dump ti ha restituito come viene elaborata la querry dopo che hai valorizzato i dati: è giusta?
se si, sei sicura che i nomi dei campi e tabella siano uguali (comprese maiuscole/minuscole) a quelli che hai scritto nella query?
se si verifica i dati i connessione e selezione db.

comunque do un occhio a quello che hai scritto poi ti so dire
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ma non manca un } per chiudere la funzione connect ? e poi il richiamo della stessa funzione
non sono ancora riuscito a capire ma secondo me manca qualche parentesi
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
ma non manca un } per chiudere la funzione connect ? e poi il richiamo della stessa funzione
non sono ancora riuscito a capire ma secondo me manca qualche parentesi


Credo di aver chiuso tutte le parentesi..la funzione connect l'ho chiusa alla fine prima di chiudere il tag php, avrei dovuto chiuderla prima?

Si, ho controllato tutti i nomi delle variabili
prima cosa: il var dump ti ha restituito come viene elaborata la querry dopo che hai valorizzato i dati: è giusta?
se si, sei sicura che i nomi dei campi e tabella siano uguali (comprese maiuscole/minuscole) a quelli che hai scritto nella query?
se si verifica i dati i connessione e selezione db.

Funziona la query con il var_dump!e i parametri del db mi sembrano esatti.. come tutti i nomi dei campi...mi sapete dire qualcosa in più'
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
Adesso ho fatto la pagina di login, una volta risolto il problema precedente, ma ogni volta che inserisco i dati che ho inserito nel db mi dice che i dati non sono presenti nel db e vedo questo errore

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\prova\login.php on line 61


allego il codice...


PHP:
<?php

include("varDB.inc");

session_start();


?>


<html>

	<header> <title>Login</title>
	
	</header>
	
			<body>
			
			
			
			<?php
$p= $_GET['azione'];

if($p=="login"){


			
	if (!isset ($_POST['invia'])){ ?>
	 
	 
	 
<form method="POST" action="#">
		<label for="username">Username</label>
		<input type="text"name="username" id="username"/><br>
		<label for="password"> Password</label>
		<input type="password" name="password" id="password"/><br>
		<input type="submit" name="invia" value="entra"/><br>
		
</form>		
			
			


<?php 

}else{

	$username= $_POST['username'];
	$password= $_POST['password'];
	
	}
	
	if($username=="" || $password==""){
	
	echo"Attenzione devi riempire tutti i campi";
	
	}else{
	
	$controllodati=mysql_query("SELECT * FROM utenti WHERE username='$username' AND password='$password' ");
	
	$contautenti=mysql_num_rows($controllodati);
	
		
	if ($controllodati==1){
	
	$sessione=mysql_fetch_array($controllodati);
	
	$_SESSION['id']='$sessione';

	echo"login ok";
	
	}else{
	echo"dati non presenti nel db";
	
	
	}
		}

}	
	

?>	
			
			</body>




</html>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
L'errore ti indica un problema nella query
cambia questo
PHP:
 $controllodati=mysql_query("SELECT * FROM utenti WHERE username='$username' AND password='$password' ");
    
    $contautenti=mysql_num_rows($controllodati);
cosi
PHP:
$query = "SELECT * FROM utenti WHERE username='$username' AND password='$password' ";
$controllodati = mysql_query($query);
// se la query non va a buon fine
if (!$controllodati) {
    // stampi query ed errore
    echo "Errore nella query <br/>" . $query . "<br/>" . mysql_error();
    // blocchi l'esecuzione dello script
   die();
}
in questo modo se va in errore stampi sia la query che l'errore mysql
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
hai ragiona va in errore..mi dice:

Errore nella query
SELECT * FROM utenti WHERE username='pippo' AND password='cccc'
No database selected


non capisco perchè..la query mi sembra giusta!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
No database selected
manca questa funzione
PHP:
$db = mysql_select_db("nomedeltuodatabae");
mettila dopo la mysql_connect();
 
Ultima modifica:

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
Vero hai ragione, l'avevo dimenticata..ma la query adesso la devo lasciare come mi hai detto sopra oppure no?

una'ltra cosa..quando visualizzo il form del login con username e password leggo questo messaggio
Notice: Undefined variable: username in C:\xampp\htdocs\prova\login.php on line 56

e poi leggo anche il contenuto di echo che dovrei vedere solo dopo aver premuto invio e non avendo compilato tutti i campi...
Attenzione devi riempire tutti i campi

Cosa posso fare?perchè l'ho ricontrollato mille volte, ma la variabile username è giusta...il


PHP:
<?php

include("varDB.inc");

$conn=mysql_connect("localhost","root","") or die;
mysql_select_db ("sito") or die;

session_start();


?>


<html>

	<header> <title>Login</title>
	
	</header>
	
			<body>
			
			
			
			<?php
$p= $_GET['azione'];

if($p=="login"){


			
	if (!isset ($_POST['invia'])){ ?>
	 
	 
	 
<form method="POST" action="#">
		<label for="username">Username</label>
		<input type="text"name="username" id="username"/><br>
		<label for="password"> Password</label>
		<input type="password" name="password" id="password"/><br>
		<input type="submit" name="invia" value="entra"/><br>
		
</form>		
			
			


<?php 

}else{

	$username= $_POST['username'];
	$password= $_POST['password'];
	
	}
	
	if($username=="" || $password==""){
	
	echo"Attenzione devi riempire tutti i campi";
	
	}else{	
	
	$query = "SELECT * FROM utenti WHERE username='$username' AND password='$password' ";
$controllodati = mysql_query($query);
// se la query non va a buon fine
if (!$controllodati) {
    // stampi query ed errore
    echo "Errore nella query <br/>" . $query . "<br/>" . mysql_error();
    // blocchi l'esecuzione dello script
   die();
}  
	
	//$controllodati=mysql_query("SELECT * FROM utenti WHERE username='$username' AND password='$password' ");
	//$result=mysql_query($controllodati) or die;
	
	$contautenti=mysql_num_rows($controllodati);
	
		
	if ($contautenti==1){
	
	$sessione=mysql_fetch_array($controllodati);
	
	
	$_SESSION['id']=$username;

	echo"login ok";
	
	}else{
	echo"dati non presenti nel db";
	
	
	}
		}

}	
	

?>	
			
			</body>




</html>
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
per il Notice
modifica questo
PHP:
$username= $_POST['username'];
$password= $_POST['password'];
cosi
PHP:
$username = isset($_POST['username']) ? $_POST['username'] : "";
$password = isset($_POST['password']) ? $_POST['password'] : "";
in modo che cmq venga assegnato un valore alle variabili

il secondo problema dovrebbe sistemarsi da solo sistemando il primo (forse)
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
scusate, molto se mi intrometto ma ho visto questo:

include("varDB.inc");

ma non è che non è sicuro il file .inc perché forse dal browser si può vedere il contenuto a video essendo che non ha estensione .php
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
scusate, molto se mi intrometto ma ho visto questo:

include("varDB.inc");

ma non è che non è sicuro il file .inc perché forse dal browser si può vedere il contenuto a video essendo che non ha estensione .php

Il varDB.inc devo metterlo per forza, perchè il progetto che devo creare è per l'università e i paremetri che devo inserire relativi al db,alla connessione devono essere indicati in un file esterno.



in modo che cmq venga assegnato un valore alle variabili

il secondo problema dovrebbe sistemarsi da solo sistemando il primo (forse)


Mi spieghi cosa intendi?
comunque proverò e ti dico..
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
C'è ancora l'errore, non cambia nulla e vedo sempre il contenuto di echo"attenzione riempi i campi"

il problema è qui nella variabile username..
PHP:
if($username=="" || $password==""){


che faccio??
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
provala cosi
PHP:
<?php
include("varDB.inc");

$conn = mysql_connect("localhost", "root", "") or die;
mysql_select_db("sito") or die;

session_start();
?>
<html>
    <head> 
        <title>Login</title>
    </head>
    <body>
        <?php
        $p = $_GET['azione'];

        if ($p == "login") {
            if (!isset($_POST['invia'])) {
                ?>
                <form method="POST" action="#">
                    <label for="username">Username</label>
                    <input type="text"name="username" id="username"/><br>
                    <label for="password"> Password</label>
                    <input type="password" name="password" id="password"/><br>
                    <input type="submit" name="invia" value="entra"/><br>
                </form>       
                <?php
            } else {
                $username = isset($_POST['username']) ? $_POST['username'] : "";
                $password = isset($_POST['password']) ? $_POST['password'] : "";

                if ($username == "" || $password == "") {
                    echo"Attenzione devi riempire tutti i campi";
                } else {
                    $query = "SELECT * FROM utenti WHERE username='$username' AND password='$password' ";
                    $controllodati = mysql_query($query);
                    // se la query non va a buon fine
                    if (!$controllodati) {
                        // stampi query ed errore
                        echo "Errore 1 contatta l'amministratore";
                        // blocchi l'esecuzione dello script
                        die();
                    }

                    $contautenti = mysql_num_rows($controllodati);

                    if ($contautenti == 1) {
                        // questa a cosa ti serve?
                        $sessione = mysql_fetch_array($controllodati);


                        $_SESSION['id'] = $username;

                        echo"login ok";
                    } else {
                        echo"dati non presenti nel db";
                    }
                }
            }
        }
        ?>    

    </body>
</html>
ho spostato la chiusura dell'else all fine dello script
ho modificato il messaggio di errore sulla query
ho cambiato <header> con il tag giusto <head>
@Luigi777
potrebbe essere protetto a livello di server e in quel caso cmq non è accessibile da browser
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ha ragione sia luigi777 che criric (anche se criric scrive "dovrebbe").
da che ne so io il .inc veniva usato agli albori di php, del resto rinominarlo varDB.php e racchiudere quanto c'è dentro tra i tag php è una sicurezza in più.
comunque un altro piccolo appunto: se i dati contenuti in varDB sono importanti (immagino i valori di host, username, password e nome db) è meglio usare:
PHP:
<?php
require_once "varDB.php";
//......
?>
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
Criric sei un mito, adesso è a posto!!!

però volevo chiedere ancora se qualcuno poteva spiegarmi bene l'uso si questa parte di codice..

PHP:
$username = isset($_POST['username']) ? $_POST['username'] : "";
                $password = isset($_POST['password']) ? $_POST['password'] : "";



Non bastava come l'avevo messo io?


PHP:
// questa a cosa ti serve?
                        $sessione = mysql_fetch_array($controllodati);


Mi serve per scorrere tutti i dati inseriti nella variabile $controllodati..


E poi volevo chiedere anche come faccio ad inviare i dati tramite url con GET, volevo inviare username e password, guardando un tutorial ho copiato questa parte, funziona ma perefirei inserire url tipo indirizzamento alla pagina di login...come posso fare?il codice che vorrei modificare è questo
PHP:
<?php
        $p = $_GET['azione'];

        if ($p == "login") {
 

incrediblekris

Utente Attivo
11 Ott 2012
52
0
0
PHP:
<?php
include("varDB.inc");



$conn = mysql_connect("localhost", "root", "") or die;
mysql_select_db("sito") or die;

session_start();
?> 
<html>
    <head> 
        <title>Login</title>
			<link rel="stylesheet" type="text/css" href="stile.css">
    </head>
    <body>
	
	<TABLE>
		<TR>
			<TD>
				<div id="menu">
					<ul>
						<?php 
						if(!isset($_SESSION['utente'])){
					echo"<li><p>Ciao visitatore!</p>	</li>";	
					echo"<li><p><a href='nuova.php?azione=login'>login</a></p></li>";
				echo"<li><p><a href='registrati.php'>registrati</a></p></li>";
					
					}elseif (isset($_SESSION['utente'])){
					echo"<li>ciao ".$_SESSION['utente']."</li>";	
					
					echo"<li><a href='nuova.php?azione=logout'>esci</a></li>";}
					
					?>						
				
					</ul>
				</div>
            </TD>		 
		</TR>
	</TABLE>
        <?php
        $p = $_GET['azione'];

        if ($p == "login") {
            if (!isset($_POST['invia'])) {
                ?>
                <form method="POST" action="#">
                    <label for="username">Username</label>
                    <input type="text"name="username" id="username"/><br>
                    <label for="password"> Password</label>
                    <input type="password" name="password" id="password"/><br>
                    <input type="submit" name="invia" value="entra"/><br>
                </form>       
                <?php
            } else {
                $username = isset($_POST['username']) ? $_POST['username'] : "";
                $password = isset($_POST['password']) ? $_POST['password'] : "";

                if ($username == "" || $password == "") {
                    echo"Attenzione devi riempire tutti i campi";
                } else {
                    $query = "SELECT * FROM utenti WHERE username='$username' AND password='$password' ";
                    $controllodati = mysql_query($query);
                    // se la query non va a buon fine
                    if (!$controllodati) {
                        // stampi query ed errore
                        echo "Errore 1 contatta l'amministratore";
                        // blocchi l'esecuzione dello script
                        die();
                    }

                    $contautenti = mysql_num_rows($controllodati);

                    if ($contautenti == 1) {
                        // recupera username 
                        $sessione = mysql_fetch_array($controllodati);


                        $_SESSION['utente']= $sessione['username'];
						
						echo"ciao ".$_SESSION['utente']."";
						echo"<br>";
                        echo"login ok";
						echo"<br>";
						echo"<a href='nuova.php?azione=logout'>esci</a>";
						
                    } else {
                        echo"dati non presenti nel db";
                    }
                }
            }
        }elseif($p=="logout"){
	
		session_destroy();
		
			echo"Logout effettuato";
			echo"<br>";
			Echo"Arrivederci, ".$_SESSION['utente']."";
			
		header("refresh: 2; URL=home.php");				

		}
		
	


        ?>    
		
	

	

    </body>
</html>

Il codice completo.

Allora vorrei che nella tabella appena effettuato il login si vedesse, invece di "Ciao visitatore" il nome dell'utente e "Esci". Ma una volta effettuato il login vedo solo "Ciao visitatore", solo se ricarico la pag vedo il nome utente e esci..come fare??'


PHP:
<html>
    <head> 
        <title>Login</title>
			<link rel="stylesheet" type="text/css" href="stile.css">
    </head>
    <body>
	
	<TABLE>
		<TR>
			<TD>
				<div id="menu">
					<ul>
						<?php 
						if(!isset($_SESSION['utente'])){
					echo"<li><p>Ciao visitatore!</p>	</li>";	
					echo"<li><p><a href='nuova.php?azione=login'>login</a></p></li>";
				echo"<li><p><a href='registrati.php'>registrati</a></p></li>";
					
					}elseif (isset($_SESSION['utente'])){
					echo"<li>ciao ".$_SESSION['utente']."</li>";	
					
					echo"<li><a href='nuova.php?azione=logout'>esci</a></li>";}
					
					?>						
				
					</ul>
				</div>
            </TD>		 
		</TR>
	</TABLE>

Questo è il codice che mi sembra non funzioni...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ti sei dimenticato di postarlo manca session_start

PHP:
<?php
session_start();//mi sembra che tu non l'abbia messo
?>
<!DOCTYPE html>
<html>
    <head>
	<!-- eccetera -->

poi
non ti serve
}elseif (isset($_SESSION['utente'])){ , ma ti basta l'else
PHP:
<?php
//...
}else{//non ti serve l'elseif perche la sessione è isset o non isset
	echo"<li>ciao ".$_SESSION['utente']."</li>"; 
//...
?>

p.s.
poi scrivi i tag minuscoli
 
Discussioni simili
Autore Titolo Forum Risposte Data
Monital [PHP] Insert into non inserisce tutti i dati PHP 1
M Menu a tendina che non inserisce dati nel db PHP 8
K Non inserisce dati nel db PHP 48
G form php connesso a database ma non inserisce dati PHP 5
DeAndreon Php non inserisce dati in db mysql PHP 37
MarcoGrazia [PDO] insert che non inserisce e non da errori PHP 1
Shyson Non inserisce datane Database PHP 1
Shyson Non inserisce nel db Database 1
felino Mac OS e Client Mail: Stato non in linea Mac e Software 1
I nome utente non esiste nel database PHP 1
M Drag and Drop non capisco le sequenze... Javascript 1
L Suggerimento Pagespeed per non vedenti HTML e CSS 0
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
M Immagini non usate WordPress 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
G Numero zero null non deve visualizzare nulla PHP 0
F Paypal _xclick IPN non risponde PHP 1
R Variabile non risconosciuta dentro una funzione PHP 1
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
E Alert non viene mostrato PHP 1
felino Hardisk WD SATA 1TB 3.5" non si avvia! Hardware 4
K Scrip non funzionante Javascript 1
R jquery che cambia css di un elemento non mi funziona sulla pagina caricata da ajax Ajax 5
zorro CREATE TABLE non funziona PHP 6
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
Sevenjeak Php8 non carica estenzioni PHP 0
R query DELETE non cancella i record PHP 1
otto9due Input text: accetta solo numeri e non può essere vuoto. Javascript 9
G Non vedo frecce su forme Photoshop 2
G Il mio sito dopo aver abilitato l'ssl non visualizza le immagini con indirizzi senza ssl HTML e CSS 0
P jquery refresh div non funziona Javascript 0
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
S Certificato SSL non funzionante Domini 0
zorro modulo di registrazione: funziona ma non sempre PHP 2
D Form contatti non funzionante HTML e CSS 0
MarcoGrazia Trovare record nel database partendo da id non sequenziali PHP 6
M Non ho rinnovato il mio sito su Aruba... Domini 1
T IP INFO NON FUNZIONA PHP 0
Shyson Google search non trova il mio sito SEO e Posizionamento 1
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
P Data scraping in PHP non funziona PHP 4
otto9due $_FILE non passa i dati dal form PHP 1
keyascii Non è mai troppo tardi Presentati al Forum 0
N dati tabella non presi PHP 1
P Pagina modifica record che non funziona PHP 0
Shyson AUTO_INCREMENT non si aggiorna MySQL 2
Shyson Codice wp-login non funziona PHP 2
S WORDPRESS NON FA INSTALLARE PIU NULLA WordPress 9
Shyson Non mi fa accedere al sito WordPress 12
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1

Discussioni simili