Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Get e php

  1. #1

    Get e php

    Ciao, ho fatto una pagina php che prende il codice "id" dalla pagina precendente

    Codice PHP:
    $id_prov_get $_GET['id_prov'];
    $id_prov_get addslashes($id_prov_get);
    $id_prov_get htmlspecialchars($id_prov_get);


    $query mysql_query("SELECT * FROM province WHERE id='$id_prov_get'");
    while(
    $result mysql_fetch_array($query)) {

    $id_prov $row['id'];
    $cap_prov $row['cap'];
    $prefisso_prov $row['prefisso'];
    $asl_prov $row['codice_asl'];
    $com_prov $row['comune_stato'];
    $pro_stato_prov $row['provincia_stato'];
    $targato_prov $row['targato'];
    $com_prov $row['nome'];



    Adesso però se stampo $id_prov_get mi da il risulato però dp averlo passato sul mysql è provo a stampare $com_prov non mi stampa nulla..

    Cosa sbaglio??


  2. #2
    Prova ad utilizzare mysql_fetch_assoc invece di mysql_fetch_array

  3. #3
    E' normale,
    dipende dal fatto che scarichi i risultati del vettore $row, ma questo non è definito. Hai saltato qualche passaggio tra $result (la risorsa MySQL) e $row (il vettore con indici numerici e associativi contenente le righe risultato della query):

    Codice PHP:

    $id_prov_get 
    $_GET['id_prov'];
    $id_prov_get addslashes($id_prov_get);
    $id_prov_get htmlspecialchars($id_prov_get);


    $query "SELECT * FROM province WHERE id='$id_prov_get'";
    $result mysql_query($query$db);
    while(
    $row mysql_fetch_array($result)) {
        
    $id_prov $row['id'];
        
    $cap_prov $row['cap'];
        
    $prefisso_prov $row['prefisso'];
        
    $asl_prov $row['codice_asl'];
        
    $com_prov $row['comune_stato'];
        
    $pro_stato_prov $row['provincia_stato'];
        
    $targato_prov $row['targato'];
        
    $com_prov $row['nome'];

    Dove $db è l'identificativo della connessione.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  4. #4
    Se ti interessa essere un po' più preciso, io ti consiglio:
    • un controllo condizionale per verificare che quella variabile GET sia definita, altrimenti la definisci come stringa vuota (in tal caso se hai error_reporting settato a E_ALL o giù di lì non hai problemi di errori a schermo).
    • Un controllo sulla corretta esecuzione della query da parte di MySQL, in caso contrario fai stampare codice errore e descrizione errore nella query inserita, (utile in fase di sviluppo per te, probabilmente da oscurare a lavoro ultimato per evitare diffusione di informazioni sullo script).
    • Usare mysql_fetch_assoc() anziché mysql_fetch_array dal momento che estrai i campi della riga solo attraverso gli indici associativi, e risparmi un piccolo carico a MySQL (guadagnando in prestazioni).


    Codice PHP:
    <?php
    if (isset($_GET['id_prov_get'])) {
        
    $id_prov_get htmlspecialchars(addslashes($_GET['id_prov']));
    } else {
        
    $id_prov_get "";
    }

    $query "SELECT * FROM province WHERE id='$id_prov_get'";
    if (!(
    $result mysql_query($query$db))) {
        echo 
    "<div>Errore ".mysql_errno($db)." nella query, descrizione:
    "
    .mysql_error($db)."</div>\n";
    } else {
        while(
    $row mysql_fetch_assoc($result)) {
            
    $id_prov $row['id'];
            
    $cap_prov $row['cap'];
            
    $prefisso_prov $row['prefisso'];
            
    $asl_prov $row['codice_asl'];
            
    $com_prov $row['comune_stato'];
            
    $pro_stato_prov $row['provincia_stato'];
            
    $targato_prov $row['targato'];
            
    $com_prov $row['nome'];
        }
    }
    ?>
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  5. #5
    Ciao ragazzzi, grazie per le risposte

    Adesso ho provato a fare così

    Codice PHP:
    $id_prov_get $_GET['id_prov'];
    $id_prov_get addslashes($id_prov_get);
    $id_prov_get htmlspecialchars($id_prov_get);


    $query "SELECT * FROM province WHERE id='$id_prov_get'";
    $result mysql_query($query);
    while(
    $row mysql_fetch_array($result)) {
        
    $id_prov $row['id'];
        
    $cap_prov $row['cap'];
        
    $prefisso_prov $row['prefisso'];
        
    $asl_prov $row['codice_asl'];
        
    $com_prov $row['comune_stato'];
        
    $pro_stato_prov $row['provincia_stato'];
        
    $targato_prov $row['targato'];
        
    $com_prov $row['nome'];
    }

    echo 
    $com_prov
    Ma cmq non funziona

    Non capisco cosa sbaglio...

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    Codice PHP:
    $id_prov_get = (int)$_GET['id_prov'];
    $id_prov_get addslashes($id_prov_get);
    $id_prov_get htmlspecialchars($id_prov_get);


    $query myl_query("SELECT * FROM province WHERE id='$id_prov_get'") or die mysql_error("errore nella query");

    while(
    $row mysql_fetch_array($query)) {
        
    $id_prov $row['id'];
        
    $cap_prov $row['cap'];
        
    $prefisso_prov $row['prefisso'];
        
    $asl_prov $row['codice_asl'];
        
    $com_prov $row['comune_stato'];
        
    $pro_stato_prov $row['provincia_stato'];
        
    $targato_prov $row['targato'];
        
    $com_prov $row['nome'];
    }

    echo 
    $com_prov
    in questo modo vedi se esise un erore nela query

  7. #7
    Ho trovato l'errore avevo ripetuto la variabile, ma nel secondo posto era vuota..


  8. #8
    Originariamente inviato da Lowenthal
    Codice PHP:
    $id_prov_get = (int)$_GET['id_prov'];
    $id_prov_get addslashes($id_prov_get);
    $id_prov_get htmlspecialchars($id_prov_get);


    $query myl_query("SELECT * FROM province WHERE id='$id_prov_get'") or die mysql_error("errore nella query");

    while(
    $row mysql_fetch_array($query)) {
        
    $id_prov $row['id'];
        
    $cap_prov $row['cap'];
        
    $prefisso_prov $row['prefisso'];
        
    $asl_prov $row['codice_asl'];
        
    $com_prov $row['comune_stato'];
        
    $pro_stato_prov $row['provincia_stato'];
        
    $targato_prov $row['targato'];
        
    $com_prov $row['nome'];
    }

    echo 
    $com_prov
    in questo modo vedi se esise un erore nela query
    Anche con il sistema che ho postato io si vede se c'è un errore nella query, con il vantaggio che:
    1. lo script non blocca la pagina impedendole di terminare il caricamento, con brutti risultati estetici (il controllo condizionale di esecuzione della query è più elegante rispetto ad un brutale die() ).
    2. Oltre a sapere se la query non funziona, hai anche il codice di errore MySQL (utile per il debug) e la descrizione dell'errore (utilissima per il debug).
    3. Usi meno memoria volatile lato server se leggi l'array riga con i soli indici associativi.

    (Forse l'ottimizzazione del codice non è una vostra priorità).
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

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 © 2024 vBulletin Solutions, Inc. All rights reserved.