• User Attivo

    Problema checkbox

    Salve a tutti,

    Vediamo se c'è qualche buon anima ch emi possa aiutare. Ho fatto un modulo d'iscrizione interamente in jquery e fin qui tutto ok bello funzionante. Però, durante l'utilizzo e la realizzazione del sito, mi sono accorto che mancava qualcosa. Il regolamento da fare accettare agli utenti che si iscrivino. Quindi la cosa che mi è venuta in mente, era quella d'inserirlo dopo essersi loggati e registrati e se non accettano il regolamento di rispedire alla pagina regolameno oppure di cancellarsi. Così ho fatto. Solo che ad ogni accesso, l'utente deve accettare il regolamento. Invece vorrei fare in modo che l'utente una volta accettato il regoòlamento passi direttamete alla seconda pagina che si trova all'interno del form. Ora su questo non sono riuscito ancora a trovare una soluzione. Mi potreste aiutare per favore ???? Vi posto il codice che ho fatto fino ad ora.

    [PHP]

    <?php
    session_start();
    require_once("connetti.php");
    ?>

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>benvenuto</title>

    <body>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    

    <style>
    #col_sx{
    float:left;
    width:33.3%;
    }
    #col_ct{
    float:left;
    text-align:center;
    width:33.3%
    }
    #col_dx{
    float:left;

    text-align:right;
    width:33.3%;
    }
    </style>
    </body>

    <?php

    if(isset($_SESSION['nome'])) {

    $array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");
    }else{
    $query = "SELECT * FROM utenti WHERE accettatermini='1' AND id = '".$_SESSION['id']."";

        echo $query;
    

    echo "<br> <br>";

    echo "L'utente può andare alla pagina 2 del suo profilo !!!";
    }

    echo"<div id='col_sx'> ";
    echo "<h1>";
    echo $id;
    echo "</h1>";
    echo "</div>";

    echo"<div id='col_ct'> ";
    echo "<span style='font-size:16px' face='Comic Sans'>";

    $array = strtoupper($_SESSION['nome'] );
    if(isset($_SESSION['nome'])) {

    echo "<center>";
    echo "<div class="messaggio"><h1>";
    echo "<h1> BENVENUTO ".$array."</h1>";

    echo '<hr align=?right? size=?3″ color=?black? noshade>'; //disegna una semplice riga
    echo "</h1></div>";
    echo "</body></html>";
    echo "</center>";

    }else{
    header("Location:failed.php");
    exit();

    }

    ?>

    <!doctype html>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title><?= isset($_POST['accetto'])?'Pagina 2':'pagina 1' //se esiste $_POST['accetto'], significa che ha spuntato il checkbox, quindi mostriamo il titolo della pagina 2 ?></title>
    <style type="text/css">
    body
    {
    text-align: center;
    }
    </style>
    </head>
    <body>

    <?php
    

    if(isset($_POST['accetto'])) //se NON (= punto esclamativo che nega) esiste $_POST['accetto'] (e quindi non ha spuntato il checkbox), mostriamo la "pagina 1"
    {

    $query = "SELECT accettaterminni FROM utenti WHERE accettatermini='0'";

    ?>

            <?= (isset($_POST['avanti'])?'Prima devi accettare il regolamento!':'Per continuare, è necessario accettare il regolamento').PHP_EOL //se vuole andare avanti (siamo dentro all'if "non ha spuntato il checkbox"), gli chiediamo di accettare il regolamento ?>
            <form action='<?= $_SERVER['PHP_SELF'] //invia i dati a questa pagina ?>' method='POST'>
            <input id='regolamento' type='checkbox' name="accetto"><label for="regolamento">Accetta il regolamento</label>
            <input type="submit" value="Avanti" name="avanti">
            </form>
        
        <?php
    

    }

        else    //...altrimenti, mostriamo la pagina 2
            
         {
        ?>
        <h1> BENVENUTO NELLA PAGINA2 </h1>
        <?php
        }
        
    ?>
    </body>
    

    </html>

    [/PHP]

    Mi ero scordato una cosa fondamentale. Ho messo uncamp nel db accettatermini con valore di defau "0" che corrisponde a utente non chekkato., e a "1" che corrisponde a utente chekkato. In teoria ci dovrebbe essere un controlo che verifichi l'utente. Però sembra che passi lo stesso alla pagina due sia chekkato sia non chekkat. Ho visto gli esempi su internet ma non c'è ne uno che possa fare al caso mio. Mi potreste dare una mano per favore ??? Grazie.


  • User Attivo

    Non ho capito cosa fai con la variabile $query quando gli assegni una stringa SQL ma poi non la esegui. Se hai un campo che ti dice se un utente ha già checkato il regolamento, devi solo verificare il valore di quel campo. Se è 1, allora deve esserci un header("Location: pagina2.php"). Io di location vedo solo la pagina failed.php che non credo sia quella che l'utente deve raggiungere se ha accettato il regolamento.

    Un piccolissimo consiglio, anche se non fa parte di quello che hai chiesto: assegna nomi alle variabili attinenti al loro contenuto e rispetta l'indentazione. Farai fatica a comprendere i bug nel tuo programma col codice scritto così.


  • User Attivo

    Ciao Francesco Di Caprio,

    Allora problema risolto. Da un lato. Tu come le gestiresti le pagine interne. nel senso senza richiamo di un file esterno quindi pagina2.php ?????


  • User Attivo

    Mi spiace, ma se non conosco il programma a cosa serve, cosa deve fare e come è strutturato io non posso dirti come lo strutturerei. E d'altronde è una cosa abbastanza soggettiva, ci sono sicuramente modi per far si che le web-app siano più o meno ottimizzate, impieghino più o meno risorse, ma è il programmatore in base alla sua personalissima esperienza che si gestisce il codice. Non so rispondere alla tua domanda.


  • User Attivo

    Ciao Francesco Di Caprio,

    E se ti posto il codice pensi di potermi aiutare ?????

    Questo è il codice originale

    [PHP]

    <?php
    require_once("connetti.php");
    $id_user = $_GET['id']; # o $_GET['username'];
    $page = (int)$_GET['page'];
    if(EMPTY($page)) $page = 1;
    $query_user = "SELECT * FROM utenti WHERE id='$id_user'";
    $result_query = mysql_query($query_user);
    $assoc_rows = mysql_fetch_assoc($result_query);
    switch($page)
    {

    case 1:
    

    ?>
    <div style='width:600px; font-family:Comic Sans MS'>

    <!--Inizio bordatura testo arrotondato-->
    

    <style type="text/css">
    .bordato{
    border:2px solid #000000;
    border-radius: 80px 80px 80px 80px;
    -moz-border-radius: 80px 80px 80px 80px;
    -webkit-border-radius: 80px 80px 80px 80px;
    }
    </style>
    <body>
    <div class="bordato">
    <center>BENVENUTI NEL SOCIAL NETWORK PIU' LIBERO DEL MONDO

    </center>

    <p align="left">

    Se stai leggendo questo regolamento è perchè ti sei iscritto a tale sito e di conseguenza, prima di andare avanti, devi accettare tre regole fondamentali. <br/>

    Tali regole, servono per non creare dispute e conversazioni spiacevoli sia con gli utenti, sia con gli amministratori.

    Non bisogna essere maggiorenni per iscriversi. Basta avere un'età dai 12 anni in su. Le tre regole fondamentali sono le seguenti: <br></p>
    <p align="left">

    1. Vietato bestemmiare pena si viene automaticamente cancellati dal sito senza possibilità di registrarsi con un ulteriore username; <br/></p>
      <p align="left">

    2. Vietato parlare di politica. La politica è causa di discussioni e punti di vista differenti l'uno dall'altro. Ci saranno tre avvisi,
      dopo di che pena esclusione dal sito e cancellazione perenne dal database;<br/> </p>

    <p align="left">
    3) Rispettare gli utenti iscritti. <br/> </p>

    <p align="left">

    Se accetti le seguenti regole, clicca su "avanti" altrimenti su "cancella", e sarai automaticamente cancellato dal database.

    Grazie di aver letto il regolamento e buon divertimento.
    </p>

    <input id='regolamento' type='checkbox' value='Accetta il regolamento'>Accetta il regolamento

    <br><br>
    <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />
    <input type="button" onClick="window.location.href='cancellazione.php';" style='padding:10px' value="Cancellati" />

    <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' disabled='disabled'/>

    </div>

    <?php

    //Inizito seconda pagina dopo aver accettato il regolamento

        break;
    case 2:
     if(isset($_SESSION['id'])) {
    $result = mysql_query("SELECT * FROM utenti WHERE accettatermini='1' AND id=".$_SESSION['id']) or die(mysql_error());
    
    $accettato = mysql_num_rows($result)===1;
    

    }
    else{
    header("Location: failed.php");
    exit;
    }
    if( isset($_POST['avanti']) ){
    $messaggio = 'Prima devi accettare il regolamento!';
    if( isset($_POST['accetto']) ){
    $query = "UPDATE utenti SET accettatermini='1' WHERE id={$_SESSION['id']}";
    mysql_query($query) or die(mysql_error());
    $accettato = true;
    }
    }else{
    $messaggio = 'Per continuare, è necessario accettare il regolamento';
    }

    ?>
    

    <link rel="stylesheet" type="text/css" href="coloredisfondo.css">

    <?php
    

    // Ricerca e visualizza l'utente che si è connesso con le info

    $query = mysql_fetch_array(mysql_query("SELECT * FROM utenti WHERE id='".$_SESSION['id']."'"));

    echo "<br> <br>";
    echo '<p align="left">';
    echo " Cognome: ". $query['cognome'];
    echo '<p align="left">';
    echo '<p align="left">';
    echo "Nome: ". $query['nome'];
    echo "<br> ";
    echo '<p align="left">';
    echo "Username: ". $query['username'];
    echo "<br>";
    echo '<p align="left">';
    echo "EMail: ".$query['email'];

    ?>

         <form action= 'aggiornaprofilo.php' method="POST">
    

    <p align="left">

    Data di Nascita Giorno:

    <?php

    require_once("arraylistecitta.php");

    // Inizio Selezione data di nascita

    //Giorno

    echo "Giorno: ";
    echo "<select name="giorno">";
    echo "<option value=""> seleziona </option>";
    for($gg=1; $gg<=31; $gg++){
    if(strlen($gg)< 2){$gg = "0".$gg;}
    echo "<option value="$gg"> $gg </option>";
    }
    echo "</select>";

    //Mese

    echo " Mese: ";

    echo "<select name="mese">";
    echo "<option value=""> seleziona </option>";

    foreach($mese as $valore){
    echo "<option value="$valore">$valore";
    //echo "<option value="$valore">$valore";
    echo "</option> ";
    }
    echo "</select>";

    //Anno

    echo " Anno: ";
    $da=1950;
    $al=2014;
    echo "<select name="anno">";
    echo "<option value=""> seleziona </option>";
    for($aa=$da; $aa<=$al; $aa++){
    echo "<option value="$aa"> $aa </option>";
    }
    echo "</select>" ;

    // Inizio selezione Città

    echo"<br> <br>";

    echo "Città: ";

    echo "<select name="citta">";
    echo "<option value=""> seleziona </option>";

    foreach($citta as $valore){
    echo "<option value="$valore">$valore";
    //echo "<option value="$valore">$valore";
    echo "</option> ";
    }
    echo "</select>";

    // Inizio selezione Province

    echo " Provincia: ";

    echo "<select name="provincia">";
    echo "<option value=""> seleziona </option>";
    foreach($province as $valore){
    echo "<option value="$valore">$valore";
    //echo "<option value="$valore">$valore";
    echo "</option> ";
    }
    echo "</select>";

    //Anno_diploma

    echo " Anno Diploma: ";
    $da=1950;
    $al=2014;
    echo "<select name="anno_diploma">";
    echo "<option value=""> seleziona </option>";
    for($aa=$da; $aa<=$al; $aa++){
    echo "<option value="$aa"> $aa </option>";
    }
    echo "</select>" ;;

    //Anno_laurea

    echo " Anno Laurea: ";
    $da=1950;
    $al=2014;
    echo "<select name="anno_laurea">";
    echo "<option value=""> seleziona </option>";
    for($aa=$da; $aa<=$al; $aa++){
    echo "<option value="$aa"> $aa </option>";
    }
    echo "</select>" ;

    //Sesso

    echo " Sesso: ";

    echo "<select name="sesso">";
    echo "<option value=""> seleziona </option>";

    foreach($sesso as $valore){
    echo "<option value="$valore">$valore";
    //echo "<option value="$valore">$valore";
    echo "</option> ";
    }
    echo "</select>";

    //Stato Civile

    echo " Stato Civile: ";

    echo "<select name="statocivile">";
    echo "<option value=""> seleziona </option>";
    foreach($statocivile as $valore){
    echo "<option value="$valore">$valore";
    //echo "<option value="$valore">$valore";
    echo "</option> ";
    }
    echo "</select>";

    //Occupazione

    echo "<br> <br>";

    $q=mysql_query("SELECT occupazione FROM utenti ORDER BY occupazione");
    $vuota=mysql_num_rows($q);
    if($vuota > 0){//fa vedere la select solo se ci sono componenti e mostra solo il'input nuovocomponente, in pratica solo la prima volta
    echo "Attività <select name="occupazione">";
    echo "<option value="">-seleziona-</option>";
    while($riga=mysql_fetch_array($q)){
    echo "<option value="".$riga['occupazione']."">".$riga['occupazione']."</option>";
    }//fine while
    echo "</select>";
    }//fine if vuota

    ?>

    Nuova attività da inserire: <input type='text' name='nuovaoccupazione' />
    <?php

    echo "<br> <br>";

    //Titolo_Studio

    $q=mysql_query("SELECT titolo_studio FROM utenti ORDER BY titolo_studio");
    $vuota=mysql_num_rows($q);
    if($vuota > 0){//fa vedere la select solo se ci sono componenti e mostra solo il'input nuovocomponente, in pratica solo la prima volta
    echo "Titolo di studio: <select name="titolo_studio">";
    echo "<option value="">-seleziona-</option>";
    while($riga=mysql_fetch_array($q)){
    echo "<option value="".$riga['titolo_studio']."">".$riga['titolo_studio']."</option>";
    }//fine while
    echo "</select>";
    }//fine if vuota
    ?>
    Nuovo titolo di studio da inserire: <input type='text' name='nuovotitolostudio' />

    <?php
    //Titolo_laurea

    $q=mysql_query("SELECT titolo_laurea FROM utenti ORDER BY titolo_laurea");
    $vuota=mysql_num_rows($q);
    if($vuota > 0){//fa vedere la select solo se ci sono componenti e mostra solo il'input nuovocomponente, in pratica solo la prima volta
    echo "Titolo di laurea: <select name="titolo_laurea">";
    echo "<option value="">-seleziona-</option>";
    while($riga=mysql_fetch_array($q)){
    echo "<option value="".$riga['titolo_laurea']."">".$riga['titolo_laurea']."</option>";
    }//fine while
    echo "</select>";
    }//fine if vuota
    ?>
    Nuovo titolo di laurea da inserire: <input type='text' name='nuovolaurea' />

    <br><br> <center>
    <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?>
    <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>

        <!--<input type="button" onClick='getpage("<?=$page+1?>")' style='padding:10px' value="Aggiorna Profilo" />-->
    
       
    
        <input type="submit"  onClick="window.location.href='aggiornaprofilo.php';"style='padding:10px' value="Aggiorna Profilo" >
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" >
    
    
    
    </center>
    <?php
    break;
    case 3:
    ?>
    

    </form>
    <?php
    break;
    }
    ?>
    <script>
    $('input[id=regolamento]').click(function(){
    var input = $('input[value="Avanti"]');
    if($(this).is(':checked')) input.removeAttr('disabled');
    else input.attr('disabled','disabled');
    });
    function getpage(page)
    {
    location.href = '?page='+page;
    }
    </script>

    [/PHP]

    Lo scopo di questo codice è che una volta che hai chekkato e accettato il regolamento, ci dovrebbe essere una query (di cui non sono mai riuscito a farlo) che verifica se l'utente ha accettato o meno tale regolamento.E deve passare alla seconda pagina senza che che debba riaccettare il regolamento. Mi puoi dare un'occhiata per favore ????


  • User Attivo

    Ciao,

    hai detto che ti sei prediposto un campo all'interno della tabella utenti che ha valore 0 o 1 a seconda del se l'utente ha già accettato o meno il regolamento.
    Attorno alla riga 75 tu hai una situazione del genere

    [php]
    if (isset($_SESSION['id'])) {
    $result = mysql_query("SELECT * FROM utenti WHERE accettatermini='1' AND id=" . $_SESSION['id']) or die(mysql_error());
    $accettato = mysql_num_rows($result) === 1;
    } else {
    header("Location: failed.php");
    exit;
    }
    [/php]

    La riga $accettato contiene un booleano perché gli assegni una condizione. Quindi subito dopo...

    [php]
    if ($accettato) header("Location: pagina2.php");
    [/php]

    dove pagina2.php è la pagina che c'è subito dopo l'accettazione del regolamento.


  • User Attivo

    @Francesco Di Caprio said:

    Ciao,

    hai detto che ti sei prediposto un campo all'interno della tabella utenti che ha valore 0 o 1 a seconda del se l'utente ha già accettato o meno il regolamento.
    Attorno alla riga 75 tu hai una situazione del genere

    [php]
    if (isset($_SESSION['id'])) {
    $result = mysql_query("SELECT * FROM utenti WHERE accettatermini='1' AND id=" . $_SESSION['id']) or die(mysql_error());
    $accettato = mysql_num_rows($result) === 1;
    } else {
    header("Location: failed.php");
    exit;
    }
    [/php]

    La riga $accettato contiene un booleano perché gli assegni una condizione. Quindi subito dopo...

    [php]
    if ($accettato) header("Location: pagina2.php");
    [/php]

    dove pagina2.php è la pagina che c'è subito dopo l'accettazione del regolamento.

    Allora,

    Ti dico subito che non ci siamo nella soluzione, ma redo di averla trova la debbo solo provare. Anzi scusami se non ti ho risposto subito come mia abitudine, ma sono stato per una settimana a letto con 39.9 di febbre e solo da ieri che è iniziata a calare. Nel tuo esempio mi mandi ad un file esterno, che in realtà questo file esterno che hai chiamato pag2 deve essere una pagina interna. Hai presente google con le sue pagine ??? Non credo che abbio più di 20 pagie php di ricerca ognigna chiamata con estensione php o sbaglio ??? Adopererà un'latra tipologia che purtroppo non cononsco. A me basterebbe solo poter gestire max 3 pag e non vorrei fare 3 file separati. Spero di essermi spiegato meglio stavolta. GRazie.