Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Controllo su $var passata via GET

    ciao,

    ho un menu in cui elenco i prodotti presenti nel DB.
    per visualizzare la scheda, passo via GET l'id del prodotto, tipo page=view&id=8 ed eseguo la query

    Se dal pannello di amministrazione decido di eliminare un prodotto, e nel front-end ho ancora la scheda di quel prodotto aperta, al refresh, ovviamente mi escono tutta una serie di warning perchè quell' id non esiste più.

    allora ho pensato di mettere un controllo prima della query tipo:

    Codice PHP:
    if (isset($_GET['id']) && $_GET['id'] > 0) {
        
    $productId $_GET['id'];
    } else {
        
    // redirect a index.php se il prodotto non è presente
        
    header('Location: index.php');

    ma non funziona, mi escono sempre i warning.
    forse non è il modo corretto?

  2. #2
    perche' quello che viene a mancare e' il prodotto e non la valorizzazione del GET che permane con il refresh.

    bisognerebbe vedere cosa dicono i warning

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    97
    quando aggiorni la pagina trovi comunque la variabile GET impostata.
    devi fare un controllo nel DB: se esiste l'id uguale alla variabile GET allora prosegui

  4. #4
    in questo modo (suggerito da nika90) potresti aver trovato la risposta al tuo problema oO xiau Oo

  5. #5
    Originariamente inviato da Nika90
    quando aggiorni la pagina trovi comunque la variabile GET impostata.
    devi fare un controllo nel DB: se esiste l'id uguale alla variabile GET allora prosegui
    non credo sia quello il problema. Se manca l'id nel db otterrebbe zero result set, non un errore.

    zero righe non e' mai un warning. Se lo generasse ci sarebbe da rivedere il codice di controllo usato sul result set.

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

  6. #6
    Codice PHP:
    if (isset($_GET['id']) && $_GET['id'] > 0) {
        
    $productId $_GET['id'];
    } else {
        
    // redirect a index.php se il prodotto non è presente
        
    header('Location: index.php');

    Se aggiorno la mia pagina ho sempre la variabile get id impostata, quindi è sempre TRUE la condizione oO

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    97
    o non ho capito io il problema o non hai capito tu la risposta:

    fai una SELECT sulla tabella dei prodotti cercando quelli con ID = GET['id']
    se ti restituisce 0 righe allora dai un messaggio di errore altrimenti continua con l'esecuzione ordinaria

    quel controllo che hai fatto tu dovresti eliminarlo completamente (è inutile visto che il get è sempre impostato)

  8. #8
    Originariamente inviato da Nika90
    o non ho capito io il problema o non hai capito tu la risposta:

    fai una SELECT sulla tabella dei prodotti cercando quelli con ID = GET['id']
    se ti restituisce 0 righe allora dai un messaggio di errore altrimenti continua con l'esecuzione ordinaria

    quel controllo che hai fatto tu dovresti eliminarlo completamente (è inutile visto che il get è sempre impostato)
    meglio quotare altrimenti non si capisce cosa rispondete e a chi.

    Fare una select risolve "quel" problema ma non eliminerebbe il problema. Nel senso che se esegue una query su un id non esistente NON riceverebbe un errore come asserisce blur, ma zero righe di result set. Questo NON genera alcun errore. Caso mai e' la gestione del result set che e' scorretta e genera un errore. Per questo ho chiesto di vedere il warning, altrimenti e' solo sparare nel mucchio.

    Fare una query preventiva per vedere se esiste un valore invece di valutare il result set e' solo codice inutilmente in piu'.

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

  9. #9
    ok ho risolto mettendo un controllo DOPO la query di select



    Codice PHP:
    $sql ="SELECT * FROM tbl_product WHERE pd_id = $productId";
            
    $result dbQuery($sql) or die(mysql_error());
              
           if (
    mysql_num_rows($result) > ) {  // controllo se quel prodotto esiste ancora
            
            
    $row dbFetchAssoc($result);
                  
    extract($row);


    //resto del codice



    }  else {echo"<meta http-equiv=\"Refresh\" content=\"0;url=index.php?page=catalogo\">";} 

  10. #10
    Originariamente inviato da Nika90
    o non ho capito io il problema o non hai capito tu la risposta:
    ho capito ora la risposta ma anche il problema che e' quello del warning che riceve....

    Originariamente inviato da Nika90
    devi fare un controllo nel DB: se esiste l'id uguale alla variabile GET allora prosegui
    per me questo non significava controllare il result set.... ma l'esistenza dell'id .... a prescindere.

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

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.