Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con le condizioni

    Salve a tutti, mi aiutate a trovare l'errore?
    Questa è una pagina che riceve i dati
    Codice PHP:
    <?php
    $db 
    mysql_connect('localhost''root''');
    mysql_query('SET CHARACTER SET utf8');
    $utente $_POST['utente'];
    $libro $_POST['libro'];
    $oper $_POST['oper'];
    if (
    $oper ==='1')
    {
    $sqlinser"insert into mipiace (id_libro, id_utente, oper) values ('$libro', '$utente', '$oper')";
    echo 
    $sqlinser;
    $oper '2';
    }
    if (
    $oper ==='2')
    {
        
    $sqlinser"insert into mipiace (id_libro, id_utente, oper) values ('$libro', '$utente', '$oper')";
    echo 
    $sqlinser;
        
    $oper ='1';
    }
    echo 
    $oper;
    mysql_select_db("libri"$db)
    or die (
    "Impossibile connettersi al database");
    if (!
    mysql_query($sqlinser$db))
    {
    print(
    "attenzione, impossibile inserire il record $libro $utente");
    }
    {
          
    $conn =  @new mysqli('localhost''root','','libri');

          
    $result = @$conn->query("SELECT COUNT(*) AS totale FROM mipiace WHERE id_libro='".$libro."'");
      
    $row $result->fetch_assoc();
     
      
    $num_libro $row['totale'];

    print 
    json_encode('piace a '.$num_libro.' persone <button onclick="likelibro('.$libro.','.$utente.','.$oper.')"><span>non mi piace</span></button>');
    }
    mysql_close($db);

    ?>
    le variabili $libro, $utente e $oper vengono inviati alla pagina da una funzione ajax, e la variabile $oper può assumere valore 1 (di default) o 2 e, quindi, la pagina php deve eseguire la prima o la seconda query a secondo del valore di $oper. In realtà la seconda query dovrà essere di modifica e non di inserimento. Il problema è che, indipendentemente dal valore di $oper, viene eseguita sempre la seconda query come se fossero vere entrambe le condizioni; infatti nel preview di chrome ottengo:

    insert into mipiace (id_libro, id_utente, oper) values ('1', '221', '1')insert into mipiace (id_libro, id_utente, oper) values ('1', '221', '2')1"piace a 34 persone <button onclick=\"likelibro(1,221,2)\"><span>non mi piace<\/span><\/button>"

    (ho inserito degli echo per capire cosa accade nel codice). Inoltre la funzione
    codice:
    print json_encode......
    non funziona, metre funziona perfettamente se elimino le condizioni, utilizzo una sola query di inserimento e faccio passare dalla funzione ajax solo le variabili $libro e $utente.
    Qualcuno mi sa dire dove sbaglio? Grazie mille

  2. #2
    Scusa eh.....

    Codice PHP:
    ...
    $oper $_POST['oper'];
    if (
    $oper === '1') {
        
    $sqlinser"insert into mipiace (id_libro, id_utente, oper) values ('$libro', '$utente', '$oper')";
        echo 
    $sqlinser;
        
    $oper '2';
    }

    if (
    $oper === '2') {
        
    $sqlinser"insert into mipiace (id_libro, id_utente, oper) values ('$libro', '$utente', '$oper')";
        echo 
    $sqlinser;
        
    $oper ='1';

    ... 
    ...e ovvio che se è vera la prima condizione è vera anche la seconda dato che all'interno del primo if imposti $oper = '2' !!!
    Quindi se entra nel primo if entrerà sempre anche nel secondo.

    P.S.
    Il codice che hai scritto non ha alcun senso!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    hai perfettamente ragione; ho scritto così:
    Codice PHP:
    $oper $_POST['oper'];
    if (
    $oper =='1')
    {
    $sqlinser"insert into mipiace (id_libro, id_utente, oper) values ('$libro', '$utente', '$oper')";
    print 
    "eseguo la prima con $oper";
    $oper ='2';
    }
    elseif (
    $oper =='2')
    {
        
    $sqlinser"insert into mipiace (id_libro, id_utente, oper) values ('$libro', '$utente', '$oper')";
        print 
    "eseguo la seconda con $oper";
        
    $oper ='1';

    }
    mysql_select_db("libri"$db)
    or die (
    "Impossibile connettersi al database");
    if (!
    mysql_query($sqlinser$db))
    {
    print(
    "attenzione, impossibile inserire il record $libro $utente");
    }
    {
          
    $conn =  @new mysqli('localhost''root','','libri');

          
    $result = @$conn->query("SELECT COUNT(*) AS totale FROM mipiace WHERE id_libro='".$libro."'");
      
    $row $result->fetch_assoc();
     
      
    $num_libro $row['totale'];

    print 
    json_encode('piace a '.$num_libro.' persone <button onclick="likelibro('.$libro.','.$utente.','.$oper.')"><span>non mi piace</span></button>');
    }
    mysql_close($db);

    ?> 
    e nella preview di chrome ottengo quello che voglio:
    eseguo la prime con 1"piace a 5 persone <button onclick=\"likelibro(1,221,2)\"><span>non mi piace<\/span><\/button>"

    ma adesso non viene eseguita nessuna query

  4. #4
    mi correggo: funziona perfettamente. Ora è rimasto l problema di
    codice:
    print json_encode('piace a '.$num_libro.' persone <button onclick="likelibro('.$libro.','.$utente.','.$oper.')"><span>non mi piace</span></button>');
    che non funziona

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.