problema di errore con mysql_num_rows
Salve a tutti,
Ho il seguente problema con mysql_num_rows il codice di errore è il seguente:
Citazione:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given on line 13
Questo è lo spezzone di codice. In pratica devo fare in modo di popolare la select tramire un input. Ad esempio "nazionalita", all'inizio il db è vuoto poi mano a mano si riempie e verifica se la nazionalità è stata già inserita o meno. Ovviamente se non è presente nel db c'è la possibilità d'inserirla. E questo è il codice:
Codice PHP:
<?php
require_once("connetti.php");
$q=mysql_query("SELECT nazionalitaq FROM utenti ORDER BY nazionalita");
$vuota=mysql_num_rows($q);
if($vuota > 0){//fa vedere la select solo se ci sono categorie e mostra solo il'input nuovacategoria, in pratica solo la prima volta
echo "Categoria: <select name=\"nazionalità\">";
echo "<option value=\"\">-seleziona-</option>";
while($riga=mysql_fetch_array($q)){
echo "<option value=\"".$riga['nszionalità']."\">".$riga['nazionalità']."</option>";
}//fine while
echo "</select> ";
}//fine if vuota
?>
<p> <p> Nuova categoria da inserire: <input type='text' name='nuovacategoria'> </p> </p>
Però come dicevo mi osno bloccato perchè mi da quell'errore sopra citato. Ul ultima cosa l'ho fatto con mysql e in una tabella unica che si chiama utenti anche se nell'esempio che ho ci sono tre tabelle differenti. Però a me serve in questo caso in un unica tabella. Chi mi può dare una mano cortesemente ad eliminare l'errore ??? La riga 13 che mi segnala l'erorre è la seguente:
Codice PHP:
$vuota=mysql_num_rows($q);
Dovrebbe essere trasformato tutto in mysqli perchè è legato al form d'iscrizione che sto facendo. Grazie.
problema di errore con mysql_num_rows
Ciao a tutti,
Qua di seguto posto il listato originale di quello che mi servirebbe fare. Funziona perchè l'ho verificato adesso.
[/PHP]
In pratica questo programmino oltre ad essere un archivio di riviste elettroniche (non completo e da migliorare sicuraremnte) fa in modo che all'inizio le select sono invisibili, poi mano mano che s'inseriscono i dati da input si popolano. Ovviamente se esiste già un componente, oppure una rivista o una categoria nella select lo dovrebbe segnalare.
Vorrei applicare la stessa cosa per popolare la nazionalità, la città, la prov. Però sfruttando un unica tabella ossia quella "utenti" è sempre collegato al form d'iscrizione che sto facendo ovviamente. L'unica cosa è che mi visualizza la select vuota ed invece non ci dovrebbe essere. Qualcuno mi potrebbe dare una mano per favore ??? Io ho fatto così e ci sto ancora lavorando ma mi sono imbattuto in un errore antipatico. Il listato è il seguente:
Codice PHP:
<?php
require_once("connetti.php");
$q=mysql_query("SELECT nazionalita FROM nazionalità ORDER BY nazionalita");
$vuota=mysql_num_rows($q);
if($vuota > 0){//fa vedere la select solo se ci sono categorie e mostra solo il'input nuovacategoria, in pratica solo la prima volta
echo "Nazionalità: <select name=\"nazionslità\">";
echo "<option value=\"\">-seleziona-</option>";
while($riga=mysql_fetch_array($q)){
echo "<option value=\"".$riga['nszionalità']."\">".$riga['nazionalità']."</option>";
}//fine while
echo "</select> ";
}//fine if vuota
?>
<p> <p> Nuova nazionalità da inserire: <input type='text' name='nuovanazionalità'> </p> </p>
</body>
</html>
Perc omodità l'ho fatto con il vecchio sistema (ho aperto un'altro file di prova) però deve essere fatto come sto facendo il form ossia con mysqli. Però ripeto questa è solo na prova. L'errore attuale è il segunete:
Citazione:
Warning: mysql_num_rows() expects parameter 1 to be resource at line 13
La riga 13 è la seguente:
Citazione:
$vuota=mysql_num_rows($q);
Grazie in anticipo a tutti. Volevo avvisare che ci sono degli errori di ortografia di cui non mi ero accorto ora è tutto a postoVorrei solo una mano per trasformarlo da mysql a mysqli. Grazie.
problema di errore con mysql_num_rows
Salve a tutti,
Veniamo al dunque e uniamo la prova che ho fatto al mio form, nell'inserire il campo input per la nazionalita se lo metto prima del php non mi compare la select cosa che odvrebbe comparire non ho fatto la prova inversa. Però nella memorizzazione si va a memorizzare la nazionalita su un rigo a parte e il resto nel db completo. invece a me serve che debba inserire insieme alle altre informazioni. Posto anche un immagine del risultato nel phpmyadmin.
iscrizione.php
Codice PHP:
<!--Inizio e input con selettore nazionalità-->
<?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; ?>
<p>
Nuova nazionalità da inserire: <input type='text' name='nuovanazionalita'>
</p>
<?php
require_once("connettimysqli.php");
// Legge tutte le nazionalità dalla base di dati, memorizzandole in un vettore
$nazionalita = array();
$query = "SELECT nazionalita FROM utenti ORDER BY nazionalita";
$result = mysqli_query($con, $query);
if ($result === false) {
echo "SELECT failed: " . mysqli_error($con);
}
while ($row = mysqli_fetch_assoc($result)) {
$nazionalita[] = $row['nazionalita'];
}
mysqli_free_result($result);
// Aggiunge una nuova nazionalità alla base di dati, se non è già presente
if (isset($_POST['nuovanazionalita'])) {
$nuovanazionalita = mysqli_real_escape_string($con, trim($_POST['nuovanazionalita']));
// Procede con l'inserimento solo se la nuova nazionalità non è vuota e non è già presente
if (!empty($nuovanazionalita) && !in_array($nuovanazionalita, $nazionalita)) {
$stmt = mysqli_prepare($con, "INSERT INTO utenti(nazionalita) VALUES(?)");
mysqli_stmt_bind_param($stmt, "s", $nuovanazionalita);
mysqli_stmt_execute($stmt);
$nazionalita[] = $nuovanazionalita;
sort($nazionalita);
}
}
?>
Come potete vedere ho dovuto richiamare la connessione al db sennò mi dava un sacco di errori. Quetso è ciò ch emi si presenta memorizzato:
http://s33.postimg.org/7erwly1fj/ris...phpmyadmin.png
Spero che qualcuno mi possa risolvere tale problema. Grazie.
problema di errore con mysql_num_rows
Salve a tutti,
Spero che vada bene la prosecuzione. Ho un piccolo problema. Eseguendo questa query:
Riga: 95
Citazione:
$checknazionalita= $mysqli -> query("SELECT nazionalita FROM utenti WHERE nazionalita='$nazionalita'");
Mi da il seguente errore:
Citazione:
Fatal error: Call to a member function query() on null at line 95
la riga 95 è quella sopra citata.
Il codice completo è il seguente:
Codice PHP:
#$query = "SELECT nazionalita FROM utenti";
$checknazionalita= $mysqli -> query("SELECT nazionalita FROM utenti WHERE nazionalita='$nazionalita'");
$result = mysqli_query($con, $checknazionalita);
$nazionalite = [];
$vuota=mysqli_num_rows($checknazionalita);
if($vuota > 0){
while ($f = mysqli_fetch_assoc($result)){
print_r($f);
}
}
echo mysqli_connect_errno();
?>
<select name="nazionalita">
<option value="">Scegli nazionalità</option>
<?php
foreach($nazionalite as $key => $val){
echo "<option>".$val."</option>";
}
I campi e il db esistono. Spero che qualcuno di voi ne venga a capo . Grazie. Gli esempi l'ho presi dal sito inglese per trasformare mysql in mysqli (speravo che andassero bene ma a quanto pare no).
problema di errore con mysql_num_rows
Niente da fare, ho provato a seguire gli esempi ma mi sono incasinato sempre di più. Questo è lo spezzone di codice chsicuramente sarà un gran casino (scusate il termine). Spero che qualcuno me lo possa correggere da evere un esempio per le prossime volte valido per tutti. Grazie.
iscrizione.php
contrllo esistenza nazionalità:
Codice PHP:
#$query = "SELECT nazionalita FROM utenti";
$checknazionalita= mysqli_query($con, "SELECT nazionalita FROM utenti WHERE nazionalita='$nazionalita'");
$result = mysqli_query($con, $checknazionalita);
$nazionalite = [];
$vuota=mysqli_num_rows($con,$checknazionalita);
if($vuota > 0){
while ($f = mysqli_fetch_assoc($checknazionalità)){
print_r($f);
}
}
echo mysqli_connect_errno();
?>
<select name="nazionalita">
<option value="">Scegli nazionalità</option>
<?php
foreach($nazionalite as $key => $val){
echo "<option>".$val."</option>";
?>
gli errori sono i seguenti:
Citazione:
Warning: mysqli_query() expects parameter 1 to be mysqli, null at line 94
Warning: mysqli_query() expects parameter 1 to be mysqli, null at line 96
Warning: mysqli_query() expects parameter 1 to be mysqli, null at line 99
riga 94:
Codice PHP:
$checknazionalita= mysqli_query($con, "SELECT nazionalita FROM utenti WHERE nazionalita='$nazionalita'");
riga 96
Codice PHP:
$result = mysqli_query($con, $checknazionalita);
riga 99:
Codice PHP:
$vuota=mysqli_num_rows($con,$checknazionalita);
Spero in voi grazie.
problema di errore con mysql_num_rows
Salve a tutti,
Gli errori sussistono sempre. Ho modificato alcune righe suggeritomi da mzanella (vedere post #24), ma sono cambiate solo le righe degli errori ossia questi sono i seguenti errori:
Citazione:
Warning: mysqli_query() expects parameter 2 to be string, object at line 95
Warning: mysqli_num_rows() expects exactly 1 parameter, 2 given at line 98 0
Riga 95:
Codice PHP:
$result = mysqli_query($con, $checknazionalita);
Riga 98:
Codice PHP:
$vuota=mysqli_num_rows($con,$checknazionalita);
Questo è il listato completo:
Codice PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Modulo Iscrizione</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;
}
#divhr {
position:absolute;
top: 100px;
font-family:Comic Sans MS;
}
#messaggio {
position: absolute;
top: 480px;
font-family:Comic Sans MS;
}
</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'] ?>">
<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>
Selezionare la data di nascita:
<?php
// 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> ";
// mese
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> ";
// 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>";
//controlla l'inserimento della data che sia corretta
if (!checkdate($input['mese'], $input['giorno'], $input['anno'])) {
$errore = "Data non valida";
}
#Inizio e input con selettore nazionalità
require_once("connettimysqli.php");
#$query = "SELECT nazionalita FROM utenti";
$checknazionalita= mysqli_query($con, "SELECT nazionalita FROM utenti WHERE nazionalita='$nazionalita'");
$result = mysqli_query($con, $checknazionalita);
$nazionalite = [];
$vuota=mysqli_num_rows($con,$checknazionalita);
if($vuota > 0){
while ($f = mysqli_fetch_assoc($checknazionalità)){
print_r($f);
}
}
echo mysqli_connect_errno();
?>
<select name="nazionalita">
<option value="">Scegli nazionalità</option>
<?php
foreach($nazionalite as $key => $val){
echo "<option>".$val."</option>";
?>
<p> <p><label for =campo-username"> Username: </label> <input type ="text" name = "username" required/> </p></p>
<p> <p><label for =campo-email"> E-Mail: </label> <input type ="email" name = "email" required/> </p></p>
<p> <p><label for =campo-ripemail"> Ripeti-Email: </label> <input type ="email" name = "ripemail" required/> </p></p>
<p> <p><label for =campo-password"> Password: </label> <input type ="password" name = "password" required/> </p></p>
<p> <p><label for =campo-rippassword"> Ripeti-password: </label> <input type ="password" name = "rippassword" required/> </p></p>
<div align ="center">
<input type="submit" name="reg" value="Invio Iscrizione" />
</div>
</div>
</form>
</head>
<body>
<?php
require_once ("connettimysqli.php");
require_once ("data.php");
echo"</hr>";
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']);
// formazione dei tre select:
echo '<div id ="messaggio">';
#Inizamo a controllare il carattere inserito per l'email che sia corretto
$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>
Le inizializzazxioni delle variabili ci sono ma prima viene l'html sarà quello il problema ???? Spero di venirne a capo con l'aiuto vostro. Grazie.
problema di errore con mysql_num_rows
Visto che più di tot caratteri altavista non mi permette di srcivere di seguito vi mostro il file:
connettimysqli.php
Codice PHP:
<?php
$ip = $_SERVER['SERVER_ADDR'];
if(substr($ip,-7,3) == '150'){
$host = 'xxx.xxx.xxx.xxx';
$user = 'xxx';
$password = 'xxxx';
$db = 'xxx';
/* $con= new mysqli($host, $user, $password, $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 "<h1>Ti sei connesso al database"." ". $db. " "."da Roma.... Complimenti"." "."Il tuo indirizzo ip del server è:"." ". $ip;
echo"</h1>";
}
}
else if(substr($ip,-7,3) == '168'){
$host = 'xxx.xxx.xxx.xxx';
$user = 'xxx';
$password = 'xxx';
$db = 'xxx';
$con= new mysqli($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 "<h1>Ti sei connesso al database"." ". $db. " "."da Anzio.... Complimenti"." "."Il tuo indirizzo ip del server è:"." ". $ip;
echo"</h1>";
}
}
?>
Alla sostituzione dell'host c'è il mio indirzzo ip del nas.
problema di errore con mysql_num_rows
Allora ho apportato delle modifche seguendo i vari esempi che sono presenti sia sulla guida ufficiale di mysql e sia in un sito inglese. Queste sono le modifiche apportate è solo na parte. Inutilre postare l'intero listato. Se vi occore per capire megliobastao chiedermelo.
modifiche apportate:
Codice PHP:
$checknazionalita="SELECT nazionalita FROM utenti WHERE nazionalita='$nazionalita'";
if ($result = mysqli_query($con, $checknazionalita)) {
# $result = mysqli_query($con, $checknazionalita);
#$nazionalite = [];
$vuota=mysqli_num_rows($result);
if($vuota > 0){
while ($f = mysqli_fetch_assoc($result)){
print_r($f);
}
}
}
Quello che mi si presenta a video è il seguente risultato:
Citazione:
Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) Array ( [nazionalita] => ) 0
E' come se ci fosse un array nvuoto. Ma l'array l'ho messo come commento, va reinserito in questo caso ???? Bohh sono nelle vostre mani grazie e scusate il disturbo.