problemi di errore con mysql_num_rows
Grazie dell'incoraggiamento. Mi ero un pò avvilito a dire il vero. Continuerò ovviamente.
problema di errore con mysql_num_rows
Ciao mzanella,
Mi spiace richiedere aiuto ma purtroppo trovo difficoltà. Qui di seguito ti posto l'intero listato. C'è qualcosa di sbagliato così come l'ho impostato io:
iscrizione.php
Codice PHP:
<DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
body {
background-color:#333;
color:#FFF;
font-family:Comic Sans MS;
font-size:20px;
}
#intestazione{
width:100%;
height:100px;
position:absolute;
font-family: Comic Sans MS;
top:0px;
left:0px;
text-align: center;
}
#posdata {
position: fixed;
top: -10px;
font-family:Comic Sans MS;
}
#divhr {
position:absolute;
top: 100px;
font-family:Comic Sans MS;
}
#messaggio {
position: absolute;
top: 480px;
font-family:Comic Sans MS;
}
#posselectgiorno{
position: absolute;
top: 226px;
left: 410px;
font-family:Comic Sans MS;
}
#posselectmese{
position: fixed;
top: 216px;
left: 525px;
font-family:Comic Sans MS;
}
#posselectanno{
position: fixed;
top: 216px;
left: 625px;
font-family:Comic Sans MS;
}
#posnazionalita{
position: absolute;
top: 145px;
left: 0px;
font-family:Comic Sans MS;
}
#posinsnazionalità {
position: absolute;
top: 145px;
left: 1000px;
font-family:Comic Sans MS;
}
#posusername{
position: absolute;
top: 185px;
left: 0px;
font-family:Comic Sans MS;
}
#posemail{
position: absolute;
top: 235px;
left: 0px;
font-family:Comic Sans MS;
}
#posripemail{
position: relative;
top: 140px;
left: 0px;
font-family:Comic Sans MS;
}
#pospassword{
position: absolute;
top: 335px;
left: 0px;
font-family:Comic Sans MS;
}
#posripassword{
position: absolute;
top: 385px;
left: 0px;
font-family:Comic Sans MS;
}
#postasto {
position: relative;
left: 600px;
top:285px;
}
</style>
</head>
<body>
<div id ="intestazione">
<H2>BENVENUTI NEL MODULO D'ISCRIZIONE</H2>
<hr>
</div>
<div id ="divhr">
<form method="POST" autocomplete ="off" action="<?php $_SERVER['PHP_SELF'] ?>">
<p> <p> <p>
<label for =campo-cognome"> Cognome: </label> <input type ="text" name = "cognome" required />
</p> </p> </p>
<p> <p><label for =campo-nome"> Nome: </label> <input type ="text" name = "nome" required/> </p></p>
Seleziona la data di nascita (gg/mm/aaaa):
<?php
//Posizionamento delle tre select giorno, mese anno
// formazione dei tre select:
// giorno
echo '<select name="giorno">';
echo '<option value="">Scegli giorno: </option>';
for($i=1;$i<32;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
echo"</select> ";
#echo "</div>";
// mese
#echo '<div id = "posselectmese">';
echo '<select name="mese">';
echo '<option value="">Scegli mese: </option>';
for($i=1;$i<13;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
echo"</select> ";
#echo "</div>";
// anno
#echo '<div id = "posselectanno">';
// anno
echo '<select name="anno">';
echo '<option value="">Scegli anno: </option>';
for($i=1920;$i<2012;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
echo "</select>";
#echo "</div>";
//controlla l'inserimento della data che sia corretta
if (!checkdate($input['mese'], $input['giorno'], $input['anno'])) {
$errore = "Data non valida";
}
?>
<div id = "posnazionalita">
<!--<p> <p> Seleziona la nazionalità: </p></p>-->
<p> <p> <label for =campo-nazionalita"> Nazionalità: </label> <input type ="text" name = "nazionalita" required/> </p></p>
</div> <!--chiude il div posnazionalita-->
<!--Comapre e scompare se il campo nazionalità ha almeno un record inserito-->
<?php
//Inserimento campo nazionalità e la select
$checknazionalita="SELECT DISTINCT nazionalita FROM utenti ORDER BY nazionalita";
$result = mysqli_query($con, $checknazionalita);
if ($result === false) {
echo "ERROR: " . mysqli_error($con);
}
$nazionalite = array();
while ($row = mysqli_fetch_assoc($result)) {
$nazionalite[] = $row['nazionalita'];
}
?>
<?php if (!empty($nazionalita)): ?>
<select name="nazionalita">
<option value="">-seleziona-</option>
<?php foreach ($nazionalita as $entry): ?>
<option value="<?= $entry ?>"><?= $entry ?></option>
<?php endforeach; ?>
</select>
<?php endif; ?>
<div id = "posusername">
<p> <p> <label for =campo-username"> Username: </label> <input type ="text" name = "username" required/> </p></p>
</div> <!--chiude il div posusername-->
<div id = "posemail">
<p> <p> <label for =campo-email"> Email: </label> <input type ="text" name = "email" required/> </p></p>
</div> <!--chiude il div posemail-->
<div id = "posripemail">
<p> <p> <label for =campo-ripemail">Ripeti-Email: </label> <input type ="text" name = "ripemail" required/> </p></p>
</div> <!--chiude il div posripemail-->
<div id = "pospassword">
<p> <p> <label for =campo-password"> Password: </label> <input type ="password" name = "password" required/> </p></p>
</div> <!--chiude il div posemail-->
<div id = "posripassword">
<p> <p> <label for =campo-ripemail">Ripeti-Password: </label> <input type ="password" name = "rippassword" required/> </p></p>
</div> <!--chiude il div posrippassword-->
<!--Posizionamento del tasto "Invio dati al centro"-->
<!-- <input type="submit" name="reg" value="Invio Iscrizione" />-->
<div id ="postasto">
<input type="submit" name="reg" value="Invio dati" id="submit" />
</div>
</div>
</form
<?php
require_once("connettimysqli.php");
echo '<div id = "posdata">';
require_once("data.php");
echo"</hr>";
#Controllo tasto "Invio dati"
if(!empty($_POST)){
# Inizializzazioni variabili
$id = mysqli_real_escape_string($con, $_POST['id']);
$cognome = mysqli_real_escape_string($con, $_POST['cognome']);
$nome = mysqli_real_escape_string($con, $_POST['nome']);
$giorno = mysqli_real_escape_string($con, $_POST['giorno']);
$mese = mysqli_real_escape_string($con, $_POST['mese']);
$anno = mysqli_real_escape_string($con, $_POST['anno']);
$nascita = sprintf("%04d%02d%02d", $anno, $mese, $giorno);
$nazionalita = mysqli_real_escape_string($con, $_POST['nazionalita']);
$citta = mysqli_real_escape_string($con, $_POST['citta']);
$prov = mysqli_real_escape_string($con, $_POST['prov']);
$username = mysqli_real_escape_string($con, $_POST['username']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$ripemail = mysqli_real_escape_string($con, $_POST['ripemail']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$rippassword = mysqli_real_escape_string($con, $_POST['rippassword']);
# Inserimento dati nella tabella utenti
$query=("INSERT INTO utenti (cognome, nome, nascita, nazionalita, username, email, password) "
. "VALUES('$cognome','$nome','$nascita','$nazionalita','$username','$email','$password')");
$result=mysqli_query($con,$query);
if($result){
echo("<p> Inserimento avvenuto correttamente <p>");
} else{
echo("Inserimento non eseguito. Errore: ".mysqli_error($con));
}
}
?>
</body>
</html>
Ci potresti dare un'occhiata e correggermi dove sbaglio per favore ??? Grazie e scusami per il disturbo.
problema di errore con mysql_num_rows
Allora il tutto funziona alla grande complimenti solo un errore. Sei promosso :P scherzo. Però c'è sempre il fatto della nazionalità che non mi visualizza la select benchè nel db siano presenti 5 nominativi con la stessa nazionalità ??? Come si può risolvere secondo te ???? Grazie.
problema di errore con mysql_num_rows
Ciao mzanella,
Scusa se ti rispondo solo ora ma mi sono accorto che non mierano arrovate le notifiche e non sentendoti più, mi sono detto controlliamo se c'è qualche messaggio nuovo e difatti c'era il tuo messaggio del: 03/06/2016. intanto ti ringrazio per avermi fornito la soluzione che ovviamente la provo suibito. Inoltre ti volevo chiedere cosa intendi per "gli attributi id nell'input e nella select" anche sua mezza idea c'è l'ho. Ti faccio sapere se tutto è ok, ma spero di si.
problema di errore con mysql_num_rows
Ciao mzanella,
Questo è quello che ho combinato. La select si vede benchè ho eliminato la tabella utenti e rifatta da capo. Il punto è che la select compare anche se non ci sono prensenti i dati, ovviamente risulta vuota. Ma anche inserendo i dati ottengo sempre lo stesso risultato, ossia lista vuota. Non capisco pripro dove sbaglio. Puoi dare un occhiata al codice per favore ??? L'ho ripostato tutto in quanto è un po' sparpagliato.
Codice PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Modulo d'iscrizione</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
</body>
<DOCTYP<?php
////////////////////////////////////////////////////////////////////////
// Connessione alla base di dati
// NOTA: La connessione è disponibile nella variabile globale $con
require_once("connettimysqli.php");
require_once("data.php");
////////////////////////////////////////////////////////////////////////
// Controllo su dati inviati dal form
// Se sono stai inviati dei dati, la richiesta di inserimento di un utente
// viene elaborata
if (!empty($_POST)) {
// Lettura e validazione dei parametri
$id = mysqli_real_escape_string($con, $_POST['id']);
$cognome = mysqli_real_escape_string($con, $_POST['cognome']);
$nome = mysqli_real_escape_string($con, $_POST['nome']);
$giorno = mysqli_real_escape_string($con, $_POST['giorno']);
$mese = mysqli_real_escape_string($con, $_POST['mese']);
$anno = mysqli_real_escape_string($con, $_POST['anno']);
$nazionalita = mysqli_real_escape_string($con, $_POST['nazionalita']);
$citta = mysqli_real_escape_string($con, $_POST['citta']);
$prov = mysqli_real_escape_string($con, $_POST['prov']);
$username = mysqli_real_escape_string($con, $_POST['username']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$ripemail = mysqli_real_escape_string($con, $_POST['ripemail']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$rippassword = mysqli_real_escape_string($con, $_POST['rippassword']);
// Controlla che la data inserita sia valida e la codifica nel formato aaaammgg
if (!checkdate($mese, $giorno, $anno)) {
echo "<p><strong>Errore</strong>: Data non valida</p>";
}
$nascita = sprintf("%04d%02d%02d", $anno, $mese, $giorno);
// Inserimento nella tabella utenti
$query = "INSERT INTO utenti (cognome, nome, nascita, nazionalita, username, email, password) "
. "VALUES('$cognome','$nome','$nascita','$nazionalita','$username','$email','$password')";
$result = mysqli_query($con, $query);
if ($result !== false) {
echo "<p>Inserimento avvenuto correttamente<p>";
} else {
echo "<p>Inserimento non eseguito.<br />";
echo '<strong>Errore</strong>: '.mysqli_error($con).'</p>';
}
}
?>
<DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/JavaScript">
function update_nazionalita() {
var select = document.getElementById("select_nazionalita");
var input = document.getElementById("input_nazionalita");
input.value = select.value;
}
</script>
</head>
<body>
<div id="intestazione">
<h2>BENVENUTI NEL MODULO D'ISCRIZIONE</h2>
<hr>
</div>
<div id="divhr">
<form method="POST" autocomplete="off" action="<?php $_SERVER['PHP_SELF'] ?>">
<!-- Cognome -->
<p>
<label for="campo-cognome">Cognome: </label>
<input type="text" name="cognome" required />
</p>
<!-- Nome -->
<p>
<label for="campo-nome">Nome: </label>
<input type="text" name="nome" required />
</p>
<!-- Data di nascita -->
Seleziona la data di nascita (gg/mm/aaaa):
<!-- Giorno -->
<select name="giorno">
<option value="">Scegli giorno: </option>
<?php for ($i = 0; $i < 32; $i++): ?>
<option value="<?= $i ?>"><?= $i ?></option>;
<?php endfor; ?>
</select>
<!-- Mese -->
<select name="mese">
<option value="">Scegli mese: </option>
<?php for ($i = 1; $i < 13; $i++): ?>
<option value="<?= $i ?>"><?= $i ?></option>
<?php endfor; ?>
</select>
<!-- Anno -->
<select name="anno">
<option value="">Scegli anno: </option>
<?php for ($i = 2012; $i >= 1920; $i--): ?>
<option value="<?= $i ?>"><?= $i ?></option>
<?php endfor; ?>
</select>
<!-- Nuova nazionalità (non presente nella lista) -->
<div id = "posnazionalita">
<p>
Inserire la nazionalità: <input type="text" name="nazionalita" id="input_nazionalita" required/>
<select name="nazionalita" id="select_nazionalita" onchange="update_nazionalita()">
</p> </select> </div>
<!-- Nazionalità (lista di nazionalità già inserite, non compare se vuota) -->
<?php
// Lettura nazionalità presenti nella base di dati
$checknazionalita = "SELECT DISTINCT nazionalita FROM utenti ORDER BY nazionalita";
$result = mysqli_query($con, $checknazionalita);
if ($result === false) {
echo "<strong>Errore</strong>: " . mysqli_error($con);
}
$nazionalite = array();
while ($row = mysqli_fetch_assoc($result)) {
$nazionalite[] = $row['nazionalita'];
}
?>
<?php if (!empty($nazionalite)): ?>
<select hidden="true" name="nazione"
<option value="">-seleziona-</option>
<?php foreach ($nazionalite as $entry): ?>
<option value="<?= $entry ?>"><?= $entry ?></option>
<?php endforeach; ?>
</select>
<?php endif; ?>
<!-- Nome utente -->
<div id="posusername">
<p>
<label for="campo-username">Username: </label>
<input type="text" name="username" required/>
</p>
</div>
<!-- Email -->
<div id="posemail">
<p>
<label for="campo-email">Email: </label>
<input type="text" name="email" required/>
</p>
</div>
<!-- Ripeti email -->
<div id="posripemail">
<p>
<label for="campo-ripemail">Ripeti-Email: </label>
<input type="text" name="ripemail" required/>
</p>
</div>
<!-- Password -->
<div id="pospassword">
<p>
<label for="campo-password">Password: </label>
<input type="password" name="password" required/>
</p>
</div>
<!-- Ripeti password -->
<div id="posripassword">
<p>
<label for="campo-ripemail">Ripeti-Password: </label>
<input type="password" name="rippassword" required/>
</p>
</div>
<div align ="center">
<input type="submit" name="reg" value="Invio dati" id="submit" />
</div>
</form>
</div>
<?php
echo "</hr>";
?>
</body>
</html>
Grazie.