Problemi collegamento a MySQL

  • Creatore Discussione Creatore Discussione Oswold
  • Data di inizio Data di inizio

Oswold

Utente Attivo
7 Ago 2013
81
0
6
Catania
Ciao a tutti, ho iniziato da poco a smanettare con il php e devo dire che non è troppo complicato ma ho due problemi persistenti che non riesco a risolvere in nessun modo:

1) Molte volte non mi visualizza il comando "echo"

2) Questo script di registrazione:

PHP:
<html>
<body>
<form method="post" action="index.php">

<?php 
$connessione=mysql_connect("localhost", "root", "") 
or die ("Non riesco a connettermi"); 
$db=mysql_select_db ("test", $connessione);
if (!$db)
{
 die ("Connessione al db fallita!".mysql_error());
}

$user=$_POST['user'];
$pass=$_POST['pass'];
$mail=$_POST['email'];

$risultato=mysql_query("INSERT INTO utenti (username,password,mail) VALUES ('$user', '$pass', '$email'")
echo "Registrazione avvenuta correttamente" <br>

<input type="submit" name="submit" value="Avanti">

<?php

mysql_close($connessione); 

?>

</form>
</body>
</html>

PHP:
<html>
<body>
<form method="post" action="reg-control.php">
<table border="1">
<td>
<p><label><b>User:</b><br>
<input name="user" type="text">
</label></p>
<p><label><b>Email:</b><br>
<input name="email" type="text">
</p></label>
<p><label><b>Password:</b> <br>
<input name"pass" type="password">
</p></label>
</td>
</table>
<br>
<br>
<input name="submit" type="submit" value="Registrati">
<input name="reset" type="reset" value="Resetta">
</form>
</body>
</html>

In pratica il secondo script php ti consente di inserire i dati: nome, password ed email e ti porta nel secondo script che si collega al database in questione, tutto ok, non mi visualizza nessun errore (come ho già detto però mi salta l'echo) ma quando mi collego al localhost non mi aggiorna la tabella con i dati inseriti nella registrazione, qualcuno di voi mi saprebbe dire dove sta il problema?
 
Ciao io togliere dal secondo file "<form method="post" action="index.php"> ".

Fammi sapere

ciao
 
Quello serve solo a reindirizzarmi dopo aver fatto il passaggio nel database in quanto devo inserirlo in un sito... comunque sia ho provato a rimuoverlo ma non va ugualmente, di darmi problemi no ne da quindi non riesco proprio a capire il motivo!

Ci sarà qualcosa che non va in "INSERT INTO" ma ho provato a cambiarlo più volte, sono a corto di idee!
 
ciao
intanto ricordati che tutte le istruzioni di php devono terminare con il ;
poi non avevvi chiuso un tag php
PHP:
<html>
<body>
<form method="post" action="index.php">
<?php 
$connessione=mysql_connect("localhost", "root", "") 
or die ("Non riesco a connettermi"); 
$db=mysql_select_db ("test", $connessione);
if (!$db)
{
 die ("Connessione al db fallita!".mysql_error());
}
$user=$_POST['user'];
$pass=$_POST['pass'];
$mail=$_POST['email'];
$risultato=mysql_query("INSERT INTO utenti (username,password,mail) VALUES ('$user', '$pass', '$email'");
echo "Registrazione avvenuta correttamente<br>";
?>
<input type="submit" name="submit" value="Avanti">

<?php
//questo non serve ci pensa php a chiudere
//mysql_close($connessione); 

?>
</form>
</body>
</html>

senza contare che non è bene inserire i dati così "brutalmente" nel db, i dati prima di essere inseriti devono essere formalmente verificati e eventualmente aggiustati
ti faccio un esempio: se un utente sceglie come user de'pallonzi ti manda il tutto in pallino,
analogamente per la pass e l'email che potrebbe inserire come mia#email.it che non è un indirizzo valido, o un user gia esistente, ecc.....
se cerci in giro per il forum trovi diverse discussioni di come devono essere validati i dati

il form per reindirizzare può andare bene, anche se si può usare un semplice link (abbellito con i css)
 
Ok grazie però, purtroppo, continua a non funzionare!...

Quello che hai detto era il secondo passo dello script ma prima devo riuscire a fare le cose basilari! Sono solo due giorni che ci sbatto la testa ancora.
Già ho un idea per l'algoritmo per verificare l'email e dopodiché, come hai ben detto tu, verificare se i dati inseriti sono già presenti nel database e magari inserire una domanda per potersi iscrivere (2+2=?) così da evitare spam bot e cavolate varie!
 
ciao
intanto dividi la query
$risultato=mysql_query("INSERT INTO utenti (username,password,mail) VALUES ('$user', '$pass', '$email'");
e visto che sei agli inizii impara ad usare var_dump che è uno degli strumenti migliori per trovare gli inghippi
PHP:
<html>
<body>
<form method="post" action="index.php">
<?php 
$connessione=mysql_connect("localhost", "root", "") 
or die ("Non riesco a connettermi"); 
$db=mysql_select_db ("test", $connessione);
if (!$db)
{
 die ("Connessione al db fallita!".mysql_error());
}
$user=$_POST['user'];
$pass=$_POST['pass'];
$mail=$_POST['email'];
$query="INSERT INTO utenti (username,password,mail) VALUES ('$user', '$pass', '$email'";
echo "<pre>";
var_dump($query);
$risultato=mysql_query($query);
var_dump($risultato);
echo "</pre>";
echo "Registrazione avvenuta correttamente<br>";
?>
<input type="submit" name="submit" value="Avanti">
</form>
</body>
</html>
il primo var_dump (es se inserito pinco pallo [email protected] ti dovrebbe resituire
string(nn) "INSERT INTO utenti (username,password,mail) VALUES ('pinco', 'pallo', '[email protected]'"
dove nn è la lunghezza della stringa
se viene es
string(xx) "INSERT INTO utenti (username,password,mail) VALUES ('', 'pallo', '[email protected]'"
è evidente che il $_POST non va
se la stringa viene scritta come dovrebbe, ma il secondo var dump ti restituisce
bool FALSE
c'è qualcosa che non va nella tabella utenti es. qualche nome di campo diverso (devono essere uguali compreso maiuscole/minuscole)
se invece ti da RESOURCE
guarda la tabella con phpmyadmin e verifica cosa è stato inserito
una volta risolto gli echo pre e i var dump o li togli o li commenti
 
Mi da una parte di codice nella pagina html, sicuramente per questo non va:

"; var_dump($query); $risultato=mysql_query($query); var_dump($risultato); echo ""; echo "Registrazione avvenuta correttamente
"; ?>
 
ciao
semprerebbe che tu abbia sbagliato l'apertura/chiusura dei tag php <?php ........ ?>
controlla ed eventualmente posta quello che hai fatto
 
PHP:
<html>
<body>
<form method="post" action="index.php">
<?php 
$connessione=mysql_connect("localhost", "Oswold", "")  
or die ("Non riesco a connettermi");  
$db=mysql_select_db ("test", $connessione); 
if (!$db) 
{ 
 die ("Connessione al db fallita!".mysql_error()); 
} 
$user=$_POST['user']; 
$pass=$_POST['pass']; 
$mail=$_POST['email']; 
$risultato=mysql_query("INSERT INTO utenti (username,password,mail) VALUES ('$user', '$pass', '$email'"); 
echo "<pre>";
var_dump($query); 
$risultato=mysql_query($query); 
var_dump($risultato); 
echo "</pre>"; 
echo "Registrazione avvenuta correttamente<br>";
?>
<input type="submit" name="submit" value="Avanti"> 
</form> 
</body> 
</html>
 
ciao
prova così, funzia
leggi i commenti
PHP:
<html>
<body>
<!-- attento qui ho meso il nome della mia pagina poi devi rimettere il tuo-->
<form method="post" action="000002.php">
<table border="1">
<!-- mancava il tag <tr> -->
<tr><td>
<p><label><b>User:</b><br>
<input name="user" type="text">
</label></p>
<p><label><b>Email:</b><br>
<input name="email" type="text">
</label></p>
<p><label><b>Password:</b> <br>
<!-- attento avevi scritto name"pass" senza = -->
<input name="pass" type="password">
</label></p>
</td></tr>
</table>
<br>
<br>
<input name="submit" type="submit" value="Registrati">
<input name="reset" type="reset" value="Resetta">
</form>
</body>
</html>

PHP:
<html>
<body>
<!-- attento qui ho messo il nome della mia pagina poi devi rimettere il tuo-->
<form method="post" action="000003.php">
<?php
//verifica i dati perche ho messo i miei
$connessione=mysql_connect("localhost", "root", "password") 
or die ("Non riesco a connettermi");
//attento qui il nome del tuo db 
$db=mysql_select_db ("prove");
if (!$db)
{
 die ("Connessione al db fallita!".mysql_error());
}
$user=$_POST['user'];//ricorda I DATI DEVONO ESSERE CONTROLLATI
$pass=$_POST['pass'];//prima di immettrli nel db
$mail=$_POST['email'];
//dimenticato di chiudere vaules (.....)
$risultato=mysql_query("INSERT INTO utenti (username,password,mail) VALUES ('$user', '$pass', '$mail')");
//e qui metti un if
if($risultato){
	echo "Registrazione avvenuta correttamente<br>";
}else{
	echo "ERRORE riprova<br>";
}
?>
<input type="submit" name="submit" value="Avanti">
</form>
</body>
</html>

poi stai attento i tag non si devono sovrapporre
errore:
<p><label>....</p></label>
ma
<p><label>....</label></p>
 
Quindi come apro i tag devo chiuderli? Intendo la posizione...

Stavolta mi visualizza questo continuando a non inserire i dati sul database:

"; }else{ echo "ERRORE riprova
"; } ?>
 
ciao
non capisco cosa stai combinando perche visualizzi
"; }else{ echo "ERRORE riprova
"; } ?>

per quanto riguarda l'inserimento verifica il nome della tabella e dei campi devono essere uguali (compreso maiuscole/minuscole) a quello che scrivi nella query
lo sdript è molto semplice forse stai sbagliando qualcosa col copy/paste.

poi posta il dump della tabella utenti
 


PHP:
<html> 
<body> 
<form method="post" action="index.html"> 
<?php 
$connessione=mysql_connect("localhost", "Oswold", "")  
or die ("Non riesco a connettermi"); 
$db=mysql_select_db ("test"); 
if (!$db) 
{ 
 die ("Connessione al db fallita!".mysql_error()); 
} 
$user=$_POST['user']; 
$pass=$_POST['pass'];
$mail=$_POST['email']; 
$risultato=mysql_query("INSERT INTO utenti (username,password,mail) VALUES ('$user', '$pass', '$mail')"); 
if($risultato){ 
    echo "Registrazione avvenuta correttamente<br>"; 
}else{ 
    echo "ERRORE riprova<br>"; 
} 
?> 
<input type="submit" name="submit" value="Avanti"> 
</form> 
</body> 
</html>
 
ciao
prima del campo username aggiungi il campo indicativo del record (generalmente si chiama id)
id int(12) autoincrement primarykey
non serve che tu lo metta nella query ci pensa mysql ad aggiornarselo.
se non metti quel campo come fa mysql a capire dove inserire ol nuovo record?
 
Ciao, ho provato anchi lo script
mi da il tuo stesso errore se utilizzo l'apertura abbreviata di php
PHP:
<?
anziche quella estesa
PHP:
<?php
sicuro di usare quella estesa?
fai una prova semmai con quella abbreviata forse è un problema di configurazione di php
 

Discussioni simili