[PHP] Verifica utente presente nel DB

  • Creatore Discussione Creatore Discussione #Fede5
  • Data di inizio Data di inizio

#Fede5

Nuovo Utente
23 Ott 2019
11
0
1
Ciao ragazzi, ho il seguente problema: modificare i campi di un utente solo se il suo nome e cognome è presente nel db. Io ho provato a fare nel seguente modo ma non capisco dove sta l'errore

PHP:
<?php

 $connessione = mysqli_connect('localhost','root','','utente');

?>



<?php

if(isset($_POST['submit'])){
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];   
$query = "SELECT * FROM `invitato` WHERE `Nome` = $nome AND `Cognome` = $cognome";
$verificaPresenza = mysqli_query($connessione,$query);         
if(mysqli_num_rows($verificaPresenza) == 1){
 $conferma = $_POST['conferma'];
 $adulti = $_POST['adulti'];
 $bambini = $_POST['bambini'];   
 $query2 = "UPDATE `invitato` `Adulti`= $adulti ,`Bambini`= $bambini ,`Conferma`= $conferma WHERE `Nome` = $nome AND `Cognome` = $cognome";
 $conferma = mysqli_query($connessione,$query2);   
    
    
 }else{
    echo "Persona non presente";
  } 
}

      
 ?>


HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>

</head>

<body>


<div id="conferme">
           <form action="" method="post" name="conferma" id="conferma" autocomplete="off">
    
            <label form="nome">Nome</label>
            <input type="text" id="nome" name="nome" placeholder="Nome"/>
          
            <label form="cognome">Cognome</label>
            <input type="text" id="cognome" name="cognome" placeholder="Cognome"/>
          
            <label form="risposta">Verrai al nostro matrimonio?</label>   
            <select id="risposta" name="conferma">
             <option value="select">Select</option>
             <option value="Si">Si</option>
             <option value="No">No</option>
            </select>
            
            
            <label form="Numero">Quanti adulti?</label>
            <select id="adulti" name="adulti">
             <option value="select">Select</option>
             <option value="1">1</option>
             <option value="2">2</option>
             <option value="2">3</option>
             <option value="2">4</option>
             <option value="2">5</option>
             <option value="2">6</option>
             <option value="2">7</option>
             <option value="2">8</option>
            
            </select>
            
            <label form="Numero">Quanti bambini?</label>
            <select id="bambini" name="bambini">
             <option value="select">Select</option>
             <option value="1">1</option>
             <option value="2">2</option>
             <option value="2">3</option>
             <option value="2">4</option>
             <option value="2">5</option>
             <option value="2">6</option>
             <option value="2">7</option>
             <option value="2">8</option>
            
            </select>
             <input type="submit" name="submit" id="submit" class="btn btn-success" value="Invia" onclick="valida()" />
            
           </form>
        
              
              
              
          </div>

<script>
$(document).on('submit', '#conferma', function(event){
 event.preventDefault();
//varibili associate ai campi del modulo
 var nome = document.conferma.nome.value;
 var cognome = document.conferma.cognome.value;
 var conferma = document.conferma.conferma.selectedIndex;
 var adulti = document.conferma.adulti.selectedIndex;
 var bambini = document.conferma.bambini.selectedIndex;  
 var car_alf = /^([a-zA-Z\xE0\xE8\xE9\xF9\xF2\xEC\x27]\s?)+$/;
 if((nome == "") || (nome == "undefined") || (cognome == "") || (cognome == "undefined") || (conferma == "") || (conferma == "undefined") ){
     alert("I campi nome, cognome e conferma sono obbligatori");
     document.conferma.nome.focus();
     return false;
 }
   
 if(!car_alf.test(nome)){
     confirm("Il nome inserito non è valido");
     document.conferma.nome.focus();
     return false;
 }
   
 if(!car_alf.test(cognome)){
     confirm("Il cognome inserito non è valido");
      document.conferma.cognome.focus();
     return false;
 }
   
 if((conferma.index == 0) ){
    confirm("La risposta di conferma è obbligatoria");
    document.conferma.conferma.focus();
    return false; 
 }
   
 if((conferma==1) && (adulti == 0)){
    confirm("Il numero di adulti è obbligatorio");
    document.conferma.cognome.focus();
    return false; 
 }    
   
 else{
   
    confirm("Conferma inviata correttamente. Grazie!");
     document.invio.submit();
     document.invio.action ="matrimonio.php#rvsp";
 } 
   
} 
   
   
    </script>  


</body>


</html>

Qualcuno mi può aiutare? Grazie
 
Forse non è questo il problema, ma hai chiamato due cose diverse con la stessa variabile $conferma.
 
ho provato a fare nel seguente modo ma non capisco dove sta l'errore
sicuramente ti segnala un errore, se tu lo comunicassi, le persone evitano di spendere tempo inutilmente,
SELECT * FROM `invitato` WHERE `Nome` = $nome AND `Cognome` = $cognome
le variabili devono essere racchiuse tra apici, trattandosi di strinche di caratteri
altro non so
 
sicuramente ti segnala un errore, se tu lo comunicassi, le persone evitano di spendere tempo inutilmente,
Purtroppo non mi segnala nessun errore, altrimenti l'avrei scritto, non è mia intenzione far perdere tempo a qualcuno

le variabili devono essere racchiuse tra apici, trattandosi di strinche di caratteri
altro non so

Ho aggiunto gli apici ma non cambia nulla, non effettua la verifica iniziale e non stampa neanche l'eco "Persona non presente"
 
Forse non è questo il problema, ma hai chiamato due cose diverse con la stessa variabile $conferma.
Si effettivamente avevo chiamato per sbaglio due cose diverse con la stessa variabile $conferma ma il problema non si è risolto, continua a non effettuare il controllo...
 
PHP:
$query2 = "UPDATE `invitato` `Adulti`= $adulti .....

ti sei dimenticato il SET

UPDATE `invitato` SET `Adulti`= $adulti....

cmq verifica di non avere doppioni nel DB, perchè con la verifica che hai scritto per la prima query loscript non prosegue se le righe estratte sono diverse da 1 (quindi ne so sono 0 ne se sono >1 ).
 
PHP:
$query2 = "UPDATE `invitato` `Adulti`= $adulti .....

ti sei dimenticato il SET

UPDATE `invitato` SET `Adulti`= $adulti....

cmq verifica di non avere doppioni nel DB, perchè con la verifica che hai scritto per la prima query loscript non prosegue se le righe estratte sono diverse da 1 (quindi ne so sono 0 ne se sono >1 ).
si, il SET è stata una svista ma ancora nulla, continua a non entrare minimamente nell'if iniziale...
 
manca la parentesi tonda chiusa e magari il punto e virgola
HTML:
    confirm("Conferma inviata correttamente. Grazie!");
     document.invio.submit();
     document.invio.action ="matrimonio.php#rvsp";
 }
});   <<<<<<<<<<<<<<<<<<<<<-------------------------------------------------------------------------
    </script>
</body>
</html>

poi dovresti richiamare jquery visto che lo usi, per esempio
HTML:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type='text/javascript' src='http://localhost/test_site/php/jquery.min.js'></script> <<<<<<<<<<<-----------
<title></title>
</head>

con queste modifiche, il codice html e javascript rispondono, visualizzando i messaggi

prova e fai sapere
 
upload_2019-10-23_20-19-21.png



ps,
value="Invia" onclick="valida()"

la funzione "valida()" non é definita
 
il codice html e javascript rispondo ma continua a non essere effettuare la verifica dell'if infatti non stampa nessun ecco e quindi la verifica della presenza dell'utente nel DB. Il codice completo e modificato è attualmente questo...

PHP:
<?php

 $connessione = mysqli_connect('localhost','root','','utente');

?>

<?php

if(isset($_POST['submit'])){
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$id = $_POST['user_id'];   

$query = "SELECT * FROM `invitato` WHERE `id` = $id   AND `Nome` = '$nome' AND `Cognome` = '$cognome' ";

$verificaPresenza = mysqli_query($connessione,$query);         

if(mysqli_num_rows($verificaPresenza) > 0){
 $risposta = $_POST['risposta'];
 $adulti = $_POST['adulti'];
 $bambini = $_POST['bambini'];   

$query2 = "UPDATE `invitato` SET `Adulti`= $adulti ,`Bambini`= $bambini ,`Conferma`= $risposta WHERE `Nome` = '$nome'  AND `Cognome` = '$cognome' AND  `id` = $id ";
 
$verificaConferma = mysqli_query($connessione,$query2);   
echo "Conferma inviata" ;   
    
 }else{
    echo "Persona non presente";
  }
}
      
 ?>



HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Progetto</title>

<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
 
    
    
</head>

<body>

<form action="" method="post" name="conferma" id="conferma" autocomplete="off">
    
            <label form="nome">Nome</label>
            <input type="text" id="nome" name="nome" placeholder="Nome"/>
          
            <label form="cognome">Cognome</label>
            <input type="text" id="cognome" name="cognome" placeholder="Cognome"/>
          
            <label>Conferma?</label>   
            <select id="risposta" name="risposta">
             <option value="select">Select</option>
             <option value="Si">Si</option>
             <option value="No">No</option>
            </select>
            
            
            <label>Quanti adulti?</label>
            <select id="adulti" name="adulti">
             <option value="select">Select</option>
             <option value="1">1</option>
             <option value="2">2</option>
             <option value="2">3</option>
             <option value="2">4</option>
             <option value="2">5</option>
             <option value="2">6</option>
             <option value="2">7</option>
             <option value="2">8</option>
            
            </select>
            
            <label>Quanti bambini?</label>
            <select id="bambini" name="bambini">
             <option value="select">Select</option>
             <option value="1">1</option>
             <option value="2">2</option>
             <option value="2">3</option>
             <option value="2">4</option>
             <option value="2">5</option>
             <option value="2">6</option>
             <option value="2">7</option>
             <option value="2">8</option>
            
            </select>
             <input type="submit" name="submit" id="submit" class="btn btn-success" value="Invia"  />
            
            <input type="hidden" name="user_id" id="user_id" />
           </form>


<script>
$(document).on('submit', '#conferma', function(event){
event.preventDefault();
var user_id = $(this).attr("id");   
//varibili associate ai campi del modulo
 var nome = document.conferma.nome.value;
 var cognome = document.conferma.cognome.value;
 var conferma = document.conferma.risposta.selectedIndex;
 var adulti = document.conferma.adulti.selectedIndex;
 var bambini = document.conferma.bambini.selectedIndex; 
 var car_alf = /^([a-zA-Z\xE0\xE8\xE9\xF9\xF2\xEC\x27]\s?)+$/;
 if((nome == "") || (nome == "undefined") || (cognome == "") || (cognome == "undefined") || (conferma == "") || (conferma == "undefined") ){
     alert("I campi nome, cognome e conferma sono obbligatori");
     document.conferma.nome.focus();
     return false;
 }
  
 if(!car_alf.test(nome)){
     confirm("Il nome inserito non è valido");
     document.conferma.nome.focus();
     return false;
 }
  
 if(!car_alf.test(cognome)){
     confirm("Il cognome inserito non è valido");
      document.conferma.cognome.focus();
     return false;
 }
  
 if((conferma.index == 0) ){
    confirm("La risposta di conferma è obbligatoria");
    document.conferma.risposta.focus();
    return false;
 }
  
 if((conferma==1) && (adulti == 0)){
    confirm("Il numero di adulti è obbligatorio");
    document.conferma.adulti.focus();
    return false;
 }   
  
 else{
  
     //confirm("Conferma inviata correttamente. Grazie!");
     document.invio.submit();
     
 }
  
});
  
              
    </script>


</body>

 
</html>
 
PHP:
<?php
$connessione = mysqli_connect('localhost','root','','utente');

if (!$connessione) {    echo "Error: Unable to connect to MySQL." . PHP_EOL;    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;    exit;}
?>

modifica così le prime righe e vedi se ricevi qualche errore , perchè a me il dubbio che ci sia un problema con la connessione al DB viene..

ps
correggia anche

...`Conferma`= '$risposta' WHERE `Nome` ...
aggiungi gli apici..
 
Ultima modifica:
facciamo che ti posto il codice html e javascript funzionante (c'erano anche alcuni errori, vedi "label form"),

dove c'é il messaggio
echo "La conferma e' stata inviata correttamente. Grazie!";
puoi inserire il codice php di aggiornamento del database (che non ho rivisto, hai già suggerimenti)

prova il codice che ti posto prima di fare modifiche per capire come funziona
PHP:
<?php
if(empty($_POST)) {
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Progetto</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
</head>
<body>
<form method="post" name="conferma" id="conferma" autocomplete="off" action="_test.php">

            <label for="nome">Nome</label>
            <input type="text" id="nome" name="nome" placeholder="Nome"/>

            <label for="cognome">Cognome</label>
            <input type="text" id="cognome" name="cognome" placeholder="Cognome"/>

            <label>Conferma?</label> 
            <select id="risposta" name="risposta">
             <option value="select">Select</option>
             <option value="Si">Si</option>
             <option value="No">No</option>
            </select>

            <label>Quanti adulti?</label>
            <select id="adulti" name="adulti">
             <option value="select">Select</option>
             <option value="1">1</option>
             <option value="2">2</option>
             <option value="2">3</option>
             <option value="2">4</option>
             <option value="2">5</option>
             <option value="2">6</option>
             <option value="2">7</option>
             <option value="2">8</option>
            </select>

            <label>Quanti bambini?</label>
            <select id="bambini" name="bambini">
             <option value="select">Select</option>
             <option value="1">1</option>
             <option value="2">2</option>
             <option value="2">3</option>
             <option value="2">4</option>
             <option value="2">5</option>
             <option value="2">6</option>
             <option value="2">7</option>
             <option value="2">8</option>
            </select>

            <input type="submit" name="submit" id="submit" class="btn btn-success" value="Invia" />

            <input type="hidden" name="user_id" id="user_id" />
           </form>
<script>
$(document).on('submit', '#conferma', function(event){

  alert("The form was submitted");

  var user_id  = $(this).attr("id");
  var nome     = document.conferma.nome.value;
  var cognome  = document.conferma.cognome.value;
  var conferma = document.conferma.risposta.selectedIndex;
  var adulti   = document.conferma.adulti.selectedIndex;
  var bambini  = document.conferma.bambini.selectedIndex;

  var car_alf = /^([a-zA-Z\xE0\xE8\xE9\xF9\xF2\xEC\x27]\s?)+$/;

  if((nome == "") || (nome == "undefined") || (cognome == "") || (cognome == "undefined") || (conferma == "") || (conferma == "undefined") ){
     alert("I campi nome, cognome e conferma sono obbligatori");
     document.conferma.nome.focus();
     event.preventDefault();
     return false;
  }
  if(!car_alf.test(nome)){
     confirm("Il nome inserito non è valido");
     document.conferma.nome.focus();
     event.preventDefault();
     return false;
  }
  if(!car_alf.test(cognome)){
     confirm("Il cognome inserito non è valido");
     document.conferma.cognome.focus();
     event.preventDefault();
     return false;
  }
  if((conferma.index == 0) ){
    confirm("La risposta di conferma è obbligatoria");
    document.conferma.risposta.focus();
    event.preventDefault();
    return false;
  }
  if((conferma==1) && (adulti == 0)){
    confirm("Il numero di adulti è obbligatorio");
    document.conferma.adulti.focus();
    event.preventDefault();
    return false;
  }
  confirm("Grazie, invio la conferma");
});
    </script>
</body>
</html>
<?php
}
else {
  echo "La conferma e' stata inviata correttamente. Grazie!";
}
?>

RISULTATO

upload_2019-10-24_0-56-7.png


upload_2019-10-24_0-56-32.png


ps, ATTENTO, modifica
action="_test.php"
quando hai concluso le prove, così ho chiamato lo script usato per le prove
 
controlla la connessione (non uso mysql e non ho riferimenti validi) !!
sostituisci la parte finale dello script
PHP:
    </script>
</body>
</html>
<?php
}
else {
  $connessione=mysqli_connect('localhost','root','','utente');
  if (!$connessione) { die("Error: Unable to connect to MySQL" . PHP_EOL
                          ."Debugging errno: " . mysqli_connect_errno() . PHP_EOL
                          ."Debugging error: " . mysqli_connect_error() . PHP_EOL); }

  $nome    = $_POST['nome'];
  $cognome = $_POST['cognome'];
  $id      = $_POST['user_id'];  

  $query = "SELECT * FROM invitato WHERE id=".$id." AND Nome='".$nome."' AND Cognome='".$cognome."'";

  $verificaPresenza = mysqli_query($connessione,$query);        
  if ($verificaPresenza === null) { die("Errore nella verifica della persona (verificaPresenza)"); }

  if(mysqli_num_rows($verificaPresenza) > 0) {
    $risposta = $_POST['risposta'];
    $adulti   = $_POST['adulti'];
    $bambini  = $_POST['bambini'];  

    $query2 = "UPDATE invitato SET Adulti=".$adulti.", Bambini=".$bambini.", Conferma='".$risposta."' WHERE Nome='".$nome."' AND Cognome='".$cognome."' AND  id=".$id;

    $verificaConferma = mysqli_query($connessione,$query2);

    if ($verificaConferma) { echo "La conferma e' stata inviata correttamente. Grazie!"; }
    else                   { echo "Errore nell'invio della conferma (verificaConferma)"; }
  }
}
?>
 

Discussioni simili