Visualizzazione risultati 1 fino 10 di 10

Discussione: inviare una query select di mysql come variabile ad un'altra pagina

  1. #1
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito inviare una query select di mysql come variabile ad un'altra pagina

    Ciao

    Vorrei inviare una select fatta a mysql come variabile ad un'altra pagina php (il motivo è un po' lungo da spiegare), quindi una cosa del genere:

    Codice PHP:
    $tutto = "SELECT *, date_format(giorno, '%d/%m/%Y') as data_it FROM nota where giorno >= str_to_date('$inizio', '%d/%m/%Y') ORDER BY giorno, id";
    dovrebbe essere inviata ad un'altra pagina che poi avvia la query e il ciclo while per l'estrazione dei dati dal db:


    Codice PHP:
    // il form pe rl'invio della variabile
    <?echo" <form action=\"stampascad.php\" method=\"\post\">
    <INPUT TYPE=\"HIDDEN\" name=\"query2\" value=\"
    $tutto\">
    <input type=\"submit\" value=\"stampa\" name=\"pri\">
    </form>"
    ;


    //la pagina che riceve i dati

    include ("config.php");

    $queryprint = $_REQUEST['query2'];

    allora se faccio un echo della variabile mi restituisce in effetti la select di cui sopra,
    ma se avvio un ciclo while del tipo:

    Codice PHP:
    .....

    $querytot = mysql_query($queryprint);


    $i = 0;
    while (
    $record = mysql_fetch_array($querytot)) {
    $id = $record["id"];
    $doc = $record["doc"];
    $descrizione = $record["descrizione"];
    $forn = $record["denominazione"];
    $imp = $record["importo"];
    $scad = $record["data_scad"];
    $stato = $record["stato"];

    .......
    mi dice che c'è un errore:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource.. linea 10
    che è la linea dove inizia l'istruzione while.

    Dove sbaglio?

    Grazie

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Perchè non salvi la query in sessione?
    Con quel form rischi seri attachi SQL injection, si possono eseguire qualsiasi tipo di queries. È come lasciare il database aperto a tutti.

    Comunque se ricevi quell'errore evidentemente la query contiene qualche errore.
    Usa mysql_error() per controllare la presenza di errori:
    Codice PHP:
    $querytot = mysql_query($queryprint) or die(mysql_error());
    E un consiglio riguardante a quello che hai scritto nel while, semplificati il lavoro con list():
    Codice PHP:
    while($record = mysql_fetch_row($querytot)) {
    list(
    $id, $doc, $descrizione, $forn, $imp, $scad, $stato, ) = $record;

    echo
    $id; // stampa l'id.
    }
    Ultima modifica di javascripter : 06-01-2011 alle ore 17.17.18

  3. #3
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Perchè non salvi la query in sessione?
    Con quel form rischi seri attachi SQL injection, si possono eseguire qualsiasi tipo di queries. È come lasciare il database aperto a tutti.

    Comunque se ricevi quell'errore evidentemente la query contiene qualche errore.
    Usa mysql_error() per controllare la presenza di errori:
    Codice PHP:
    $querytot = mysql_query($queryprint) or die(mysql_error());
    E un consiglio riguardante a quello che hai scritto nel while, semplificati il lavoro con list():
    Codice PHP:
    while($record = mysql_fetch_row($querytot)) {
    list(
    $id, $doc, $descrizione, $forn, $imp, $scad, $stato, ) = $record;

    echo
    $id; // stampa l'id.
    }

    la sicurezza al momento mi interessa poco visto che si tratta di un programma che deve funzionare solo in locale (è una specie di gestionale)
    comunque ho fatto la modifica:

    $querytot = mysql_query($queryprint) or die (mysql_error());

    mi dice adesso che c'è un errore nella select:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...

    ma è strano!!

    La stessa query viene usata nella pagina di stampa e funziona perfettamente...
    forse succede qualche accidente nel passaggio (in passato mi era capitato una cosa del genere dovuto allo spazio che c'era tra la variabile e il resto del codice), giusto un' ipotesi

    Boh?

    L'uso delle sessione vorrei evitarlo se è possibile...vediamo.

    grazie




    uhmmmm uff intanto con le sessioni funziona.
    Grazie
    Ultima modifica di gianlucaweb : 06-01-2011 alle ore 18.06.56

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Stai provando in locale?
    Se si, controlla che la direttiva magic_quotes_gpc sia disattivata.
    Se non sai come fare, leggi qui: http://www.php.net/manual/en/securit....disabling.php

  5. #5
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Stai provando in locale?
    Se si, controlla che la direttiva magic_quotes_gpc sia disattivata.
    Se non sai come fare, leggi qui: http://www.php.net/manual/en/securit....disabling.php

    disattivarla per la sicurezza?

  6. #6
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da gianlucaweb Visualizza messaggio
    disattivarla per la sicurezza?
    ah proposito.

    Ho provato a inviare varibili anche così:

    Codice PHP:
    .............

    <
    script type="text/javascript">
    <!--
    var
    stile = "top=10, left=120, width=595, height=842, status=no, menubar=yes, toolbar=no scrollbar=yes";
    function
    Popup(apri) {
    window.open(apri, "", stile);
    }
    //-->
    </script>

    ..............


    echo" <input type=\"submit\" class=\"btn\" Value=\"Stampa\" onclick=\"javascript:Popup('stampascad.php&fornitore=$fornitoresel')\"
    onmouseover=\"this.className='btn btnhov'\" onmouseout=\"this.className='btn'\">";
    La finestra di pop up che si apre (che riceve
    il dato con request:

    $nomefornitore = $_REQUEST['fornitore'];

    mi riporta questo errore:

    Accesso negato!

    Non disponi dei permessi necessari per accedere all'oggetto richiesto, oppure l'oggetto non può essere letto dal server.

    Se pensi che questo sia un errore del server, per favore contatta il webmaster.
    Error 403


    Perchè?
    Non si possono inviare variabili in questo modo?

  7. #7
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da gianlucaweb Visualizza messaggio
    disattivarla per la sicurezza?
    No, disattivala per far funzionare la query.
    Se è attiva ai caratteri ' e " verrà fatto l'escape automaticamente e la query potrebbe fallire.

    Citazione Originalmente inviato da gianlucaweb Visualizza messaggio
    ah proposito.

    Ho provato a inviare varibili anche così:

    Codice PHP:
    .............

    <
    script type="text/javascript">
    <!--
    var
    stile = "top=10, left=120, width=595, height=842, status=no, menubar=yes, toolbar=no scrollbar=yes";
    function
    Popup(apri) {
    window.open(apri, "", stile);
    }
    //-->
    </script>

    ..............


    echo" <input type=\"submit\" class=\"btn\" Value=\"Stampa\" onclick=\"javascript:Popup('stampascad.php&fornitore=$fornitoresel')\"
    onmouseover=\"this.className='btn btnhov'\" onmouseout=\"this.className='btn'\">";
    La finestra di pop up che si apre (che riceve
    il dato con request:

    $nomefornitore = $_REQUEST['fornitore'];

    mi riporta questo errore:

    Accesso negato!

    Non disponi dei permessi necessari per accedere all'oggetto richiesto, oppure l'oggetto non può essere letto dal server.

    Se pensi che questo sia un errore del server, per favore contatta il webmaster.
    Error 403


    Perchè?
    Non si possono inviare variabili in questo modo?
    In teoria è possibile.
    Comunque perchè invece di usare $_REQUEST, non usi le variabili specifiche, ovvero: $_GET per le richieste via metodo get e $_POST per le richieste via post.

    $_REQUEST è un contenitore globale che include sia $_POST, $_GET e $_COOKIE.

  8. #8
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    ciao

    Ho trovato questa discussione:

    http://www.spacemarc.it/forum/viewtopic.php?f=1&t=630

    Guarda caso, ciò che non è utile all'utente che ha posto il problema
    va proprio bene per me!

    Unico problema. Non riesco a far visualizzare le scrollbar alla popup.
    Le sto provando tutte, anche facendo questa modifica:

    var stile = "top=10, left=120, width=500, height=300, status=no, menubar=no, toolbar=no scrollbar=yes";
    window.open('','popup',stile);

    Non va! Cosa dovrei fare?

    Grazie di tutto.




    Ciao
    Ultima modifica di gianlucaweb : 07-01-2011 alle ore 16.12.55

  9. #9
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Se il pop-up non si apre, la colpa potrebbe essere del tuo browser che lo blocca.

    Comunque non hai più intenzione di usare il form?

  10. #10
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Se il pop-up non si apre, la colpa potrebbe essere del tuo browser che lo blocca.

    Comunque non hai più intenzione di usare il form?
    e chi ha detto che il pop up non si apre?

    Il form alla fine lo utilizzo:



    Codice PHP:
    <form id="nome_form" action="stampascad.php" method="post" target="popup">
    <input type="hidden" name="fornitore" value="<?echo $fornitoresel;?>">
    <input type="hidden" name="inizio" value="<?echo $inizio;?>">
    <input type="hidden" name="fine" value="<?echo $fine;?>">
    <input type="hidden" name="all" value="<?echo $all;?>">

    <input type="submit" name="submit" value="Invia" onclick="formtopopup()" />
    </form>

    Grazie ancora e ciao

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •