problemi ricerca record con mysqli

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,


Auguri e buon anno a tutto lo staff. Vengo subito al dunque. Ho iniziato a cimentarmi con la programmazione mysqli. La connessione al db me la fa regolarmente, anche l'inserimento di dati me lo fa regolarmente. L'unica cosa che non sono riuscito a fare è la verifica in contemporanea dei dati inseriti. Prima ero riuscito a farla con mysql, ora con l'integrazione di mysqli non riesco più a farla. dato due campi:

1) username

2) password

Mentre sto scrivendo lo username mi dovrebbe comparire o una "V" che sta per libero o una "X" che sta per occupato sia sullo username che sulla password. Ho questo codice qua che ho modificato e preso dal manuale php:

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once("connettimysqli.php");
       
 
#Controlla se esiste l'email nel db

   # $checkemail=mysql_query("SELECT email FROM uty WHERE email='$email'");

 $checkemail = $mysqli->query("SELECT email FROM uty WHERE email='$email'");
 
$vuota=$checkmail->mysqli_num_rows($checkemail);
if($vuota > 0){
	echo '<img src="X-ICONA.png" alt="Icona OK" width="15" height="15">';

}else {
        #    echo "Questo username che hai scelto è perfetto!"; 
        echo '<img src="V-ICONA.jpg" alt="Icona KO" width="15" height="15">';
    }
?>

Ma sembra non andare dove sbaglio ??? Mi potete aiutare per favore ???? Grazie.
 
ciao

Ciao edin,

Grazie lo provo subito e ti dico il risultato. Ho fatto così pensi che possa nadare ben ???? Se c'è da correggere fai pure:

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once("connettimysqli.php");
       
 
#Controlla se esiste l'email nel db

   # $checkemail=mysql_query("SELECT email FROM uty WHERE email='$email'");

 
 $checkemail = $con->query("SELECT email FROM uty WHERE email = '$email' ")
 
         if($vuota=$checkemail->num_rows) {

	echo '<img src="X-ICONA.png" alt="Icona OK" width="15" height="15">';

}else {
        #    echo "Questo username che hai scelto è perfetto!"; 
        echo '<img src="V-ICONA.jpg" alt="Icona KO" width="15" height="15">';
    }
?>
 
Ultima modifica:
problea inserimento dati

Allora non va,

Ti posto la squela dei file, così magari in due si riesce a trovare cosa c'è che non gli piace.

iscrizione.html

PHP:
<html>
    <head> 
        <script src='http://code.jquery.com/jquery-1.9.1.min.js'></script>
        <script type="text/javascript"> 
            $(document).ready(function() { $("input").keyup(function(){ 
                    var id = this.id; 
                    $.ajax({ type: "POST", 
                        url: "checkdate.php", 
                        data: id+"="+this.value, 
                        success: function(response){ 
                            $("#check_" + id).html(response); 
                        } 
                    });
                }); 
            });
        </script> 
    </head> 
    <body> 
        <div align ="center">
            <h2>Esempio form di registrazione</h2> 
        </div> 
        <form action="salvadati.php" method="POST">
   
                <label>
                    Username: <input type="text" name="username" id="username"/>
                    <span id="check_username"></span>
                </label> 
            
           
                <label>
                    <p> <p>
                    E-Mail: <input type="text" name="email" id="email"/>
                    <span id="check_email"></span>
                    </p> </p>
                </label> 
            
            <div align ="center">
              <input type="submit" value="Invia dati">
              
            </div> 
        </form> 
    </body>
</html>

checkdate.php

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once("connettimysqli.php");
       
 
#Controlla se esiste l'email nel db

   # $checkemail=mysql_query("SELECT email FROM uty WHERE email='$email'");

 
 $checkemail = $con->query("SELECT email FROM uty WHERE email = '$email' ")
 
         if($vuota=$checkemail->num_rows) {     //su questa riga mi da errore

	echo '<img src="X-ICONA.png" alt="Icona OK" width="15" height="15">';

}else {
        #    echo "Questo username che hai scelto è perfetto!"; 
        echo '<img src="V-ICONA.jpg" alt="Icona KO" width="15" height="15">';
    }

salvadati.php

PHP:
<?php
include 'connettimysqli.php';

// Lancio una query per inserire tre righe nella tabella
$successo = $con->query("INSERT INTO uty (username, email) VALUES ('$username', '$email')"); 

// controllo l'esito della query
if ($successo) {#se va bene....
	echo 'Dati inseriti correttamente';
}
else {
	echo 'Errore nella query';
}?>


Dove sbaglio ???? L'inserimento dati dovrebbe avvenire sincrono, ossia appena digiti lo username el'email mi dovrebbe segnalare se esiste o meno nel db.
 
problea inserimento dati

appunto

prendi prima il valore e poi passi alla condizione IF

PHP:
$vuota=$checkemail->num_rows;
if($vuota>0)
{
//
}
opppure:
PHP:
if($checkemail->num_rows >0)
{
//
}


Ciao,

Ho provato il tuo codice, ma sulla seguente riga mi da errore:

PHP:
      require_once("connettimysqli.php");
       
 
#Controlla se esiste l'email nel db

   # $checkemail=mysql_query("SELECT email FROM uty WHERE email='$email'");

 
 $checkemail = $con->query("SELECT email FROM uty WHERE email = '$email' ")
 if($checkemail->num_rows >0){ 
    echo '<img src="X-ICONA.png" alt="Icona OK" width="15" height="15">';

}else {
        #    echo "Questo username che hai scelto è perfetto!"; 
        echo '<img src="V-ICONA.jpg" alt="Icona KO" width="15" height="15">';
    }

    ?>

Qua mi segnala errore il compilatore:

PHP:
if($checkemail->num_rows >0){


Non capisco dove sta anche se ci metto if separato con la variabile vuota mi da lo stesso errore. Ossia questa:

PHP:
$vuota=$checkemail->num_rows;
if($vuota>0)
{
//
}
 
prova a verificare la query:
PHP:
if($checkemail = $con->query("SELECT email FROM uty WHERE email = '$email' ") )
{

echo $checkemail->num_rows;
}

se tutto ok ti deve stampare un'intero del totale record trovati
 
Quindi ti dovrebbe dare la visualizzazione dell'icona:
PHP:
if($checkemail = $con->query("SELECT email FROM uty WHERE email = '$email' ") )
{

if($checkemail->num_rows > 0)
    {
       echo '<img src="X-ICONA.png" alt="Icona OK" width="15" height="15">';
     }
    else {
            echo "Questo username che hai scelto è perfetto!"; 
            echo '<img src="V-ICONA.jpg" alt="Icona KO" width="15" height="15">';
          } 
}
 
problea inserimento dati

Ciao,

Inoltre volevo approfittare perchè jho provato ad unire i campi in un'unica query con l'operatore AND, ma sembra che ad uno lettera o numero che ci metto, mi dia una "X" di occupato cosa che in realtà non lo è. Questo è il li8stato modificato con l'operatore AND:

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once("connettimysqli.php");
       
 
#Controlla se esiste l'email nel db

  
if($checkemail = $con->query("SELECT email FROM uty WHERE email = '$email' OR username='$username'")){


$vuota=$checkemail->num_rows;
if($vuota>0){ 
echo '<img src="X-ICONA.png" alt="Icona OK" width="15" height="15">';

}else {
        #    echo "Questo username che hai scelto è perfetto!"; 
echo '<img src="V-ICONA.jpg" alt="Icona KO" width="15" height="15">';
}
}
?>
 
ciao

Ciao edin,

Da come puoi vedere l'intero codice che ho postato, purtroppo non c'è nessun focus su nessun campo. E la chiama al server se tu intendi il collegamento di ajax oossia alla pagina checkdate.php, si avviene soio una volta. Sto su ubuntu e non posso ripostare il codice perchè non ho l'accesso al nas (synology), dove lavoro.
 
Solo una volta in pratica significa che, se hai compilato il campo email al passaggio su altro campo parte la chiamata ajax per interrogare se il campo email è presente.
Se vuoi fare anche il controllo dell'username in questto caso devi fare un 'altra chiamata e la relativa query...

Ti conviene farei controllo separatamente...

Poi se riesci a postare il codice lato client, vedo la logica che hai utlizzato...
 
problea inserimento dati

Ciao,

Ma tu riusciresti ad aiutarmi a fare un codice funzionale anche con il focus dei campi che sono obbligatori da compilare ??? Anche se dovessi reiniziare da capo o semplicemente modificare quello che ho gia ??? Ti posto i quattro file:


connettimysqli.php (connessione al db)

PHP:
<?php
// definizione delle variabili 
$host = "xxxxxxx"; 
$user = "fabio"; 
$pass = "xxxxx"; 
$db = "MegaLaboratorio"; 
// connessione al DBMS 
$con= new mysqli($host, $user, $pass, $db); 
if( mysqli_connect_errno()) { 
echo ('Non riesco a connettermi: ' . mysqli_connect_errno() ); 
}else{ 
#echo ("Ti sei connesso al database"." ".$db); 
}
?>

checkdate.php

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once("connettimysqli.php");
       
 
foreach($_POST as $k => $v) {
    $campo = $k;
    $valore = $v; 
    
} 
$$qry = "SELECT ".$campo." FROM uty WHERE ".$campo." = '$valore'"; 
if($checkemail = $con->query($qry) or die (mysql_error())){


    echo '<img src="X-ICONA.png" alt="Icona KO" width="15" height="15">'; 
    
}else { 
# echo "Questo username che hai scelto è perfetto!"; 
echo '<img src="V-ICONA.jpg" alt="Icona OK" width="15" height="15">'; 

}


?>


iscrizione.html


PHP:
<html>
    <head> 
        <script src='http://code.jquery.com/jquery-1.9.1.min.js'></script>
        <script type="text/javascript"> 
            $(document).ready(function() { $("input").keyup(function(){ 
                    var id = this.id; 
                    $.ajax({ type: "POST", 
                        url: "checkdate.php", 
                        data: id+"="+this.value, 
                        success: function(response){ 
                            $("#check_" + id).html(response); 
                        } 
                    });
                }); 
            });
        </script> 
    </head> 
    <body> 
        <div align ="center">
            <h2>Esempio form di registrazione</h2> 
        </div> 
        <form action="salvadati.php" method="POST">
   
                <label>
                    Username: <input type="text" name="username" id="username"/>
                    <span id="check_username"></span>
                </label> 
            
           
                <label>
                    <p> <p>
                    E-Mail: <input type="text" name="email" id="email"/>
                    <span id="check_email"></span>
                    </p> </p>
                </label> 
            
            <div align ="center">
              <input type="submit" value="Invia dati">
              
            </div> 
        </form> 
    </body>
</html>

Questa è la parte riguardante alla chiamata ajax

PHP:
<script type="text/javascript"> 
            $(document).ready(function() { $("input").keyup(function(){ 
                    var id = this.id; 
                    $.ajax({ type: "POST", 
                        url: "checkdate.php", 
                        data: id+"="+this.value, 
                        success: function(response){ 
                            $("#check_" + id).html(response); 
                        } 
                    });
                }); 
            });
        </script>


Infine salvadati.php

PHP:
<?php
include 'connettimysqli.php';

// Lancio una query per inserire tre righe nella tabella
$successo = $con->query("INSERT INTO uty (username, email) VALUES ('$username', '$email')"); 

// controllo l'esito della query
if ($successo) {#se va bene....
    echo 'Dati inseriti correttamente';
}
else {
    echo 'Errore nella query'; 
}
?>


Questo è tutto il programma. ovviamente dove vedi che ci sono le immagini delle iconcine della "V" = libero "X" = occupato, quelle così cpomìè impostato non funzionano correttamente. Se scrivo "aaaa" o "BBBB" lui prende occupato anche se nel db non esiste.

Questo è quanto. Se c'è da apportare modifiche migliorie ecc. ben venga: un aiuto mi fa sempre piacere averlo. Sono un po' imbranato con ajax. Grazie.
 

Discussioni simili