• User Newbie

    Query was empty variabili interno funzione

    Salve a tutti, ho un problema che non riesco a risolvere, ed è questo:

    devo passare una query che è il risultato di una ricerca che avviene in una pagina precedente e che viene passata con questo codice con una variabile :</SPAN>
    <?
    echo "<form action="prova.php?tipo=$tipo" method="post" target="_blank">";
    echo "<input type="hidden" name="query" value="".$query."">";
    echo "<button name="submit" type="submit">Selezionati</button>";
    echo "</form></td></tr>";
    ?>

    con questo la recupero nella pagina attuale

    $laura = $_REQUEST['query']; // preparo la query
    echo "$laura";

    e stampando a video la variabile $laura ottengo:

    SELECT id_ass, cognome_nome, data_nascita, com_nascita, cod_fiscale, email, pro_dataiscr, pub_dataiscr, num_tessera, indirizzo_res, concat(cap_res,'-',comune_res,'-','(',prov_res,')') as indirizzoresidenza, indirizzo_dom, comune_dom, prov_dom, comune_res, prov_res, cap_res, cap_dom, concat(cap_dom,'-',comune_dom,'-','(',prov_dom,')') as indirizzodomicilio, moroso, morosoucsi, morosoussi, professionale, testate, noncontrat, pensionato, sindacato030, morosogus, selezione_ind, email, selezione_ind2, id_quota, dataiscr_ucsi, dataiscr_ussi, dataiscr_gus FROM anagrafica WHERE 1 AND visualizza LIKE '0' AND sospeso=0 AND cancellato=0 AND deceduto=0 AND (pub_att !=0) AND moroso LIKE '%mor%' ORDER BY cognome_nome
    Warning: Cannot modify header information - headers already sent by (output started at C:\Programmi\xampp\htdocs\stampasarda\prova.php:5) in C:\Programmi\xampp\htdocs\stampasarda\prova.php on line 69

    dunque presumo che la variabile non sia vuota e contenga quello che serve per la query ....

    nell'attuale pagina la variabile dovrebbe venire "catturata" dalla variabile $laura attraverso il request... e poi richiamata all'interno della funzione mostra lista per andare a diventare la query e mostrare la lista corrispondente,,, invece continuo ad avere come messaggio Query was empty image

    imageposto il codice:
    </SPAN>codice PHP:
    include("db.php");

    $laura = $_REQUEST['query']; // preparo la query
    $laura1 = ciao;
    //echo $GLOBALS['laura'];
    if($_POST)
    {
    $ids = isset($_POST['id_ass']) ? $_POST['id_ass'] : array();
    elimina_record($ids);
    }
    elseif(isset($_GET['id_ass']))
    {
    elimina_record(array($_GET['id_ass']));
    }

    else
    $result = mostra_lista();

    function mostra_lista()
    {
    global $laura; // le global le scrivo sempre per prime
    echo $GLOBALS['laura']; // mostro un eventuale messaggio
    if(isset($_GET['msg']))
    echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
    $table = "anagrafica";
    // invio la query

    $result = mysql_query($laura) or die (mysql_error());  // 'vedo' la variabile $laura? .. la uso! 
    // controllo l'esito 
    return $result ; 
    if (!$result) { 
        die("Errore nella query $query: " . mysql_error()); 
    } 
    

    echo '
    <form name="form1" method="post" action="">
    <table border="1">
    <tr>
    <th> </th>
    <th>anagrafica</th><th>Ragione Sociale</th><th>indirizzo_res</th><th>cap_res</th>
    <th> </th>
    </tr>';

    while ($row = mysql_fetch_array($result))
    {
    $nome = htmlentities($row['id_ass']);
    $ragione= htmlentities($row['cognome_nome']);
    $indirizzo_res= htmlentities($row['indirizzo_res']);
    $tel= htmlentities($row['cap_res']);
    // preparo il link per la modifica dei dati del record
    $link = $_SERVER['PHP_SELF'].'?id_ass=' . $row['id_ass'];

    echo "<tr>
    <td><input name="id_ass[]" type="checkbox" value="$row[id_ass]" /></td>
    <td>$nome</td><td>$ragione</td><td>$indirizzo_res</td><td>$tel</td>
    <td><a href="$link">elimina</a></td>
    </tr>";
    }

    echo '</table>
    <br />
    <input type="submit" name="Submit" value="Elimina record selezionati" />
    </form>';

    // chiudo la connessione a MySQL
    mysql_close();
    }

    function elimina_record($ids)
    {
    // verifico che almeno un id sia stato selezionato
    if(count($ids) < 1)
    {
    $messaggio = urlencode("Nessun record selezionato!");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    exit;
    }

    // per precauzione converto gli ID in interi
    $ids = array_map('intval',$ids);

    // creo una lista di ID per la query
    $ids = implode(',',$ids);

    // preparo la query
    $query = "DELETE FROM anagrafica WHERE id_ass IN ($ids)";
    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
    die("Errore nella query $query: " . mysql_error());
    }

    // conto il numero di record cancellati
    $num_record = mysql_affected_rows();

    // chiudo la connessione a MySQL
    mysql_close();
    $messaggio = urlencode("Numero record cancellati: $num_record");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    }
    ?>

    se non uso la variabile ma inserisco direttamente:
    codice PHP:

    SELECT id_ass, cognome_nome, data_nascita,
    com_nascita, cod_fiscale, email, pro_dataiscr, pub_dataiscr, num_tessera, indirizzo_res,
    concat(cap_res,'-',comune_res,'-','(',prov_res,')') as indirizzoresidenza, indirizzo_dom,
    comune_dom, prov_dom, comune_res, prov_res, cap_res, cap_dom, concat(cap_dom,'-
    ',comune_dom,'-','(',prov_dom,')') as indirizzodomicilio, moroso, morosoucsi, morosoussi,
    professionale, testate, noncontrat, pensionato, sindacato030, morosogus, selezione_ind,
    email, selezione_ind2, id_quota, dataiscr_ucsi, dataiscr_ussi, dataiscr_gus FROM anagrafica
    WHERE 1 AND visualizza LIKE '0' AND sospeso=0 AND cancellato=0 AND deceduto=0 AND
    pra_att !=0 AND pub_att !=0 ORDER BY cognome_nome

    tutto funziona... ma io ho necessità di ottenere questa query con una ricerca effettuata in una pagina precedente che la filtra e poi la passa a questa pagina dove dovrebbe diventare il valore della variabile laura, ma all'interno della funzione dove la inserisco rimane vuota... PERCHE'?!:bho:

    VI PREGO AIUTATEMI, CI STO PERDENDO LA TESTA, spero solo di essere riuscita a spiegarmi...

    </SPAN>


  • User

    Questa riga

    // controllo l'esito
    return $result ;

    Ti fa terminare la funzione mostra_lista prima che stampi qualsiasi cosa. Di fatto la query probabilmente funziona altrimenti l'istruzione die() ti stamperebbe l'errore sql. Solo che ritorni $result senza mai usarlo.