Visualizzazione risultati 1 fino 28 di 28

Discussione: checkbox come si usa

  1. #1
    Guest

    Predefinito checkbox come si usa

    Salve a tutti,

    ragazzi lo so che la domanda ad alcuni può essere banale. Ma per me purtroppo no. Allora, vorrei capire con un esempio concreto se è possibile, come funziona la checkbox. So che può assumere dei valori di tipo"si", "no", "1,"0" ecc. ecc. Però dopo di che non so come gestirli. Allora la faccio molto breve. ho il seguente campo accettatermini di default è impostato a "0" quindi termini non accettati. Appena si checca passa ad 1 ossia termini accettati e viene memorizzato nel db. Ora io debbo fare in modo che una volta accettati sti benedetti termini, di mandarlo alla pag2 di index.php
    Posto un codice che non va. Mi potete aiutare per favore ??? Sono disperato.

    index.php

    Codice PHP:

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

    <br> <br>

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

    </center> </form>

    </div>
    <?php
    if($_POST['accetto']!="1"){

    echo
    "<meta http-equiv='Refresh' content=4; URL='http://utenti/provaaggiornaprofilo/index.php?page=2'>"; //Questo è l'indirizzo a cui dovrebbe andare dopo il loginma non ci va...

    } else{
    echo
    "per essere registrato devi accettare il regolamento";
    //e rimandi al form o dove vuoi tu
    }

    //Inizito seconda pagina dopo aver accettato il regolamento

    break;
    case
    2:

    echo
    "<h1> <center> BENVENUTO NELLA PAGINA2 </h1> </center>";


    ?>
    Spero che qualcuno di voi mi possa aiutare. Grazie.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Per avere una certa speranza di trovare $_POST['accetto'] settato, devi impostare un name (al checkbox ?) con "accetto".

    Una checkbox può essere settata o non settata. Se è settata, prende il valore che ha nel value: nel tuo caso, una cosa sensata potrebbe essere:
    Codice HTML:
      <input id='regolamento' type='checkbox' name="regolamento" value='accetta'>Accetta il regolamento  
    Se l'utente avrà spuntato la checkbox, lato PHP esisterà $_POST['regolamento'], altrimenti non esisterà proprio:
    Codice PHP:
    if(isset($_POST['regolamento']))
    echo
    'Hai accettato il regolamento';
    else echo
    'Non hai accettato il regolamento.';
    Come vedi, sopra non ho nemmeno verificato che $_POST['regolamento'] contiene "accetta", perché se è settato, è ovvio che il suo valore è "accetta".

    -----

    Per completezza (visto il titolo del topic), faccio un esempio con i valori delle checkbox: mettiamo che vuoi far scegliere all'utente dei giorni della settimana:

    Codice HTML:
    <input type="checkbox" name="giorni[]" value="Lunedì"  id="Lunedì"><label for="Lunedì">Lunedì</label><br>
    <input type="checkbox" name="giorni[]" value="Martedi"  id="Martedi"><label for="Martedì">Martedì</label><br>
    <input type="checkbox" name="giorni[]" value="Mercoledì"  id="Mercoledì"><label for="Mercoledì">Mercoledì</label><br>
    <input type="checkbox" name="giorni[]" value="Giovedì"  id="Giovedì"><label for="Giovedì">Giovedì</label><br>
    <input type="checkbox" name="giorni[]" value="Venerdì"  id="Venerdì"><label for="Venerdì">Venerdì</label><br>
    <input type="checkbox" name="giorni[]" value="Sabato"  id="Sabato"><label for="Sabato">Sabato</label><br>
    <input type="checkbox" name="giorni[]" value="Domenica" id="Domenica"><label for="Domenica">Domenica</label><br>
    Lato PHP, puoi fare una cosa del tipo:
    Codice PHP:
    echo 'Hai selezionato: ';
    foreach(
    $_POST['giorni'] as $giorno)
    echo
    $giorno.' ';
    Perché $_POST['giorni'], per come è settato il name, è un array contenente i value dei checkbox "ceccati".

    -----

    Prendendo alla lettera la tua richiesta:
    Ora io debbo fare in modo che una volta accettati sti benedetti termini, di mandarlo alla pag2 di index.php
    Non ho capito quale sia la "pag2" di "index.php", essendo "index.php" una e una sola pagina .
    In ogni caso, visto che utilizzi js, sarebbe sufficiente anche una cosa come:
    Codice HTML:
    <input type='checkbox' onClick="document.location.href='pagina_che_vuoi.php';">
    Però, fare una pagina soltanto per far accettare il regolamento, mi sembra eccessivo... Poi non so: potrebbe aver senso, ma dipende da quel che ci devi fare.

    -----

    EDIT: l'utilizzo di del tag "<center>" Mi danneggia la vista . Usa css per centrare del contenuto nella pagina.

    Ciao!
    Ultima modifica di alemoppo : 09-03-2013 alle ore 23.08.18

  3. #3
    Guest

    Predefinito ciao

    Ciao alemoppo,

    Grazie per gli esempi fornitimi. Ora è molto più chiaro. E ti spiego a cosa serve il regolamento in una pagina index.php (x come la vedo io ovviamente). Allora il punto è il seguente. L'utente si registra, accetta la registrazione tramite l'email per attivare l'account. Una volta attivato l'account, potrebbe passare direttamente alla pagina index.php e trovare tutto l'ambarabam dell'aggiornamento profilo. ad esempio:

    1) datadinascita,
    2) luogo di nascita,
    3) Stato civile

    ecc. ecc. Invece mi sono voluto complicare la vita. Visto che sono ragazzi dai 12 anni in su e non solo, e in genere fra di loro si usa un linguaggio non molto corretto e pulito (tra cui le bestemmie senza sapere cosa significano, ed io odio le persone che bestemmiano sopratutto se sono ragazzi di cui non sanno il significat, anche del tipo "viva il duce" e cazzate simili, scuatemi per l'espressione, spero di non essere penalizzato per la piccola parolaccia). Ho dovuto mettere dei fermi. Nel senso che se le regole gli stanno bene non devono bestemmiare, non debbono parlare di politica, e la terza regola rispettare gli utenti l'uno con l'altro. Quindi come dicevo, trovano quetso blocco all'inizio, dopo di che se accettano passanno alla pagina due sempre all'interno dell'index.php altrimenti si possono cancellare. Ora per correttezza ti posto ccosa intendo per pagina2 e sopratutto qual'è. Ecco il codice:

    Codice PHP:

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

    <body>

    <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
    session_start
    ();
    require_once(
    "connetti.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();

    }


    ?>

    <!--Inizio procedura per accettazione dei termini e visualizzazione della seconda e terza pagina -->

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    </head>
    <body>
    <center> <br> <br>
    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js'></script>
    <!-- <body style='background:#000'> -->

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

    <?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:
    ?>
    <br> <br> <center>

    <!--accetti il regolamento <input name="accetto" type="checkbox" value="1">-->

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

    <br> <br>

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

    </center> </form>

    </div>
    <?php
    if($_POST['checkbox'] =="accettato"){

    $checktermini=mysql_query("SELECT accettatermini FROM utenti WHERE accettatermini='1'");
    $vuota=mysql_num_rows($checktermini);
    if(
    $vuota > 0){
    echo
    "<br> <br> <h1> Attenzione: itermini si devono accettare Grazie !!! </h1>";
    echo
    "<meta http-equiv='Refresh' content=4; URL='http://utenti/provaaggiornaprofilo/index.php?page=1'>";
    exit();

    }


    } else{
    echo
    "<meta http-equiv='Refresh' content=4; URL='http://utenti/provaaggiornaprofilo/index.php?page=2'>";

    //e rimandi al form o dove vuoi tu
    }

    //Inizito seconda pagina dopo aver accettato il regolamento

    break;
    case
    2:

    echo
    "<h1> <center> BENVENUTO NELLA PAGINA2 </h1> </center>";


    ?>

    </center>
    <?php
    //Inizito terza pagina

    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>
    pagina2

    Codice PHP:

    <?php
    if($_POST['checkbox'] =="accettato"){

    $checktermini=mysql_query("SELECT accettatermini FROM utenti WHERE accettatermini='1'");
    $vuota=mysql_num_rows($checktermini);
    if(
    $vuota > 0){
    echo
    "<br> <br> <h1> Attenzione: itermini si devono accettare Grazie !!! </h1>";
    echo
    "<meta http-equiv='Refresh' content=4; URL='http://utenti/provaaggiornaprofilo/index.php?page=1'>";
    exit();

    }


    } else{
    echo
    "<meta http-equiv='Refresh' content=4; URL='http://utenti/provaaggiornaprofilo/index.php?page=2'>"; //E' questo l'url che ci dovrei mettere

    //e rimandi al form o dove vuoi tu
    }

    //Inizito seconda pagina dopo aver accettato il regolamento

    break;
    case
    2:

    echo
    "<h1> <center> BENVENUTO NELLA PAGINA2 </h1> </center>";


    ?>
    Però da quanto ho capito è sballato quello che ho fatto o sbaglio ???? Se hai idee migliori, accetto qualsiasi suggerimento, e consigli....

    P.S.: per i ccs sto cercando di capire come funzionano9, ma tutto in una volta mi s'inceppa il cervollo. Inoltre considera che prendo 6 diuretici al giorno che mi rincojoniscono (scusate il termine) completamente e molto spesso non sono in grando di concludere ninete. Ecco perchè chiedo sempre aiuto Provo il tuo codice sperando di risolvere la questione una volta per tutte. inoltre che tu sappia, è possibile controllare quello che si scrivono all'insaputa di loro (come amministratore del sito) ovviamenete e bloccare se necessario l'indirizzo ip per evitare che non si registri con un altro username ????? Grazie ancora sopratutto per la comprensione......

  4. #4
    Guest

    Predefinito ciao

    Ciao alemoppo,

    Ho provato i tuoi codici e mi danno il seguente risultato ti posto due immagini allegate, spero di riuscirci. Come si inseriscono le immagini ?????

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Gli esempi sopra li ho appena provati (non li avevo provati quando li ho scritti), e non mi danno problemi. Ovviamente devi mettere i vari input dentro un form, con method POST...

    Per postare un'immagine, devi usare il tasto , mettendo l'url che prima devi caricarla online (su un hosting di immagini).

    Ciao!

  6. #6
    Guest

    Predefinito ciao

    Ciao alemoppo,

    Mi puoi suggerire un hosting d'immagini ???? Così ti mando l'immagine. Poi nel form action method ="" Posso fare anche così senza nessun collegamento a nessuna pagina, visto che è all'interno la pagina ????

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    https://www.google.it/search?q=hosting+immagini
    Già il primo va bene.

    L'action va bene lasciarlo vuoto, anche se sarebbe più corretto impostare la pagina; di solito in questi casi si scrive il contenuto di $_SERVER['PHP_SELF']. Il method invece devi specificarlo, ovvero dev'essere POST!.

    Ciao!

  8. #8
    Guest

    Predefinito ciao

    Ciao alemoppo,

    Grazie per avermi indirizzato innanzi tutto sulle immaginbi, secondo per avere pazienza per un pirla (mi definisco tale e scusatemi per l'espressioni un po' scurili ma igni tantoi ci vogliono nella vita) in php. Ti volevo chiede il significato di questa stringa qua:

    Codice PHP:

    $_SERVER
    ['PHP_SELF']
    In sostanza, a cosa serve ???? Grazie. Domani ti mando le immagini non credo di fare in tempo stasera. Ci sono riuscito. Ora ti mando i link, poi fammi sapere per favore se si vedono le foto grazie.

    Prima Immagine:

    [IMG][/IMG]

    Seconda Immagine:

    Ultima modifica di fabiodefe : 11-03-2013 alle ore 22.15.47 Motivo: aggiunta foto

  9. #9
    Guest

    Predefinito ciao

    Ciao alemoppo,

    Scusami se non mi sono fatto più sentire, ma ho avuto problemi con il pc sopratutto con ubuntu. Sto risolvendo anche quelli spero. Mi è sparito un disco di cui non come farlo riapparire. Si vede solo in bios. A prescindere da questo, ritornerò a programmare al più presto. In attesa di una spiegazione di questo colleggamento :P

    Codice PHP:

    $_SERVER
    ['PHP_SELF']
    Comunque grazie ancora per la pazienza che hai avuto e che haui tutt'ora.

    P.S.: Non so se hai visto l'immagine allegata al precedente post.

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    $_SERVER['PHP_SELF'] contiene la pagina su cui viene invocato lo script: mettendolo nell'action, significa che il form deve inviare i dati alla stessa pagina su cui è contenuto.

    Nell'immagine, vedo un checkbox, e sembra tutto corretto. Quale è il problema?

    Ciao!

  11. #11
    Guest

    Predefinito ciao

    Il problema è che mi appare la scritta in alto a destra se vedi e non mi manda alla seconda pagina interna. Ma dalle spiegazioni che mi hai dato che ci devo ancora provare, forse ho la soluzione mettendo $_SERVER['PHP_SELF']

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Ho dato una letta al codice che avevi scritto sopra.

    In quel codice ci sono 2 doctype. Ci sono molti <html>, molti tag <title>, apri il body, lo chiudi e ci scrivi altro html, il <meta charset> è dichiarato 3 volte. Hai fatto uso del tag <center> (obsoleto).... e non mi metto nemmeno a capire come funziona il codice in una pagina del genere (anche perché i browser non so come fanno ad interpretare quella roba).

    Inoltre, session_start() va prima di qualsiasi codice HTML, in modo di poter lavorare nell'header della pagina. Lì invece è dopo.

    Consiglio: rinizia da capo. Ho visto che hai utilizzato perfino jQuery, che fa qualcosa quando viene cliccato il checkbox.... ma quando viene cliccato, da quel che ho capito vorresti visualizzare un'altra pagina, e quindi eventuali modifiche dopo il click sono inutili...

    Devi partire da una pagina html pulita del tipo:
    Codice PHP:
    <?php
    session_start
    ();
    //PHP di controllo
    ?>
    <!doctype html>
    <html>
    <head>
    <meta charset...>
    <title>Titolo della pagina</title>
    </head>
    <body>
    QUI il contenuto della pagina (div, scritte, checkbox...).
    </body>
    </html>
    Ciao!
    Ultima modifica di alemoppo : 13-03-2013 alle ore 16.21.35

  13. #13
    Guest

    Predefinito ciao

    Ciao alemoppo,

    Ti ringrazio tantissimo, ridarò un'occhiata al codice e pulirlo meglio. Una curiosità. il char set basta dichiararlo una volta e vale per tutto il codice ???? Se non ho capito male....

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Sopra ti ho scritto l'esempio di una pagina da cui partire (l'ho aggiunta editando in un secondo momento; forse non l'hai visto).

    Ciao!

  15. #15
    Guest

    Predefinito ciao

    Ciao,

    Allora ho provato i tuoi suggerimenti ma continua a darmi questo benedetto check di controllo ogni volta che mi loggo. Questoè il primo tentativo che ho fatto:

    checheked - Primo Tentativo:

    Codice PHP:

    switch($page)
    {



    case 1:
    ?>
    <br> <br> <center>

    <!--accetti il regolamento <input name="accetto" type="checkbox" value="1">-->

    <form action='' method='POST'>

    <input id='regolamento' type='checkbox' name="regolamento" value='accetta'>Accetta il regolamento
    <br> <br>

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

    </center> </form>

    </div>
    <?php
    if(isset($_POST['regolamento'])) {

    echo
    'Hai accettato il regolamento';

    }else{
    echo
    'Non hai accettato il regolamento.';
    }

    //Inizito seconda pagina dopo aver accettato il regolamento

    break;
    case
    2:

    echo
    "<h1> <center> BENVENUTO NELLA PAGINA2 </h1> </center>";


    ?>

    </center>
    <?php
    //Inizito terza pagina

    break;
    case
    3:
    ?>
    </form>
    <?php
    break;
    }

    ?>
    checked - II Tentativo:

    Codice PHP:

    switch($page)
    {



    case 1:
    ?>
    <br> <br> <center>

    <!--accetti il regolamento <input name="accetto" type="checkbox" value="1">-->

    <form action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>' method='POST'>

    <input id='regolamento' type='checkbox' name="regolamento" value='accetta'>Accetta il regolamento
    <br> <br>

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

    </center> </form>

    </div>
    <?php
    if(isset($_POST['regolamento'])) {

    echo
    'Hai accettato il regolamento';

    }else{
    echo
    'Non hai accettato il regolamento.';
    }

    //Inizito seconda pagina dopo aver accettato il regolamento

    break;
    case
    2:

    echo
    "<h1> <center> BENVENUTO NELLA PAGINA2 </h1> </center>";


    ?>

    </center>
    <?php
    //Inizito terza pagina

    break;
    case
    3:
    ?>
    </form>
    <?php
    break;
    }

    ?>
    Stesso risultato di prima. Che debbo fare a sto punto ????

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Come è definita $page? Da dove proviene? Perché lo switch non è dentro il PHP? (nota il colore del codice).

    Ciao!

  17. #17
    Guest

    Predefinito

    Ciao alemoppo,

    Scusami se ti rispondo sempre tardi, ma in questi giorni sto poco programmando per metter e in pace il mio cervello. Dunque Hai ragione ti ho mandato una parte di codice non ben definita. te la rimando velocemente.

    Codice 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:
    ?>
    <br> <br> <center>

    <!--accetti il regolamento <input name="accetto" type="checkbox" value="1">-->

    <form action='' method='POST'>

    <input id='regolamento' type='checkbox' name="regolamento" value='accetta'>Accetta il regolamento
    <br> <br>

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

    </center> </form>

    </div>
    <?php
    if(isset($_POST['regolamento'])) {

    echo
    'Hai accettato il regolamento';

    }else{
    echo
    'Non hai accettato il regolamento.';
    }

    //Inizito seconda pagina dopo aver accettato il regolamento

    break;
    case
    2:

    echo
    "<h1> <center> BENVENUTO NELLA PAGINA2 </h1> </center>";


    ?>

    </center>
    <?php
    //Inizito terza pagina

    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>

    Questa è la parte di codice che ti mancava non l'avevo cpiata tutta. Come vedi lo switch($page), rientra dei tag php. per quanto riguarda la definizione di $page, sta proprio nello switch($page). Inoltre da pessimo ignorante pensavo di metter euna volta che l'utente avesse accettato il regolamento di spedirlo con questo tipo di link che ora posto. Niente il link t elo debbo mandare domani perchè ora non riesco a trovarlo. Comunque se hai dei suggerimenti e modifiche da fare le accetto ben volentieri. Grazie. Basta che ne esca fuori.

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Invece di:
    Codice PHP:
    $page = (int)$_GET['page'];
    if(EMPTY(
    $page)) $page = 1;
    Sarebbe meglio fare:

    Codice PHP:
    if(!isset($_GET['page']))
    $page = 1;
    else
    $page = (int) $_GET['page'];
    Il problema, però, è che il form che mostri quando non c'é $_GET['page'] non ha un input con name="page". Quindi page non avanzerà mai.

    Invece di quel case, io farei una cosa più pulita: con un if, se è settato $_POST['regolamento'], mostri la pagina che chiami "due", altrimenti mostri la pagina con la checkbox (e immagino il regolamento).

    Quindi il tutto senza switch né $page...

    Ciao!

  19. #19
    Guest

    Predefinito ciao

    Ciao alemoppo,

    In pratica tu toglieresti se ho ben capito questa parte qua:

    Codice PHP:

    //Inizito seconda pagina dopo aver accettato il regolamento

    break;
    case
    2:
    e ci metteresti un if cin un $_POST, giusto ??? Vediamo se ho capito bene, purtroppo con gli if sono sempre stato na mezza sega (scusa il temine), ma è vero.Penserai anche con il retso e forse hai aanche ragine :P a pensarlo. Io peovo a costruire l'if te lo posto e poi mi fai le dovute correzioni (sempre che ti vada ovviamente). Ti ringrazio della tua disponibilità e perdita di tempo. Tra oggi e domani faccio questa cosa, ma penso p iù domani. Ora voglio provare ad iniziare con l'i intanto. Se faccio intempo prima di uscire.

  20. #20
    Guest

    Predefinito ciao

    Ciao alemoppo,

    Allora ho provato a buttare qualcosa giù ma mi ha fatto un casino e non gli è piaciuto. Ti posto il codice di quello che ho fatto:

    Codice PHP:


    <?php
    require_once("connetti.php");
    if(!isset(
    $_POST['regolamento']))
    $page = 2;
    else
    $page = (int) $_POST['page'];
    {

    $page = 1;


    echo
    "<br> <br> <center>";

    //accetti il regolamento <input name="accetto" type="checkbox" value="1">

    echo " <form action='' method='POST'>";
    ?>

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


    <br> <br>

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

    </center> </form>

    </div>
    <?php


    //Inizito seconda pagina dopo aver accettato il regolamento

    break;
    $page=2;

    echo
    "<h1> <center> BENVENUTO NELLA PAGINA2 </h1> </center>";


    }

    ?>
    <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>
    E il tasto "avanti" non si abilita :( Credo di aver sbagliato qualcosa.

    Ti mostro il risultato dopo aver effettuato il login.

    [IMG][/IMG]

    Spero che riesci a vedere l'immagine. Grazie.

  21. #21
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Una cosa del tipo:

    Codice PHP:
    <?php
    //session_start(); //per questo sorgente non serve nemmeno... aparte se c'é qualche altro pezzo di sorgente che lo usa
    //require_once("connetti.php"); //per questo sorgente non serve nemmeno... aparte se c'é qualche altro pezzo di sorgente che lo usa

    ?>
    <!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"
    {
    ?>
    <?= (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
    {
    ?>
    BENVENUTO NELLA PAGINA2
    <?php
    }
    ?>
    </body>
    </html>
    Senza $page (inutile), javascript, tag <center>...

    Ciao!
    Ultima modifica di alemoppo : 17-03-2013 alle ore 16.37.33 Motivo: aggiunti commenti

  22. #22
    Guest

    Predefinito

    Ciao alemoppo,

    LGrazie, la provo subito e ti dico il risultato. Il codice che avevo fatto io non c'avevo capito na mazza in pratica o sbaglio ???? Allora l'ho provato ed è na bomba. Il problema rimane che una volta accettato e memorizzato nel db quindi da 0 che non è accettato passare ad 1 che è accettato, quando si logga non deve più accettare il regolamento e passare alla pagina 2 direttamente. Ci vorrebbe credo una query di controllo all'interno dell'if giusto ???? O ho detto na cavolata ????
    Ultima modifica di fabiodefe : 17-03-2013 alle ore 19.30.52

  23. #23
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Non ho capito il motivo perché settare un flag a 1 nel db se viene accettato... Cioè, magari (come fanno tutti i siti) lo fai accettare al momento dell'iscrizione, quindi se è registrato, perforza ha accettato il regolamento...

    Se comunque vuoi procedere per la tua strada, per non far accettare ogni volta il regolamento se è loggato, è sufficiente controllare se è loggato, quindi se è loggato non mostri il checkbox... Oppure salvi in una sessione il fatto che ha accettato il regolamento... Puoi far tutto.. dipende che vuoi fare .

    Ciao!

  24. #24
    Guest

    Predefinito ciao

    Ciao alemoppo,

    L'idea di far accettare il rgeolamento è venuta dopo aver fatto l'iscrizione ovviamente. Sentivo che mancava qualcosa e ho capito cosa mancava. Quindi avevo appunto pensato una cosa del genere. invece di riscrivere il codice da capo e inserrci la parte del regolamento l'avrei fatto accettare dopo. Il controllo del checkbox l'avevo pensata in questa maniera ovviamente in php:

    Codice PHP:

    // Controllo termini accettati nel db

    $checktermini=mysql_query("SELECT accettatermini FROM utenti WHERE accettaterminil='0'");
    $vuota=mysql_num_rows($checkterminbi);
    if(
    $vuota > 0){
    echo
    "<br> <br> <h1> Attenzione: per pandare avanti devi procedere ad accettare il regolamento Grazie !!! </h1>";
    echo
    "<meta http-equiv='Refresh' content=4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    exit();

    }
    E' tanto sbagliato come concetto ??? Anche perchè l'iscrizione è totalmente in jquery (mi hanno aiutato a farla) e non saprei dove mettere le mani ad aggiungere il regolamento.

  25. #25
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    "SELECT accettatermini FROM utenti WHERE accettaterminil='0'"
    Così selezioni chiunque non abbia ancora accettato i termini. Devi aggiungerci WHERE utente='user'.

    Ciao!

  26. #26
    Guest

    Predefinito

    Ciao alemoppo,

    Quindi diventerebbe così, correggimi se sbagli. perdonami se ti rompo ma almeno cerco di capire passo passo quello che faccio, almeno spero:


    Codice PHP:

    "SELECT accettatermini FROM utenti WHERE accettatermini='0'" AND username = "$username"

    utenete pe rme nella tabella corrisponde a username

  27. #27
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Codice PHP:
    "SELECT accettatermini FROM utenti WHERE accettatermini='0' AND username = '$username'"
    Anche se io farei:
    Codice PHP:
    'SELECT accettatermini FROM utenti WHERE accettatermini=\'0\' AND username = \''.$username.'\''
    Ciao!
    Ultima modifica di alemoppo : 17-03-2013 alle ore 20.34.34

  28. #28
    Guest

    Predefinito Ciao

    Ciao Alemoppo,


    Perdonami la mia intera ignoranza, mi puoi spiegare per favore i seguenti significati della query:


    Query originale:

    Codice PHP:

    'SELECT accettatermini FROM utenti WHERE accettatermini=\'0\' AND username = \''.$username.'\''
    Termini singoli:

    Codice PHP:

    \'0\' \''.$username.'\''
    E dato che ci sono dove la dovrei inserire questo check , dentro l'if ok ma vediamo se non riesco a sbagliare:

    Codice PHP:

    <?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"
    {

    // Controllo termini accettati nel db

    $checktermini=mysql_query("'SELECT accettatermini FROM utenti WHERE accettatermini=\'0\' AND username = \''.$username.'\''");
    $vuota=mysql_num_rows($checktermini);
    if(
    $vuota > 0){
    echo
    "<br> <br> <h1> Attenzione: per pandare avanti devi procedere ad accettare il regolamento Grazie !!! </h1>";
    echo
    "<meta http-equiv='Refresh' content=4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    exit();

    }
    ?>
    <?= (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

    {
    ?>
    BENVENUTO NELLA PAGINA2
    <?php
    }
    ?>
    </body>
    </html>

    Così può andare bene ????

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •