[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.046
150
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.046
150
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.046
150
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.046
150
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0

Discussioni simili