Pages: [1] 2   Go Down
Print
Author Topic: passare il valore radio button ad una query sql  (Read 7376 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« on: 17-07-2014, 11:28:33 »

salve a tutti, ho un problema che mi assilla da giorni e non riesco a capire dove sbaglio, dovrei passare il valore selezionato ad una query sql in php ma appena metto la variabile mi dice errore di sintassi, dove sbaglio?
dunque un form che contiene una casella di testo che contiene il valore che passerò alla query per il like e dei radio button che dovrebbero rifiltrare la query fatta, due i file in questione (escludendo connessione al db ecc.) utente.php e search.php,
il primo contiene i form e il secondo il recupero dei dati da inserie nella query:
utente.php
Code:
...
<form class="form-horizontal" role="form" method="get">
    <div class="form-group">
    <label class="col-sm-2 control-label" for="name">Città Distributore</label>
    <div class="input-group col-sm-8">
    <input id="name" name="name" type="text" class="form-control" placeholder="Inserisci la città" />
    <span class="input-group-btn">
    <button type="button" class="btn btn-default btnSearch">
    <span class="glyphicon glyphicon-search"> Search</span>
    </button>
    </span>
    </div>

    </div>

<legend>Scegli il carburante</legend>
Benzina <input type="radio" name="radio" value="Benzina"/>
Diesel  <input type="radio" name="radio" value="Diesel"/>
GPL <input type="radio" name="radio" value="GPL"/>
Metano <input type="radio" name="radio" value="Metano"/>
Benzina SP  <input type="radio" name="radio" value="Benzina SP"/>
Diesel SP <input type="radio" name="radio" value="Diesel SP"/>
<input type=submit value=invia name=submit/>

    </form>

search.php

Code:
if (isset($_GET['name']) or (isset($_GET['radio'])) ){
// Create the query
$data = "%".$_GET['name']."%";

$radio = $_GET['radio'];



$sql = 'SELECT d.nomeDistributore,d.indirizzo, d.citta,d.provincia,d.tipologia,c.nomeCarburante,f.prezzo,f.dataArrivo, s.disponibile
        FROM distributore d, carburante c, fornitura f, servire s
        WHERE d.idDistributore=s.idDistributore and d.idDistributore=f.idDistributore and
      c.idCarburante=f.idCarburante and c.nomeCarburante='$radio'  and d.citta like?
order by f.prezzo';

// we have to tell the PDO that we are going to send values to the query
$stmt = $conn->prepare($sql);
// Now we execute the query passing an array toe execute();
$results = $stmt->execute(array($data));
// Extract the values from $result
$rows = $stmt->fetchAll();
$error = $stmt->errorInfo();
echo $error[2];

}


// If there are no records.
if(empty($rows)) {
echo "<tr>";
echo "<td colspan='8'>There were not records</td>";
echo "</tr>";
}
else {
foreach ($rows as $row) {
echo "<tr>";
echo "<td>".$row['nomeDistributore']."</td>";
echo "<td>".$row['indirizzo']."</td>";
echo "<td>".$row['citta']."</td>";
echo "<td>".$row['provincia']."</td>";
echo "<td>".$row['tipologia']."</td>";
echo "<td>".$row['nomeCarburante']."</td>";
echo "<td>".$row['prezzo']."</td>";
echo "<td>".$row['dataArrivo']."</td>";
echo "<td>".$row['disponibile']."</td>";
echo "</tr>";
}
}

l'errore è in questo pezzo:
c.nomeCarburante='$radio'
dove passo la stringa di appartenenza ai radio button, questo tipo di passaggio nella altre pagine mi funziona, quì perchè no?
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.449


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #1 on: 17-07-2014, 12:55:24 »

Ciao.

Ci sono alcuni errori nel tuo codice PHP, di varia natura, e vari modi diversi per risolverli.

Quello che riguarda ciò su cui tu hai puntato l'attenzione è la malformata concatenazione di un dato proveniente da variabile ($radio) all'interno di una stringa.

In questo codice:
Code:
$sql = 'SELECT d.nomeDistributore,d.indirizzo, d.citta,d.provincia,d.tipologia,c.nomeCarburante,f.prezzo,f.dataArrivo, s.disponibile
        FROM distributore d, carburante c, fornitura f, servire s
        WHERE d.idDistributore=s.idDistributore and d.idDistributore=f.idDistributore and
      c.idCarburante=f.idCarburante and c.nomeCarburante='$radio'  and d.citta like?
order by f.prezzo';
l'interprete php ti dà un errore perché tra le due parti, rispettivamente
'SELECT d.nomeDistributore,d.indirizzo, d.citta,d.provincia,d.tipologia,c.nomeCarburante,f.prezzo,f.dataArrivo, s.disponibile
              FROM distributore d, carburante c, fornitura f, servire s
              WHERE d.idDistributore=s.idDistributore and d.idDistributore=f.idDistributore and
               c.idCarburante=f.idCarburante and c.nomeCarburante='

e
$radio,
e poi anche tra le due parti, rispettivamente
$radio
e
  and d.citta like?
         order by f.prezzo'

(notare, in entrambi i casi, gli apici singoli di apertura e chiusura di stringhe letterali non espandibili!!!)
ebbene in entrambi questi due casi di coppie di stringhe, non hai messo l'operatore di concatenazione . (puntino).

Considerato che, tuttavia, nomeCarburante (nel database!) e parimenti $radio nel codice php, quasi certamente sono (e vanno) considerati come stringhe, è più probabile che tu abbia voluto inserire una variabile dentro una stringa espandibile, nella speranza che l'interprete php espandesse, all'interno della stringa, il valore della variabile prima di valutare l'intera espressione.

In tal caso, però, hai erroneamente usato gli apici singoli (che denotano stringhe non espandibili!) a inizio e fine stringa globale.

Per fare questo giochetto della stringa espandibile avresti dovuto scrivere, piuttosto:
Code:
$sql = "SELECT d.nomeDistributore,d.indirizzo, d.citta,d.provincia,d.tipologia,c.nomeCarburante,f.prezzo,f.dataArrivo, s.disponibile
        FROM distributore d, carburante c, fornitura f, servire s
        WHERE d.idDistributore=s.idDistributore and d.idDistributore=f.idDistributore and
      c.idCarburante=f.idCarburante and c.nomeCarburante='$radio'  and d.citta like?
order by f.prezzo";
ove devi notare che ho inserito gli apici doppi a inizio e fine stringa globale: ciò permette non solo di espanedere $radio al suo valore, prima di valutare l'intera espressione da assegnare a $sql, ma inoltre preserva la funzione degli apici singoli attorno a $radio, di modo che la query contenga una sintassi SQL appropriata per le stringhe .

Ciao ciao .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #2 on: 17-07-2014, 14:06:39 »

ciao Simone, grazie intanto per la risposta, avevo pensato pure io a questo cosa, e di fatti l'errore di sintassi scompare, ma la query non funziona, mentre prima senza l'asseganzione della variabile si, quindi non capisco dove sta l'errore, ecco perchè avevo tolto nuovamente i doppi apici.
praticamente c'è una stringa che viene presa da una casella di testo che è il tasto search che filtra i risultati in base alla città, alla stessa query passando stavolta la stringa tramite i radio button mi dovrebbe rifiltrare il risultato ed oltre alla città prendere pure il carburante, ma non funge  
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.449


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #3 on: 17-07-2014, 14:56:36 »

Guarda in questi casi, la cosa migliore che puoi fare è la seguente:

Prova a invocare l'esecuzione della query tramite il metodo standard query (non una query preparata, quindi non con execute), così sai esattamente cosa sta arrivando a eseguire il motore del db.

Per fare ciò, per prima cosa prepara la query come se fosse un'unica stringa (quindi senza quel punto interrogativo che viene sostituito dai parametri dopo), e mostrala tramite una banale
echo $sql

Dopo di ché, se ancora non funziona, spara la query copia incollata direttamente nel sistema che usi per interfacciarti abitualmente col tuo server mysql, ad esempio una esecuzione in console/terminale/riga di comando di mysql oppure un più elegante phpMyAdmin (se puoi caricarlo sul tuo server web), e vedi cosa ti da in output;

Ma poi, scusa, se la query è preparata, perché stai infilando $radio nella stringa invece di passare il valore di $radio nell'array dei valori da sostituire dopo la preparazione e nella invocazione di execute ?

O li metti tutti nell'array (e usi una query preparata) oppure usi una query standard no?
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #4 on: 17-07-2014, 16:23:08 »

scusa Simone non sto capendo sta parte:
Ma poi, scusa, se la query è preparata, perché stai infilando $radio nella stringa invece di passare il valore di $radio nell'array dei valori da sostituire dopo la preparazione e nella invocazione di execute?

non devo mettere il valore della variabile al posto dell'attributo da selezionare, in che senso devo metterlo nell'array dei valori?
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #5 on: 18-07-2014, 16:24:15 »

scusa Simone non sto capendo sta parte:
Ma poi, scusa, se la query è preparata, perché stai infilando $radio nella stringa invece di passare il valore di $radio nell'array dei valori da sostituire dopo la preparazione e nella invocazione di execute?

non devo mettere il valore della variabile al posto dell'attributo da selezionare, in che senso devo metterlo nell'array dei valori?

forse ho capito, ci sono vicino :-)
ma ancora sbaglio qualcosa nel passare il primo parametro, ho provato con apici, senza apici, ma non funge lo stesso, se metto la stringa manualmente tutto funziona 'Benzina', ma io la devo prendere dalla variabile $radio che prende delle stringhe dall'array ['radio']

ecco casa ho scritto:
Code:
if (isset($_GET['name'])){
// Create the query


$radio = $_GET['radio'];
                $data = "%".$_GET['name']."%";



$sql = 'SELECT d.nomeDistributore,d.indirizzo, d.citta,d.provincia,d.tipologia,c.nomeCarburante,f.prezzo,f.dataArrivo, s.disponibile
        FROM distributore d, carburante c, fornitura f, servire s
        WHERE d.idDistributore=s.idDistributore and d.idDistributore=f.idDistributore and
      c.idCarburante=f.idCarburante and c.nomeCarburante= ? and d.citta like ?
order by f.prezzo';
                       
               

// we have to tell the PDO that we are going to send values to the query
                $stmt = $conn->prepare($sql);
                // Now we execute the query passing an array toe execute();
                $results = $stmt->execute(array($radio,$data));
                // Extract the values from $result
                $rows = $stmt->fetchAll();
                $error = $stmt->errorInfo();
                echo $error[2];

}
dove sbaglio?
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #6 on: 18-07-2014, 16:26:05 »

quel $radio non lo vuole prendere mannaggia a lui  univ
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.449


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #7 on: 18-07-2014, 17:23:14 »

Allora... mmm...
secondo la guida ufficiale del metodo execute della classe mysqli_stmt, il metodo execute non prende parametri (nota il "void" tra parentesi nel prototipo).

Il modo corretto, sempre secondo quel sito ufficiale di PHP, di legare (binding) variabili di PHP (e rispettivi valori) ai segnaposto (marker) della prepared-query, è di usare il metodo bind_param, sempre della classe mysqli_stmt.

Quindi, pur non avendo modo di provare al momento il tuo codice (magari è una sintassi di una vecchia versione di mysqli, seppur ne dubito fortemente), dovresti correggere il tuo codice scrivendo tipo:
Code:
//... altro codice qui

$sql = 'SELECT d.nomeDistributore, d.indirizzo, d.citta, d.provincia, d.tipologia, c.nomeCarburante, f.prezzo, f.dataArrivo, s.disponibile '
     . 'FROM distributore d, carburante c, fornitura f, servire s '
     . 'WHERE d.idDistributore=s.idDistributore AND d.idDistributore=f.idDistributore AND '
     . 'c.idCarburante=f.idCarburante AND c.nomeCarburante= ? AND d.citta like ? '
     . 'ORDER BY f.prezzo';

$stmt = $conn->prepare ($sql);
$stmt->bind_param ("ss", $radio, $data);

$radio = $_GET['radio'];
$data = "%".$_GET['name']."%";

$results = $stmt->execute ();

//... altro codice qui
Avere eseguito bind_param prima di aver assegnato i valori corretti alle variabili $radio e $data non è un errore, poiché, se leggi la guida di bind_param, dopo la stringa che descrive i tipi del contenuto delle variabili da legare (bind), c'è un elenco di variabili per riferimento (mixed &$var1, mixed &$var2).

Ma...
prima di fare tutte queste belle cose, ti consiglio di inserire, prima di ogni altra istruzione, questo blocco di codice:
Code:
echo '<!-- valore della variabile $_GET[\'radio\']: "' . $_GET['radio'] . '"; valore della variabile $_GET[\'name\']: "' . $_GET['name'] . '" -->'; die ();
e di vedere cosa arriva al browser dopo il round richiesta>risposta (devi controllare nel codice HTML, facendo tipo Visualizza sorgente, o Ispeziona elemento, a seconda del browser che usi, in genere tramite CTRL+U)
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.449


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #8 on: 18-07-2014, 17:28:20 »

Ma poi rispetto al primo codice che hai mostrato (il più completo finora), non capisco una cosa: come fa utente.php a richiamare (una volta arrivato nel browser) il metodo GET rispetto a search.php, visto che all'interno del tag form non c'è alcun valore assegnato all'attributo action?
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #9 on: 18-07-2014, 17:47:34 »

tramite una chiamata jquery-ajax,
l'ultima istruzione và messa sempre dove risiedono i metodi get giusto, non dal lato dei form?
Non và il codice corretto, mentre prima fungeva con il secondo parametro, ma io leggevo che cmq prende pure stringhe da array execute()
es:
# bind dei dati con PDO

// preparazione della query
$sql = $db->prepare('DELETE FROM anagrafica WHERE nome = :nome AND anni = :anni');

// esecuzione di query con sostituzione dei valori
$sql->execute(array(':nome'=>'Luca', ':anni'=>42));
$sql->execute(array(':nome'=>'Max', ':anni'=>56));
« Last Edit: 18-07-2014, 17:53:31 by leovinci » Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #10 on: 18-07-2014, 18:04:06 »

tantè che se metto un valore fisso al posto di $radio e il secondo parametro lo prendo corretto da $data, funziona, il problema e in questi benedetti radio button che non ne vogliono sapere di funzionare, qualcosa sfugge...
questi sono i due form:
Code:
<form class="form-horizontal" role="form" method="get">
    <div class="form-group">
    <label class="col-sm-2 control-label" for="name">Città Distributore</label>
    <div class="input-group col-sm-8">
    <input id="name" name="name" type="text" class="form-control" placeholder="Inserisci la città" />
    <span class="input-group-btn">
    <button type="button" class="btn btn-default btnSearch">
    <span class="glyphicon glyphicon-search"> Search</span>
    </button>
    </span>
    </div>

    </div>

    </form>

<form name="radio" method="get">
<legend>Scegli il carburante</legend>
Benzina <input type="radio" name="radio" value="Benzina"/>
Diesel  <input type="radio" name="radio" value="Diesel"/>
GPL <input type="radio" name="radio" value="GPL"/>
Metano <input type="radio" name="radio" value="Metano"/>
Benzina SP  <input type="radio" name="radio" value="Benzina SP"/>
Diesel SP <input type="radio" name="radio" value="Diesel SP"/>
<input type=submit value=invia name=submit/>
</form>

ci sono errori che mi sfuggono?
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #11 on: 18-07-2014, 18:06:41 »

questi invece le funzioni jquery per richiamare il tasto di ricerca e i radio button:
Code:
<script type="text/javascript">
    jQuery(document).ready(function($) {
    $('.btnSearch').click(function(){
    makeAjaxRequest();
    });

            $('form').submit(function(e){
                e.preventDefault();
                makeAjaxRequest();
                return false;
            });

            function makeAjaxRequest() {
                $.ajax({
                    url: 'search.php',
                    type: 'get',
                    data: {name: $('input#name').val()},
                    success: function(response) {
                        $('table#resultTable tbody').html(response);
                    }
                });
            }
   


    });

    </script>
   
    <script type="text/javascript">
    jQuery(document).ready(function($)
{
    $('input[name="radio"]').click(function()
        {
                makeAjaxRequest();
            });

            $('form').submit(function(e)
    {
                e.preventDefault();
                makeAjaxRequest();
                return false;
            });

            function makeAjaxRequest()
    {
                $.ajax({
                    url: 'search.php',
                    type: 'get',
                    data:{name: $('input[name="radio"]:checked').val()},
                    success: function(response) {
                        $('table#resultTable tbody').html(response);
                    }

});
           
    }
}); 

   
    </script>

pure quì mi sfugge qualcosa?
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.449


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #12 on: 19-07-2014, 00:56:35 »

tramite una chiamata jquery-ajax,
Ok, quel codice mancava, ora so come venivano passati.

l'ultima istruzione và messa sempre dove risiedono i metodi get giusto, non dal lato dei form?
L'ultima istruzione di "cosa"?
Ci sono 2 file in questione, e in ogni file istruzioni PHP e javascript...


Non và il codice corretto, mentre prima fungeva con il secondo parametro, ma io leggevo che cmq prende pure stringhe da array execute()
Sì, in effetti non avevo notato quel PDO (che non è mysqli).
In mysqli le cose stanno come dico io, in PDO come dici tu, dunque va bene come era scritto inizialmente.

Code:
[... omissis ...]
ci sono errori che mi sfuggono?
No pare, lì sembra tutto ok.

questi invece le funzioni jquery per richiamare il tasto di ricerca e i radio button:
Code:
<script type="text/javascript">
     jQuery(document).ready(function($) {
     $('.btnSearch').click(function(){
     makeAjaxRequest();
     });

            $('form').submit(function(e){
                e.preventDefault();
                makeAjaxRequest();
                return false;
            });

            function makeAjaxRequest() {
                $.ajax({
                    url: 'search.php',
                    type: 'get',
                    data: {name: $('input#name').val()},
                    success: function(response) {
                        $('table#resultTable tbody').html(response);
                    }
                });
            }
   


     });

    </script>
    
    <script type="text/javascript">
    jQuery(document).ready(function($)
{
     $('input[name="radio"]').click(function()
        {
                makeAjaxRequest();
            });

            $('form').submit(function(e)
   {
                e.preventDefault();
                makeAjaxRequest();
                return false;
            });

            function makeAjaxRequest()
   {
                $.ajax({
                    url: 'search.php',
                    type: 'get',
                    data:{name: $('input[name="radio"]:checked').val()},
                    success: function(response) {
                        $('table#resultTable tbody').html(response);
                    }

});
            
   }
});  

    
    </script>

pure quì mi sfugge qualcosa?
Non so... il codice è tutto nella stessa pagina per caso?
Purtroppo con il codice buttato un po' qua e un po là non è chiaro dove stia messo.
La cosa migliore è di preparare un file zip, caricarlo da qualche parte e linkarlo nel tuo prossimo messaggio.

La cosa che posso dire con certezza è che c'è un evidente dimenticanza: quando richiami il metodo ajax, l'oggetto data non contiene nulla che abbia come nome radio; c'è solo un dato chiamato name...  testate

Poi non capisco come mai ci sono due invocazioni del metodo .ready di jQuery(document) ... non puoi inserire tutto in un'unico ready, magari a costo di dover chiamare in modi diversi i due makeAjaxRequest ?
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #13 on: 19-07-2014, 07:19:24 »

l'ultima istruzione a cui mi riferivo di dove metterla era quella mostrata da te:
Code:
echo '<!-- valore della variabile $_GET[\'radio\']: "' . $_GET['radio'] . '"; valore della variabile $_GET[\'name\']: "' . $_GET['name'] . '" -->'; die ();

le funzioni jquery chiamano quella di sopra l'action per il tasto search che ha il name "name", mentre la seconda chiama i radio button con il loro name "radio"
per le due chiamate, in effetti si potrebbe mettere tutto dentro la prima funzione, ma non penso sia quello il problema

i files sono due: utente.php e search.php
il primo contiene i form e le funzioni jquery, il secondo il passaggio delle variabili e la query
vedrò in caso di mandare un zip con dentro i due file completi
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #14 on: 19-07-2014, 08:47:05 »

ho trovato dove sta l'errore mannaggia la miseriaccia ladra
è una questione di formattazione del valore, nel senso che quando il radio button mi ritorna il valore e privo di apici e passandolo alla query non funge perchè ne ha bisogno, come potrei fare per farmi dare oltre al valore tra esso ci siano degli apici
normalmente $radio=$_GET['radio'];
mi restituisce ad esempio: Benzina
ma il motore db non lo prende senza che sia formattato in questo modo 'Benzina'
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
Pages: [1] 2   Go Up
Print
Jump to: