[PHP] Verifica dati tramite form e annullamento codice inserito

speedwar

Nuovo Utente
10 Ago 2018
5
0
1
Buongiorno a tutti,
ho bisogno di aiuto per questo codice e onestamente sono un po arrugginito.
Ho una pagina con un form di inserimento codici attraverso il quale gli utenti controllano se il loro codice è valido/presente.

Ho trovato questo vecchio codice ma in realtà fa solo una verifica per controllare se è presente il codice senza andare a scrivere nulla sul DB in caso di esito positivo.

La tabella è composta da tre campi: id (sequenziale) - codice (il codice) - stato (attivo 1 /non attivo 0)

PHP:
<?php
// connettiamoci al DB
$db_host = "host";$db_user = "user";$db_password = "pwd";$db_name = "dbname";
//connetto il DB
$db = mysqli_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');mysqli_select_db($db, $db_name) or die ('Errore durante la selezione del db');
// recuperiamo il valore ricerca inviato con get
$ricerca = $_GET['ricerca'];
// vediamo se è stato inviato, e quindi uguale a ok
if ( $ricerca == 'ok' )
{
// recuperiamo ora cerca inviato con post
$cerca = $_POST['cerca'];
// vediamo se è stato compilato il campo
if ( $cerca == TRUE && $cerca != "" )
{
// se supera i tre caratteri
if ( strlen($cerca) >= 3 )
{
// depuriamo la stringa da cercare sul DB
$cerca =  mysqli_real_escape_string()(stripslashes($cerca));
// effettuare la ricerca sul DB, attenzione alla sintassi
$query = "SELECT * FROM dbname WHERE codice LIKE '%$cerca%'";
$risultato = mysqli_query()($query) or die (mysqli_error());
$risposta = mysqli_query()($query) or die ("Utilizza termini più specifici!");
$dentro_la_query= mysqli_fetch_assoc()($risposta);
if ( $dentro_la_query == TRUE )
{
while($row= mysqli_fetch_assoc()($risultato))
{
$codice = $row['codice'];$stato = $row['stato'];
// stampiamo i nostri dati
if ($stato == 1) {echo "Attenzione, il codice <b>$codice</b> è già stato utilizzato.<br>"; }else{
echo "Codice inserito valido. Vuoi utilizzarlo?";
}
}
}
}
}
}?>

Il codice mi sembra corretto ma in realtà non fa nessun controllo. Non mi arriva nessun risultato.
Spero di essere stato chiaro.
In ogni caso chiedete pure.
Grazie in anticipo
 
ciao
scusa ma dove cavolo hai pescato quel codice?
spega meglio cosa vuoi ottenere
dimenticavo: indenta il codice altrimenti si fatica a leggerlo (anche se mi sembra codice da cestinare)
 
Mi spiego meglio...
Ho un database con circa 30.000 codici. L'utente deve poter verificare (attraverso un form) che il proprio codice sia presente, ed eventualmente poterlo attivare (annullare). Tutto qua.

Ora il codice che ho postato magari non è proprio "pulito" ma se mi aiutate a capire come fare, posso provare a ripulirlo e farlo funzionare intanto per la semplice verifica sul DB del codice. Poi cerco di capire come fare per l'aggiornamento sul DB.

Grazie Mille, intanto vi riposto il codice aggiornato con degli echo per verificare fino a che punto va...

PHP:
<?php

                // connettiamoci al DB

                $db_host = "dbhost";
                $db_user = "dbuser";
                $db_password = "dbpwd";
                $db_name = "dbname";

                //connetto il DB

                $db = mysqli_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
                mysqli_select_db($db, $db_name) or die ('Errore durante la selezione del db');
               
                echo "Connession ok ";
               
                // recuperiamo il valore ricerca inviato 

                $ricerca = $_GET['ricerca'];

                // vediamo se è stato inviato, e quindi uguale a ok

                if ( $ricerca == 'ok' ) 
               
                {
                   
                echo "- ricerca ok ";
               
                // recuperiamo ora cerca inviato con post

                $cerca = $_POST['cerca'];
               
                // vediamo se è stato compilato il campo

                if ( $cerca == TRUE && $cerca != "" )
               
                {
                   
                echo "- compilato ok ";
               
                // ora vediamo se supera i tre caratteri
               
                if ( strlen($cerca) >= 5 )

                {
               
                echo " - lunghezza ok ";
               
                // ora possiamo effettuare la nostra ricerca sul DB, state attenti alla sintassi

                $query = "SELECT * FROM codici_amazon WHERE codice LIKE '%$cerca%'";
               
                echo "- query ok ";

                $risultato = mysqli_query() ($query) or die (mysqli_error()); 
               
                echo "- risultato ok ";
               
                $risposta = mysqli_query() ($query) or die ("Utilizza termini più specifici!");

                $dentro_la_query= mysqli_fetch_assoc() ($risposta);

                if ( $dentro_la_query == TRUE ) {
   
                while($row= mysqli_fetch_assoc() ($risultato)) {

                $codice = $row['codice'];
                $stato = $row['stato'];
               
                echo "- risultato ";
               
                // stampiamo i nostri dati

                if ($stato == 1) 
                {
                    echo "Attenzione, il codice <b>$codice</b> è già stato utilizzato.<br>";
                } 
           
                    else 
           
                { 
                    echo "Codice inserito valido. Vuoi utilizzarlo?";
                } 
                }
                }         
                }
                }           
                } 
                ?>

Al momento gli echo funzionano fino alla query...poi più nulla...
 
ciao
ti schematizzo:
1) avrai da qualche parte un form in dui l'utente inserisce il suo codice immagino e quindi arriviamo alla pagina di verifica
2) e una pagina in cui ricevi ed alabori
PHP:
<?php
//dati di connessione
$codice=$_POST['codice'];//proviene dal form
//qui è necessario fare una verifica dell'inserito, essenziale in quento accedi al db
//ad esempio se il codice è numerico
if(!preg_match("/[09]{6,12}/", $codice)){
    //il codice non è corretto e quindi fai un rimando automatico a dove vuoi
}
//il codice è corretto quindi interrogi il db
//metto i nomi a caso poi tu metterei quelli che hai
$query="SELECT * FROM tabella WHERE codice=$codice";//se il codice è alfanumerico va tra apici ...codice='$codice'";
$ris=mysqli_query($connessione, $query);
//io generalmente poi faccio così
if(mysqli_num_rows($ris)==1){
    //il codice esiste nel db quindi fai fare le operazioni che servono
}else{
    //il codice non esiste rimandi alla pagina che vuoi
}

?>
intanto fai così ppoi eventualmente il seguito
 
  • Like
Reactions: speedwar
ciao
dimenticavo
se le condizioni di ricerca sono due la query (dopo aver sempre controllato i dati) diventa
PHP:
//..........
$query="SELECT * FROM tabella WHERE codice=$codice AND altro='$altro'";
//......
 
Grazie, qualche piccola modifica e ora funziona!

La mia è una pagina unica, il form è nella stessa pagina, così come la visualizzazione del risultato (per ora).
Ed è impostata così:

HTML:
<form action="index2.php?ricerca=ok" method="POST">
            <div class="form-mail">                
                <input type="text" name="codice" />
            </div>
            <input type="submit" name="submit" value="CONTROLLA IL TUO CODICE">
        </form>

Questa la seconda parte seguendo le tue indicazioni...verifica che non abbia scritto cavolate...
PHP:
<?php

                // connettiamoci al DB

                $db_host = "dbhost";
                $db_user = "dbuser";
                $db_password = "dbpwd";
                $db_name = "dbname";

                //connetto il DB

                $db = mysqli_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
                mysqli_select_db($db, $db_name) or die ('Errore durante la selezione del db');
               
               
$ricerca = $_GET['ricerca'];

                // vediamo se è stato inviato, e quindi uguale a ok

                if ( $ricerca == 'ok' ) {

                // recuperiamo ora cerca inviato con post

                $codice=$_POST['codice'];
               
                //qui è necessario fare una verifica dell'inserito, essenziale in quanto accedi al db, ad esempio se il codice è numerico
               
                if(!preg_match("/[0-9][6,12]/", $codice)){
               
                //il codice non è corretto e quindi fai un rimando automatico a dove vuoi
                echo "Codice Sbagliato";
                }
               
                //il codice è corretto quindi interrogi il db
                //metto i nomi a caso poi tu metterei quelli che hai
               
                $query="SELECT * FROM codici_amazon WHERE codice='$codice'";
               
                //se il codice è alfanumerico va tra apici ...codice='$codice'";
               
                $ris=mysqli_query($db, $query);
               
                if(mysqli_num_rows($ris)==1)               
               
                {
                   
                echo "Il codice inserito numero $codice è valido!<br>Vuoi attivarlo?"; //il codice esiste nel db quindi fai fare le operazioni che servono
               
                }
                else
                {

                echo "Non Esiste!"; //il codice non esiste rimandi alla pagina che vuoi
               
                }
                }
               
?>

Così funziona perfettamente. Il risultato è che immediatamente sotto il form viene stampato il risultato.

Ora viene la parte difficile...cioè dare all'utente la possibilità di convalidare il codice inserito cambiando il valore preimpostato nella colonna del DB dello "stato" da 0 a 1...
Vorrei inserire un tasto "Attiva" per attivare/annullare il codice..

Ora intanto provo a continuare da solo ma se hai consigli /esempi sono benvenuti...
Intanto ti ringrazio per l'aiuto!!
 
ciao
non ha alcuna importanza che sia in una o due pagine, se in unica pagina basta che tu legga il submit
PHP:
<?php
if(isset($_POST['subimit'])){
    //fai la ricerca
}else{
    //visualizzi il form
    echo "<form.....>......</forn>";
}
?>
 

Discussioni simili