Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 56 di 56

Discussione: Aiuto syntax error

  1. #31
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Usa la funzione print_r in modo tale da controllare i valori dei vari campi.

  2. #32
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Mi stampa:

    Array ( [0] => 1 [id] => 1 [1] => Admin [username] => Admin [2] => Toscana [regione] => Toscana [3] => ***** => 12d0d6548cbfcd6dddf7763e9d6256 [code] => 12d0d6548cbfcd6dddf7763e9d6256 [7] => [verifica] => )

  3. #33
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Sì, ma guarda il sorgente, c'è esattamente ciò che ci deve essere.

  4. #34
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Nel database c'è quindi tutto ciò che serve, ma come mai allora la pagina è bianca?
    Il link è: http://www.programmerscommunity.alte...f7763e9d625646

    E il codice:

    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    'mysqlconn.php');
    mysql_select_db($database, $utenti);
    $bSuccesso = true;
    $username = $_GET['username'];
    $code = $_GET['code'];
    $sql = mysql_query("SELECT * FROM utenti WHERE username='".$username."' ") or die(mysql_error());
    while (
    $row = mysql_fetch_array($sql)) {
    echo
    $row;
    if (
    $row['code'] == $code) {
    $verDB = true;
    $verifica = mysql_query("UPDATE utenti SET verifica = true WHERE username = '".$username."' ") or die (mysql_error());
    ?>
    <html><head>
    <script type="text/javascript">
    function doRedirect() {
    window.open('index.php,'_top');
    }
    window.setTimeout(doRedirect(), 15);
    </script>
    </head>
    <body></body></html> <?php
    }
    }
    ?>

  5. #35
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Ma perché code=12d0d6548cbfcd6dddf7763e9d625646? Dovrebbe essere code=12d0d6548cbfcd6dddf7763e9d6256.
    Perché ci metti quelle due cifre in più?

  6. #36
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Avevo messo il campo code nel database troppo piccolo e le ultime due cifre non le aveva inserite. Ora l'ho ampliato ed ho aggiunto le due cifre rimanenti. A questo punto nel db nella riga corrispondente è stato modificato il valore verifica, ma anzichè essere stato scritto il valore "true" è comparso il valore "1". Come mai?

  7. #37
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Beh, di che tipo è il campo?

  8. #38
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    varchar

  9. #39
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Beh, se ci vuoi proprio la stringa true, allora mettila come stringa, ma non ha molto senso. true e false sono delle costani che rappresentano rispettivamente i valori numerici 1 e 0 (nel linguaggio SQL). Il tipo più adatto per ospitare un valore booleano è appunto boolean.

  10. #40
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Beh, se ci vuoi proprio la stringa true, allora mettila come stringa, ma non ha molto senso. true e false sono delle costani che rappresentano rispettivamente i valori numerici 1 e 0 (nel linguaggio SQL). Il tipo più adatto per ospitare un valore booleano è appunto boolean.
    Si, ma se io gli dico che deve stampare in quel campo proprio la parola "true" non dovrebbe comunque stampare quelle anzichè sostituirla con 1?

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

    Predefinito

    Prova facendo
    Codice:
     SET verifica = 'true'
    Ovvero con le virgolette.

    Ciao!

  12. #42
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Ora va; ma come mai il redirect non funziona? In teoria dopo aver modificato tutti i dati dovrebbe rimandare l'utente alla pagina index.php

    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    'mysqlconn.php');
    mysql_select_db($database, $utenti);
    $bSuccesso = true;
    $username = $_GET['username'];
    $code = $_GET['code'];
    $sql = mysql_query("SELECT * FROM utenti WHERE username='".$username."' ") or die(mysql_error());
    while (
    $row = mysql_fetch_array($sql)) {
    /* echo $row; */
    if ($row['code'] == $code) {
    $verDB = true;
    $verifica = mysql_query("UPDATE utenti SET verifica = 'true' WHERE username = '".$username."' ") or die (mysql_error());
    ?>
    <html><head>
    <script type="text/javascript">
    function doRedirect() {
    window.open('index.php,'_top');
    }
    window.setTimeout(doRedirect(), 15);
    </script>
    </head>
    <body></body></html> <?php
    }
    }
    ?>

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

    Predefinito

    Manca un apice: dovrebbe essere così:
    Codice:
    window.open('index.php','_top');

    Il redirect sostanzialmente può essere fatto in 3 modi: html, javascript e PHP.
    • HTML è supportato da chiunque, ma per un attimo l'utente vede le pagina perché appunto è un redirect html, quindi il browser deve prima caricarlo.
    • javascript è quello che stai utilizzando te. Non è detto che tutti lo supportino. E visto che anche javascript è eseguito da browser, l'utente deve aspettare che il browser interpreti la pagina. Inoltre lo hai messo dentro .setTimeout(), quindi dopo averlo eseguito aspetta altri 15 millisecondi (probabilmente lo hai fatto intenzionalmente, anche se non capisco il motivo).
    • Infine c'é il modo tramite PHP, che è quello che io personalmente utilizzo maggiormente: il browser riceve nell'header della richiesta un messaggio dicendo che deve effettuare il redirect. L'unica accortezza di questo modo è di non scrivere nessun output html prima di questo comando, altrimenti la richiesta chiude l'head e il tuo comando non può più andare a modificare tale "messaggio".

    Ciao!
    Ultima modifica di alemoppo : 17-03-2014 alle ore 16.43.17

  14. #44
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Perfetto, ora va; probabilmente in una successiva revisione del sito modificherò i redirect utilizzando il metodo tramite PHP. Scusate un'ultima cosa: un'altra pagina; dopo aver verificato la validità di una sessione carica una pagina html, ma la pagina rimane vuota.

    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    'mysqlconn.php');
    mysql_select_db($database, $utenti);
    $id = $_SESSION['id'];
    if (
    $_SESSION['stat'] != true) {
    ?><html><head>
    <script type="text/javascript">
    function doRedirect() {
    window.open('login.php','_top');
    }
    window.setTimeout(doRedirect(), 5);
    </script>;
    </head><body></body></html><?php }
    $result = mysql_query("SELECT * FROM utenti WHERE id='".$id."'") or die(mysql_error());
    while (
    $resrow = mysql_fetch_array($result)) {
    ?>
    <html>
    <head>
    <title>Home</title>
    <meta charset="UTF-8">
    </head>
    <body>
    <div id="barra">
    <a href="home.php" title="home.php">Home</a>&nbsp;<a href="panofferte.php" title="Panoramica offerte">Panoramica offerte</a>&nbsp;<a href="opzioni.php" title="Opzioni">Opzioni</a>
    </div>
    <div id="main">
    <H1>Qui deve essere riempito</H1>
    <H2>Lavori in corso</H2>
    </div>
    </body>
    </html>
    <?php } ?>

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

    Predefinito

    Beh, controlla se $_SESSION['stat'] è diverso da true, ad esempio con var_dump().

    p.s:
    Codice PHP:
    while ($resrow = mysql_fetch_array($result)) {
    ?>
    <html>
    <head>
    <title>Home</title>
    <meta charset="UTF-8">
    </head>
    <body>
    <div id="barra">
    <a href="home.php" title="home.php">Home</a>&nbsp;<a href="panofferte.php" title="Panoramica offerte">Panoramica offerte</a>&nbsp;<a href="opzioni.php" title="Opzioni">Opzioni</a>
    </div>
    <div id="main">
    <H1>Qui deve essere riempito</H1>
    <H2>Lavori in corso</H2>
    </div>
    </body>
    </html>
    <?php } ?>
    Sicuramente gli id sono chiavi primarie e il while verrà eseguito soltanto una volta. Quindi perché non utilizzare un if invece di un while? Se invece gli id non sono univoci, ragiona su quel che stai facendo.

    Ciao!
    Ultima modifica di alemoppo : 17-03-2014 alle ore 21.40.42

  16. #46
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Il valore di $_SESSION['stat'] è true, anche perchè in caso contrario il redirect farebbe tornare alla pagina di login. Il problema deve quindi essere nella parte successiva di codice; dal while in poi... Effettivamente hai ragione: il while verrà eseguito solo una volta; quindi in effetti non ha senso utilizzarlo. Ho dunque modificato così il codice:

    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    'mysqlconn.php');
    mysql_select_db($database, $utenti);
    $id = $_SESSION['id'];
    if (
    $_SESSION['stat'] != true) {
    ?><html><head>
    <script type="text/javascript">
    function doRedirect() {
    window.open('login.php','_top');
    }
    window.setTimeout(doRedirect(), 5);
    </script>;
    </head><body></body></html><?php }
    $result = mysql_query("SELECT * FROM utenti WHERE id='".$id."'") or die(mysql_error());
    ?>
    <html>
    <head>
    <title>Home</title>
    <meta charset="UTF-8">
    </head>
    <body>
    <div id="barra">
    <a href="home.php" title="home.php">Home</a>&nbsp;<a href="panofferte.php" title="Panoramica offerte">Panoramica offerte</a>&nbsp;<a href="opzioni.php" title="Opzioni">Opzioni</a>
    </div>
    <div id="main">
    <H1>Qui deve essere riempito</H1>
    <H2>Lavori in corso</H2>
    </div>
    </body>
    </html>
    Quando avrò definito i dati da inserire nella pagina html aggiungerò la stringa nella parte iniziale in PHP:

    $row = mysql_fetch_array($sql)

    E all'interno dell'HTMl in corrispondenza dei valori da richiamare: <?php echo $row['valore']; ?>

    Va bene, no?

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

    Predefinito

    Sì. In effetti ho letto male su: pensavo che non ti funzionasse il redirect.
    Se la pagina rimane vuota, significa che non trova nessun risultato nel database. Comunque va bene come pensi di fare. Occhio soltanto di non stampare entrambi i codici html, di evitare di stampare una cosa come:
    Codice HTML:
    <html><head> 
                <script type="text/javascript"> 
                        function doRedirect() { 
                            window.open('login.php','_top'); 
                            } 
                            window.setTimeout(doRedirect(), 5); 
                        </script>; 
                </head><body></body></html><html> 
        <head> 
            <title>Home</title> 
            <meta charset="UTF-8"> 
        </head> 
        <body> 
            <div id="barra"> 
                <a href="home.php" title="home.php">Home</a>&nbsp;<a href="panofferte.php" title="Panoramica offerte">Panoramica offerte</a>&nbsp;<a href="opzioni.php" title="Opzioni">Opzioni</a> 
            </div> 
            <div id="main"> 
                <H1>Qui deve essere riempito</H1> 
                <H2>Lavori in corso</H2> 
            </div> 
        </body> 
    </html>
    Magari metti un else per stampare il secondo codice, oppure fai il redirect tramite PHP semplicemente con:
    Codice PHP:
    header('Location: login.php');
    Ciao!

  18. #48
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Grazie, risolto.
    Nell'esecuzione della seguente pagina mi viene restituito l'errore "No database selected"

    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    'mysqlconn.php');
    mysql_select_db($databse, $offerte);
    $bSuccesso = true;
    $num = $_POST['num'];
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $mail = $_POST['email'];
    $nascita = $_POST['nascita'];
    $provincia = $_POST['provincia'];
    $indirizzo = $_indirizzo['indirizzo'];
    $control = mysql_query("SELECT * FROM offerte WHERE num = '".$num."' ") or die(mysql_error());
    $info = mysql_fetch_array($control);
    $numoff = $resrow['numoff'];
    if (
    $numoff == 0) {
    echo
    "Non è possibile completare l'operazione: l'offerta richiesta è esaurita";
    } else {
    $numoff = $numoff - 1;
    $countdown = mysql_query("UPDATE offerte SET numoff = '".$numoff."' WHERE num = '".$num."' ") or die(mysql_error());
    //INIZIO GENERAZIONE CODICE
    do {
    mysql_select_db($database, $acquisti);
    function
    rPass($length = 6) {

    // Questo array contiene i caratteri con i quali
    // saranno create le password
    $lettere = explode(" ",
    "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z "
    ."a b c d e f g h i j k l m n o p q r s t u v w x y z "
    ."0 1 2 3 4 5 6 7 8 9");

    // questo ? il clico tramite si crea la password
    for($i=0;$i<$length;$i++) {
    srand((double)microtime()*8625342);
    $foo = rand(0, 61);
    $pass = $pass.$lettere[$foo];
    }
    $control = mysql_query("SELECT * FROM acquisti WHERE codeoff = '".$pass."'") or die (mysql_error());
    if (
    mysql_num_rows($control) != 0) {
    $esist = 0;
    } else {
    $esist = 1; }
    return
    $pass;
    return
    $esist;

    }

    } while (
    $esist == 0);

    //FINE GENERAZIONE CODICE
    mysql_select_db($database, $acquisti);
    $buy = mysql_query("INSERT INTO acquisti (num, nome, cognome, email, nascita, provincia, indirizzo, codeoff) values ('".$num."', '".$nome."', '".$cognome."', '".$email."', '".$nascita."', '".$provincia."', '".$indirizzo."', '".$pass."')") or die (mysql_error());
    if (
    $bSuccesso)
    {
    $intestazioni = "MIME-Version: 1.0\r\n";
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $messaggio = "
    <html><head><title>Codice acquisto</title></head>
    <body>
    <h1>Grazie per aver effettuato l'acquisto</h1><br><br>
    Stampa questa mail e consegnala presso
    $azienda; il pagamento dovrà essere effettuato in loco secondo le modalità stabilite dall'azienda erogatrice dell'offerta.<br><br>
    CODICE OFFERTA:
    $pass
    </body></html>"
    ;
    mail ($mail, "Codice acquisto", $messaggio, $intestazioni);
    echo
    "Acquisto avvenuto con successo; una mail con il codice per attivare l'offerta è stata inviata alla tua casella di posta elettronica.";
    header('Location: index.php');
    mysql_select_db($databse, $offerte);
    $countdown = mysql_query("UPDATE offerte SET numoff = (numoff - 1) WHERE num = '".$num."' ") or die(mysql_error());

    }
    else
    {
    echo
    '<p align="center">Spiacenti, &egrave; avvenuto un errore! Indietro per riprovare.</p>';
    }
    }
    ?>
    Ho controllato più volte il codice, ma mi sembra tutto a posto; inoltre nel file mysqlconn.php tutti i parametri mi sembrano impostati correttamente:

    Codice PHP:
    <?php
    header
    ('Content-type: text/html;charset=utf-8');
    $hostname = "localhost";
    $database = "***";
    $username = "***";
    $password = "***";
    $utenti = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
    $offerte = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
    $acquisti = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
    ?>
    Co sa c'è che non va?

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

    Predefinito

    Perché hai 3 database? Su altervista puoi averne solo uno mysql, e le connessioni verso database esterni sono disabilitate.

    Ciao!

  20. #50
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Ho un solo database. Ho però tre tabelle nel database

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

    Predefinito

    E allora devi fare una sola connessione. Vedi qui.
    Tra l'altro, non è necessario inserire la password corretta: puoi lasciare il campo vuoto (che è più sicuro).

    Le tabelle le specifichi nelle query.

    Se stai imparando ora, non ti conviene imparare le funzioni mysql_*, perché sono deprecate. Dovresti partire subito da mysqli.

    Ciao!

  22. #52
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Non capisco al posto di cosa e come dovrei usare mysql_connect()

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

    Predefinito

    al posto delle
    Codice:
    mysql_pconnect
    Ciao!

  24. #54
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    al posto delle
    Codice:
    mysql_pconnect
    Ciao!
    Io però nel mio codice non ho mai usato la funzione
    Codice:
    mysql_pconnect

  25. #55
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Non ho quindi capito quale sia il problema che ha il mio codice...

  26. #56
    programmerscommunity non è connesso Utente giovane
    Data registrazione
    26-03-2013
    Messaggi
    35

    Predefinito

    Problema risolto; un piccolissimo errore di battitura all'inizio. avevo scritto $dtabase anziche $database

    L'esecuzione ora non da errori, non capisco però perchè sebbene il numero di articoli disponibili sia 5 l'if lo consideri come 0 e visualizzi un messaggio d'errore predisposto.

    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    'mysqlconn.php');
    mysql_select_db($database, $offerte);
    $bSuccesso = true;
    $num = $_POST['num'];
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $mail = $_POST['email'];
    $nascita = $_POST['nascita'];
    $provincia = $_POST['provincia'];
    $indirizzo = $_indirizzo['indirizzo'];
    $control = mysql_query("SELECT * FROM offerte WHERE num = '".$num."' ") or die(mysql_error());
    $info = mysql_fetch_array($control);
    $numoff = $resrow['numoff'];
    if (
    $numoff == 0) {
    echo
    "Non è possibile completare l'operazione: l'offerta richiesta è esaurita";
    } else {....
    .......
    ?>

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

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