Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034

    Controllare se un ID è presente in tabella

    salve. Come posso controllare se un id (campo autoincrementante e associato al record) è presente in tabella? Mi spiego: ho 10 record estratti e ognuno ha un proprio id. Capita che ho cancellato qualche record e quando richiamo proprio quello che non c'è, ottengo la pagina vuota.
    Invece vorrei selezionare (o comunque, avere a disposizione per le SELECT) soltanto gli id (e relativi record) che sicuramente sono presenti in tabella e quindi so di poterli trovare e selezionare

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    ecco ma nel mio caso faccio anche altri controlli. Devo stampare i campi della tabella solo se associati ad un id esistente e solo se inferiori all'ultimo id inserito.
    Codice PHP:
    $query "SELECT MAX(id) AS lastid FROM tabella";
    $result mysql_query($query$db) or die ("Tipo di errore: " mysql_error() . " - Query: $query");
    $row mysql_fetch_array($result);
    $lastid $row["lastid"];
    if(isset(
    $_GET['id']) && is_numeric($_GET['id']) && intval($_GET['id']) <= $lastid) { 
    //stampo i campi se no mostro l'errore
    ?> 

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    si, funziona, ma controlla solo se l'id è inferiore o uguale all'ultimo inserito. E lascia passare però anche quelli che non sono più presenti in tabella: esempio con id 1,2,3,4,5,8,10.... vedrò anche il 6, 7 e 9

  6. #6
    [supersaibal]Originariamente inviato da meganoide
    si, funziona, ma controlla solo se l'id è inferiore o uguale all'ultimo inserito. E lascia passare però anche quelli che non sono più presenti in tabella: esempio con id 1,2,3,4,5,8,10.... vedrò anche il 6, 7 e 9 [/supersaibal]
    Sei tutt'altro chiaro. Se non c'e' non c'e', perche' pagina bianca?

    Se ho capito bene, in pratica vuoi prendere tutti (tutti ?? oppure un certo numero ??) gli id esistenti in un range max definito dallo user, ma il valore di questoid non deve essere superiore all'ultimo id inserito.

    Quindi tu fai una validazione di questo GET[id]. Ok. Avendo l'id validato puoi mettere come condizione:

    WHERE id <= '$_GET[id]'
    ORDER BY
    LIMIT

    Ma il dubbio di non aver capito quello che vuoi fare e' grande....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    In pratica, ho degli articoli (testo) associati ad un ID (campo autoincrementante). Però, gli ID non sono più consecutivi (1,2,3....) in quanto ne cancello ogni tanto qualcuno (e cancello pure il testo ad esso associato): quindi ho l'ordine 1,2,4,6,12 ecc.

    Richiamo, per stamparlo sulla pagina, l'articolo che ha ID 12 facendomi arrivare l'id via GET. Vorrei però visualizzare nel layout della pagina solo l'articolo presente nella tabella e solo se è inferiore (MAX()) all'ultimo id inserito.

    Se così non faccio, quando richiamo un ID che non c'è più rischio di mostrare il layout vuoto.

  8. #8
    Quindi il problema e' nel manico. Devi far inviare un id presente e non un id qualunque. Se dalla pagina precedente hai un link a un determinato id, si suppone che questo link sia validato, cioe' la scelta avverra' in base ad un testo presente nel db.

    Basta estrarre titolo e id per popolare il form o i link che siano. Ci saranno solo gli id presenti nel db. Pensavo volessi parare un'inserimento di id direttamente nell'URL. In questo caso potresti contare il numero di righe trovate. Se zero metti un avviso di articolo non esistente. Ma non dovresti neppure presentare il link se l'articolo non esiste.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    scusa la banalita'... non puoi fare una query in cui recuperi anche gli id? Fai il fetch della colonna e confronti l'id del link con l'array degli id (tipo con in_array). Se lo trovi, stampi l'articolo associato a quell'id, altrimenti fai quel che serve (mandi il primo articolo o una pagina di default che avverte che l'articolo e' stato cancellato, fai un redirect...)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    [supersaibal]Originariamente inviato da piero.mac
    Quindi il problema e' nel manico. Devi far inviare un id presente e non un id qualunque. Se dalla pagina precedente hai un link a un determinato id, si suppone che questo link sia validato, cioe' la scelta avverra' in base ad un testo presente nel db.

    Basta estrarre titolo e id per popolare il form o i link che siano. Ci saranno solo gli id presenti nel db. Pensavo volessi parare un'inserimento di id direttamente nell'URL. In questo caso potresti contare il numero di righe trovate. Se zero metti un avviso di articolo non esistente. Ma non dovresti neppure presentare il link se l'articolo non esiste. [/supersaibal]
    giustissimo, cmq. per sicurezza è sempre meglio controllare che l'id esista.


    Codice PHP:
    $query 'SELECT id,testo FROM tabella WHERE id='.$_GET['id'].'';
    $result mysql_query($query$db) or die ("Tipo di errore: " mysql_error() . " - Query: $query");
    $num = @mysql_num_rows ($result);

    if (
    $num==0){
        echo 
    'errore: ID inesistente';
    }else{
    $row mysql_fetch_array($result);
    // codice html della pagina


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.