[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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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)
 

speedwar

Nuovo Utente
10 Ago 2018
5
0
1
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...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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'";
//......
 

speedwar

Nuovo Utente
10 Ago 2018
5
0
1
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!!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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
Autore Titolo Forum Risposte Data
F [PHP] Verifica utente presente nel DB PHP 13
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
Samuele Ronzani [PHP] Verifica se un dato esiste già PHP 1
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
M [PHP] Verifica formato data in tempo reale PHP 2
C verifica e invio ordine php PHP 19
P Verifica form solo con php senza javascript PHP 15
G php asincrono con ajax 2 campi di verifica PHP 1
M Cosa ne pensate del mio primo file PHP (verifica disponibilità stanze)? PHP 0
P Verifica form misto php e JS Javascript 2
P verifica codice php PHP 1
G Invio form con PHP PHP 1
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0

Discussioni simili