[PHP] Verifica dati tramite form e annullamento codice inserito

Discussione in 'PHP' iniziata da speedwar, 10 Agosto 2018.

  1. speedwar

    speedwar Nuovo Utente

    Registrato:
    10 Agosto 2018
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    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) >= )
    {
    // 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_querymysqli_fetch_assoc()($risposta);
    if ( 
    $dentro_la_query == TRUE )
    {
    while(
    $rowmysqli_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
     
  2. LinuxOhYeah

    LinuxOhYeah Utente Attivo

    Registrato:
    26 Novembre 2016
    Messaggi:
    189
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    Ma non ti danno errore tutte le righe con le 2 parentesi chiusa e aperta attaccate?
     
  3. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.987
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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)
     
  4. speedwar

    speedwar Nuovo Utente

    Registrato:
    10 Agosto 2018
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    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) >= )

                    {
                   
                    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_querymysqli_fetch_assoc() ($risposta);

                    if ( 
    $dentro_la_query == TRUE ) {
       
                    while(
    $rowmysqli_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...
     
  5. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.987
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
     
    A speedwar piace questo elemento.
  6. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.987
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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'";
    //......
     
  7. speedwar

    speedwar Nuovo Utente

    Registrato:
    10 Agosto 2018
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    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!!
     
  8. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.987
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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>";
    }
    ?>
     
Sto caricando...

Condividi questa Pagina