-
problemi con mysqli
Salve a tutti,
Ho iniziatod a capo il mio codcie che avevo postato mi sono accorto che è un gran casino 8scusate x il termine) Detto ciò posto il nuovo codice che sto facendo campo x campo cerncando di mettere anche i controlli necessari per gli eventuali "sbadati" che non mettono la "@" nell'inserimento email oppure che lasciano il campo vuoto. Questo è quanto ho fatto in pochi minuti adesso.
provains.php
Codice PHP:
Codice PHP:
<?php
require_once("connettimysqli.php");
require_once("data.php");
echo "</hr>";
$id = mysqli_real_escape_string($con, $id);
$nome = mysqli_real_escape_string($con, $nome);
$cognome = mysqli_real_escape_string($con, $cognome);
$username = mysqli_real_escape_string($con, $username);
echo '<div class ="messaggio">';
$errore = "";
if (cognome == ""){$errore .= "Attenzione il campo è vuoto";}
?>
<div id ="messaggio">
<?php
if(!empty($_POST)){
$query=("INSERT INTO utenti (cognome, nome, username) VALUES('$cognome','$nome','$username'')");
$result=mysqli_query($con,$query);
if($result){
echo("<p> Inserimento avvenuto correttamente <p>");
} else{
echo("<br>Inserimento non eseguito");
}
}
?>
</div>
</body>
</html>
Questo spezzone di codice che posto isolatamente:
Codice PHP:
Codice PHP:
$errore = "";
if (cognome == ""){$errore .= "Attenzione il campo è vuoto";}
Dovrebbe far si che se il campo "cognome" risulta vuoto alla fine della registrazione glielo indica purtroppo semplice php, mi piacerebbe farlo in java o ajax ma sembra non funzionare. Inoltre non mi memorizza i dati Domanda perchè tutte queste complicazione ogni volta che debbo fare qualcosa di nuovo ???? Risposta: bah !!!! Spero che qualcuno mi possa aiutare, grazie.
-
Ti sei dimenticato il simbolo del dollaro: non è così:
Codice PHP:
if (cognome == "")
Ma è:
Codice PHP:
if ($cognome == "")
o meglio:
Codice PHP:
if (empty($cognome))
----
Nella query:
Codice PHP:
...,'$username'')");
Perché ci sono due singoli apici? Non dovrebbe essere così?:
Codice PHP:
...,'$username')");
---
In ogni caso, è molto importante far stampare il messaggio di errore in caso di errore della query: inserisci mysqli_error() in questo modo:
Codice PHP:
echo("<br>Inserimento non eseguito. Errore: ".mysqli_error($con));
Così facendo oltre ad indicarti che l'inserimento non viene eseguito, il messaggio ti da una grande mano a scovare l'errore.
Ciao!
-
Grazie alemoppo. Domani correggo e ti faccio sapere.
-
E non dimenticare gli attributi del tag input che ti salvano un sacco di lavoro, senza scomodare javascript:
Codice HTML:
<input required type="text" name="campo-cognome" />
...
<input required type="email" name="campo-email" />
-
Ok grazie dei consigli correzioni e suggerimenti. Ma se io lo volessi abbellire con i form che si vedono in ogni forum ossia con controlli diretti risposte immediate sopratutto su username, email e poi su gki altri campi anziché il rettangolo rosso come compare ora ma con un semplice disegnino a fianco degli input è fattibile ?????
-
È fattibile, ma è qualcosa che puoi aggiungere dopo, quando tutto il resto funziona. Se il resto del sito non fa niente, avere effetti speciali al momento della registrazione non è una grande vantaggio.
-
Ok spero di andare avanti da solo. Comunque grazie ancora x i consigli. Scusate se scrivo male ma è colpa della tastiera del cell. troppo piccola. Na accontentiamoci. Buona serata axtutti e a presto.
-
problemi con mysqli
Sono di nuovo io. Ho fatto le dovute correzioni che mi sono state segnalate. I tag input mi sembrano chiusi tutti quanti. Solo continua a memorizzarmi da ti in bianco:
Codice PHP:
<?php
require_once("connettimysqli.php");
require_once("data.php");
echo "</hr>";
$id = mysqli_real_escape_string($con, $id);
$nome = mysqli_real_escape_string($con, $nome);
$cognome = mysqli_real_escape_string($con, $cognome);
$username = mysqli_real_escape_string($con, $username);
echo '<div id ="messaggio">';
if(!empty($_POST)){
$query=("INSERT INTO utenti (cognome, nome, username) VALUES('$cognome','$nome','$username')");
$result=mysqli_query($con,$query);
if($result){
echo("<p> Inserimento avvenuto correttamente <p>");
} else{
echo("Inserimento non eseguito. Errore: ".mysqli_error($con));
}
}
?>
</div>
</body>
</html>
Mancano solo i controllo che debbo aggiungere e i request per fa venire il bordo rosso e il messaggio del campo. Ma se prima non risolvo la memorizzazione datii è inutile che metto tutte queste cose. Tanto per ora gira in locale.
-
Ma dentro data.php c'è una cosa così o equivalente?:
Codice PHP:
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
etc etc
?
Ciao!
-
problemi con mysqli
nel file data c'è solo il richiamo della data attuale. Niente di più Se vuoi ti mando il listato completo sta tutto in una pagina.
Codice PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Modulo Iscrizione</title>
<style type="text/css">
#intestazione{
width:100%;
height:100px;
position:absolute;
font-family: Comic Sans MS;
top:0px;
left:0px;
text-align: center;
}
#divhr {
position:absolute;
top: 100px;
font-family:Comic Sans MS;
}
#messaggio {
position:relative;
top:400px;
font-family:Comic Sans MS;
color:#ff0000;
}
</style>
<div id ="intestazione">
<H1>BENVENUTI NEL MODULO D'ISCRIZIONE</H1>
<hr>
</div>
<div id ="divhr">
<form method="POST" autocomplete ="off" action="<?php $_SERVER['PHP_SELF'] ?>">
<label for =campo-cognome"> Cognome: </label> <input type ="text" name = "cognome" />
<p> <p><label for =campo-nome"> Nome: </label> <input type ="text" name = "nome" > </p></p>
<p> <p><label for =campo-username"> Username: </label> <input type ="text" name = "username"> </p></p>
<p> <p><label for =campo-email"> E-Mail: </label> <input type ="email" name = "email"> </p></p>
<p> <p><label for =campo-ripemail"> Ripeti-Email: </label> <input type ="email" name = "ripemail"> </p></p>
<p> <p><label for =campo-password"> Password: </label> <input type ="password" name = "password"> </p></p>
<p> <p><label for =campo-rippasswrd"> Ripeti-password: </label> <input type ="password" name = "rippassword"> </p></p>
<div id = "center">
</p>
<input type="submit" name="log" value="Invio iscrizione" />
</div>
</div>
</form>
</head>
<body>
<?php
if(!isset($_POST[log])){
require_once ("connettimysqli.php");
require_once ("data.php");
echo"</hr>";
# Inizializzazioni variabili
$id = mysqli_real_escape_string($con, $id);
$cognome = mysqli_real_escape_string($con, $cognome);
$nome = mysqli_real_escape_string($con, $nome);
$username = mysqli_real_escape_string($con, $username);
$email = mysqli_real_escape_string($con, $email);
$ripemail = mysqli_real_escape_string($con, $ripemail);
$passwrod = mysqli_real_escape_string($con, $password);
$rippassword = mysqli_real_escape_string($con, $rippassword);
#Inizamo a controllare il carattere inserito per l'email che sia corretto
$ok_ko ="";
if(cognome == ""){$errore .= "Attenzione il campo è vuoto";
//controllo campi compilati
if($cognome ==""){$ok_ko .= "Attenzione: il campo nome deve essere compilato. <br> <br>";}
if($nome ==""){$ok_ko .= "Attenzione: il campo cognome deve essere compilato. <br> <br>";}
if($username ==""){$ok_ko .= "Attenzione: il campo username deve essere compilato. <br> <br>";}
if($email ==""){$ok_ko .= "Attenzione: il campo email deve essere compilato. <br> <br>";}
if($password ==""){$ok_ko .= "Attenzione: il campo password deve essere compilato. <br><br>";}
$query="INSERT INTO utenti(ncognome, nome, username, email, password) VALUES('$cognome','$nome','$username','$email','$password')";
$result=mysqli_query($con,$query);
if($result){
echo("<p> Inserimento avvenuto correttamente <p>");
} else{
echo("<br>Inserimento non eseguito");
}
} //Graffe chiusa tasto log (invio dati)
?>
</body>
</html>
Questo è la pagina iscrizione.php
-
Ma i dati $cognome $id $nome etc devi prenderli da $_POST['cognome'] $_POST['nome'] etc!
Sostituisci tutte queste:
Codice PHP:
$id = mysqli_real_escape_string($con, $id);
così:
Codice PHP:
$id = mysqli_real_escape_string($con, $_POST['id']);
Ciao!
-
Ciao alemoppo,
Sei un grande risolto il problema di tre giorni. Cavolo che cojone (scusa il termine) che so stato. Grazie. Ora memorizza correttamente e posso andare avanti con le verifiche. Qualche suggerimento per le verifiche dei campi vuoti e che siano lettere e non caratteri strani ??? Ovviamente tranne per l'email ??? Grazie ancora dell'aiuto :P Scusa, solo per verificare che siano lettere nei campi text e l'email. Il resto ho visto sopra che mi avevi scritto ieri.