Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: problema id request

  1. #1

    problema id request

    salve a tutti, sto realizzando una pagina dinamica che prelevi dati da un database.
    ho dei problemi riguardo la variabile id che deve essere richiamata attraverso l'url
    questo è il codice, dove ho sbagliato?
    <?php
    $db = mysql_connect("localhost","user","pass");
    mysql_select_db("campaniavideo_it_db",$db);
    $request = "SELECT * FROM eventi WHERE id=".$id;
    $result = mysql_query ($request,$db);
    $eventi = mysql_fetch_object($result);
    mysql_free_result($result);
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>eventi.php</title>
    </head>

    <body>
    <table width="760" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td><?php echo $eventi->titolo ?></td>
    </tr>
    <tr>
    <td><?php echo $eventi->testo ?></td>
    </tr>
    </table>
    </body>
    </html>

    non ci sono problemi di collegamento al database perchè scrivendo dopo WHERE semplicemente id=1 funziona tutto

  2. #2
    usa $_GET[id'] invece di $id;

    Hai quasi certamente il register_globals disattivato, il che è un bene. Abituati ad usare gli array corrispondenti alle variabili in input.

  3. #3
    potresti postarmi il codice completamente corretto? continua a darmi errori, poi credo che ti sia scappata quella ' prima di ]
    usa $_GET[id'] invece di $id;

  4. #4
    $_GET['id']
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  5. #5
    grazie mille, giusto 5 min fa leggendo nel file php.ini alla voce register_globals ho trovato la sintassi corretta e funziona!
    ultima domanda:ho notato che se nell'url nn inserisco nessuna query del tipo ?id=1 mi da i precedenti errori, dicendo
    "Notice: Undefined index: id in c:\program files\easyphp1-8\www\eventi.php on line 4"
    e di conseguenza dando una serie di errori a catena. come posso fare in modo che se il campo id= resta vuoto mi dia un messaggio di errore o meglio mi reindirizzi ad un' altra pagina?

  6. #6
    Il campo id nel database è numerico ?
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  7. #7
    Mi rispondo da solo: è numerico.

    prova così:

    codice:
    <?php
    
    $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
    $db = mysql_connect("localhost","user","pass");
    mysql_select_db("campaniavideo_it_db",$db);
    $request = "SELECT * FROM eventi WHERE id=".$id;
    $result = mysql_query ($request,$db);
    $eventi = mysql_fetch_object($result);
    mysql_free_result($result);
    ?>
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  8. #8
    Originariamente inviato da gm
    intval($_GET['id'])
    In linea generale sarebbe meglio non fare un cast in integer degli id, perché spesso gli interi sono rappresentati su 32 bit mentre l'id in questione, se è ad esempio un BIGINT molto grande, può richiedere più cifre e quindi la conversione darà luogo a un numero diverso da quello previsto.
    E' preferibile tenerlo come stringa, ma verificare che sia "numerico".

    Poi chiaro, mediamente non si hanno mai tabelle così grandi e quindi nel 99.9 periodico dei casi funzionerà benissimo come dici tu.

  9. #9
    Originariamente inviato da skidx
    In linea generale sarebbe meglio non fare un cast in integer degli id, perché spesso gli interi sono rappresentati su 32 bit mentre l'id in questione, se è ad esempio un BIGINT molto grande, può richiedere più cifre e quindi la conversione darà luogo a un numero diverso da quello previsto.
    E' preferibile tenerlo come stringa, ma verificare che sia "numerico".
    Hai ragione anche tu, diciamo che adesso franklin_92 ha un quadro pressochè completo della situazione
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  10. #10
    Originariamente inviato da gm
    Mi rispondo da solo: è numerico.

    prova così:

    codice:
    <?php
    
    $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
    $db = mysql_connect("localhost","user","pass");
    mysql_select_db("campaniavideo_it_db",$db);
    $request = "SELECT * FROM eventi WHERE id=".$id;
    $result = mysql_query ($request,$db);
    $eventi = mysql_fetch_object($result);
    mysql_free_result($result);
    ?>

    scusate se mi intrometto...
    volevo chiedere che differenza c'è tra intval e int...
    codice:
    $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
    e
    codice:
    $id = (isset($_GET['id'])) ? (int)($_GET['id']) : 0;
    ho cercato...ma nn riesco a trovare quale sia la differenza...

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.