Ciao Fabio,
Lasciando perdere la cazzatine di html che non è neanche un linguaggio di programmazione parliamo di cose serie.
Stai iniziando adesso e permettimi di darti dei suggerimenti, programmando per lavoro, una cosa che riscontro puntualmente è il disordine che usano molti programmatori o inutilità di programmazione, se c'è una cosa che il PHP esige è ORDINE e SOLO IL CODICE CHE SERVE, ho visto di codici che fanno dei giri che non servono a niente, un disordine sproporzionato ed una ridondanza assurda.
Non te la prendere se cerco di consigliarti e critico alcune cose del tuo codice, però non posso non dirtele, stai prendendo una brutta abitudine e cioè fare del php all'interno di html, questo lo fa wordpress chi programma veramente non lo fa MAIIIIIIII, io odio gli injection di codice mescolato tra php, javascript e html se non STRETTAMENTE NECESSARIO.
Un progetto di dati fatto come DIO comanda non esige assolutamente una mescolanza tra php e html, il tuo codice non ha bisogno di fare tutto nella stessa pagina(fai un minestrone in questo modo), hai usato una form ed hai messo la action vuota, che senso ha?
Se usi la form metti un link di invio .php ed in quella pagina fai tutto quello che devi fare cioè connessione controlli e salvataggio, la connessione se vuoi puoi lasciarla in require, ma non devi mettere nella stessa pagina html e php, ti stai abituando male, fidati.
Io lo facevo anni fa, poi sono andato a rivedere i miei progetti e dico certo che ero proprio una pippa...Adesso vedi il weblog, tutto in mvc tutto separato e tutto gestito... ;)
Quindi venendo a noi, ti ho rimesso in ordine il codice, HO LASCIATO TUTTO NELLA STESSA PAGINA PERO' TI HO MESSO DEI COMMENTI, leggi bene i commenti ed il codice e guarda quello che ho fatto.Ho lasciato la connessione ed ho unito e aggiustato il codice e ordinato, ANCHE SE NON E' ORDINATO PERCHE' DEVI CREARE UN FILE NUOVO DI SOLO PHP (CHE PER ESEMPIO PUOI CHIAMARE convalidaSalvataggio.php)E NEL FILE HTML METTI FORM action="convalidaSalvataggio.php", PERO' per come lo hai impostato tu cioè tutto su una pagina io te l'ho ordinato, andiamo per gradi altrimenti è un casino :)
Ciao provalo e vedrai che salva...leggi bene e cerca di capire gli errori.
DEVI SOLO INSERIRE NEL PHP LA TUA PASSWORD ED IL NOME DEL DB MENTRE LA TABELLA E' LA TABELLA utenti con campi cognome, nome.Ciauuu
Codice PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action= '' method="POST">
<font face="Comic Sans MS">
<label for="nome">Nome :</label>
<input type="text" name="nome" maxlength="30" size ="32"> <br> <br>
<label for="cognome">Cognome :</label>
<input type="text" name="cognome" maxlength="30" size ="32"> <br> <br>
<div align ="center">
<p> <p>
<input type="submit" value="Invia" name="memo">
</p> </p>
</p> </p>
</div>
</form>
</body>
</html>
<?php
$host = 'localhost';
$user = 'fabio';
$password = 'TUA PASSWORD';
$db = 'TUO DB';
$con=mysqli_connect($host, $user, $password, $db);
if (!$con) {
die ('Non riesco a connettermi: ' . mysqli_connect_errno());
}
$mysqli_db_selected = mysqli_select_db($con, $db);
if (!$mysqli_db_selected) {
die ("Errore nella selezione del database: " . mysqli_connect_errno());
}
else
{
echo'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
echo 'Ti sei connesso al db. complimenti !!!'." ". "Nome db: ".$db;
}
//Perchè usare empty $_POST?? la logica sta nel dire al codice
//SE IL BOTTONE INVIA E' STATO PREMUTO E NON SE LE VARIABILI NON SONO VUOTE,
//PERCHE' IL VUOTO E' UN CONTROLLO CHE DEVE FARE IL PROGRAMMATORE,
//POTREBBE ESSERE OBBLIGATORIO IL NOME MA NON IL COGNOME
//IN QUESTO MODO TI ABITUI AD UNA LOGICA SBAGLIATA PERCHè DICENDO
//IF EMPTY $_POST NON TI DAI LA POSSIBILITA' DI GESTIRE UNA VARIABILE
//CHE PUO' ANCHE ESSERE VUOTA.
//QUINDI COMMENTIAMO IF EMPTY ED USIAMO IF ISSET BOTTONE INVIA CIOE' SE E'
//SETTATO IL BOTTONE INVIA E LASCIAMO IL CODICE HTML E PHP NELLA STESSA PAGINA
//if(!empty($_POST)){
if (isset($_POST['memo'])){
$nome = trim($_POST['nome']);
$cognome = trim($_POST['cognome']);
//CONTROLLIAMO CHE NOME E COGNOME SIANO VALORIZZATI E DIVERSI DA VUOTI
if ($nome == "" || $cognome == ""){
print 'Nome e cognome devono essere valorizzati';
exit;
}
//DOMANDA E SE IO UTENTE TI INSERISCO NEL NOME UN NUMERO?DEVI FARE I CONTROLLI ANCHE CHE
//NOME E COGNOME IS_NUMERIC
//QUI E' GIUSTO PERO' TU STAI INVIANDO IN UTF8 NON IN ISO QUINDI LA STRINGA VA RISCRITTA
//$nome = iconv('ISO-8859-1', 'UTF-8', $nome);
//$cognome = iconv('ISO-8859-1', 'UTF-8', $cognome);
//VA RISCRITTA IN QUESTO MODO:
$nome = iconv('UTF-8', 'ISO-8859-1', $nome);
$cognome = iconv('UTF-8', 'ISO-8859-1', $cognome);
//MENTRE QUANDO FARAI LA SELECT DAL DB PER PORTARE I DATI SUL WEB USERAI LA TUA STRINGA
//$nome = iconv('ISO-8859-1', 'UTF-8', $nome);
//$cognome = iconv('ISO-8859-1', 'UTF-8', $cognome);
//LA QUERY NON E' GIUSTA MA RICORDA CHE ALCUNE VOLTE PHPMYADMIN E CASE SENSITIVE
//QUINDI TABELLA E CAMPI DEVONO ESSERE SCRITTI CON LE STESSE MAIUSCOLE O MINUSCOLE
//e poi perchè passare i nome e cognome in quel modo con i .$nome e punto cognome
// e doppie virgolette?
//basta passarli nel seguente modo
$query=("INSERT INTO utenti (cognome,nome) VALUES('$cognome','$nome')");
//QUESTO PERO' NON E' GIUSTO ABBIAMO USATO MYSQLI QUINDI USIAMO MYSQLI
//IMPARA PER ADESSO IL PROCEDURALE MA USA QUANTO PRIMA LE CLASSI
//COMMENTIAMO IL VECCHIO RESULT
//$result=@mysql_query($query) or die("Error query DataBase:".mysql_error());
//E LO CAMBIAMO IN QUESTO
$result=mysqli_query($con, $query) or die("Error query DataBase:".mysql_error());
if($result){
echo("<p> Inserimento avvenuto correttamente </p>");
} else{
echo("<p>Inserimento non eseguito </p>");
}
}
?>