Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    32

    Problema variabile per query

    Salve a tutti, ho il seguente problema:
    Se le due variabili sono uguali a rr, setto la variabile $ricquery con la query.

    Codice PHP:
    if (($ricreg == rr) && ($ricprov == rr)){
    $ricquery "SELECT * FROM annunci WHERE cat LIKE '$riccat' LIMIT $primo$per_page";
    $count1 "SELECT COUNT(id) FROM annunci WHERE cat LIKE '$riccat'";
        } 
    Dopodichè vado a processare la query.

    Codice PHP:
    $query mysql_query($ricquery);
    while(
    $results mysql_fetch_array($query)) {
    echo 

    etc. etc. etc.

    Il problema è che quando invio la query usando mysql_query("SELECT * etc. etc."); funziona tutto bene, se invece uso la variabile $ricquery non succede nulla...

    Forse mi sfugge qualcosa di stupido considerando le ore passate sul pc oggi...help me please

  2. #2
    Direi di si
    PHP deve sapere che stai interrogando il database, e lo può sapere solo se anteponi mysql_query alla query vera e propria.
    Se gli dici SELECT * FROM... lui te la legge come stringa, mica come query (domanda).
    Stacca mezz'oretta dal pc che se no ti scuoce il cervello



    p.s. la domanda era vaga... magari ho capito male!
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    32
    Ok...allora per quale motivo l'istruzione
    Codice PHP:
    $count mysql_query($count1); 
    la interpreta correttamente? (sarebbe quella che mi conta il numero totale di pagine in base ai risultati della ricerca).

    Praticamente nella pagina di ricerca mi trovo in basso il numero totale delle pagine con la possibilità di scorrerle, ma nessun risultato.

    Cioè quegli "IF" li uso a inizio script per settare la query che andrò ad utilizzare successivamente, il fatto è che il $count1 (che fa il SELECT COUNT) funziona mentre il $ricquery (che si occupa della ricerca) non va...

    Qualche idea? Forse sbaglio qualcosa nella stringa?? apici o cose simili?

  4. #4
    forse:
    $ricquery = "SELECT * FROM annunci WHERE cat LIKE '%$riccat%' LIMIT $primo, $per_page";
    Sempre se la variabile riccat è settata correttamente.
    Con il simbolo percentuale gli dici che prima e dopo la parola può esserci qualcos'altro.
    Prova quello.
    Vado a letto.
    A domani e fammi sapere.
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    32
    Risolto!!

    Dunque, purtroppo non so spiegare il motivo, però ora funziona.

    Praticamente ho "doppiato" gli IF i primi 3 scelgono la query per il COUNT e la mettono in variabile.

    L'altro gruppo di 3 IF identico al primo, invece che settare la query in variabile, la esegue direttamente nel momento in cui serve:

    Codice PHP:
    if (($ricreg == rr) && ($ricprov == rr)){
            
    $query mysql_query("SELECT * FROM annunci WHERE cat LIKE '$riccat' LIMIT $primo$per_page");
        }
        else{
    if ((
    $ricreg != rr) && ($ricprov == rr)){
            
    $query mysql_query("SELECT * FROM annunci WHERE cat LIKE '$riccat' AND reg LIKE '$ricreg' LIMIT $primo$per_page");
        }
        else{
    if ((
    $ricreg != rr) && ($ricprov != rr)){
            
    $query mysql_query("SELECT * FROM annunci WHERE cat LIKE '$riccat' AND reg LIKE '$ricreg' AND prov LIKE '$ricprov' LIMIT $primo$per_page");
        }
      }
    }
    while(
    $results mysql_fetch_array($query)) {
    echo 

    Etc. etc.

    Come dice il comico nostrano Palmiro Cangini: "Non lo so...però c'ho ragione...e i fatti MI COSANO!"

  6. #6
    Scusa ma se scrivi così, qualsiasi cosa è valida per le condizioni!
    Non puoi semplicemente scrivere la query e basta?
    Poi la condizione dovrebbe essere
    if($ricreg=="rr") {
    ecc...
    Va bene trovare le soluzioni ma badiamo anche alla forma!
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    32
    Dunque scritto così le condizioni si escludono, solo una può essere vera, ed infatti funziona.

    Anzi, rispetto alla forma iniziale mi sembra anche più pulito dal momento che la query viene eseguita direttamente dentro all IF senza settare ulteriori variabili...non credi?

    Penso ci sia la possibilità di impostare una "query di base" e modificarla direttamente in base a delle condizioni ma tutto sommato si tratta di eliminare byte di codice da una parte e aggiungerli da un'altra dal momento che sarebbero da settare delle variabili di cui in questo modo ho fatto a meno...Io l'ho vista così, non ho tirato a caso insomma

    Poi aggiungo che per scorrere le pagine che verrano generale in base al numero di record trovati, mi sono mosso in questo modo, andando a settare le stesse variabili che dopo la prima ricerca (quindi prima pagina) vengono passate dal post.

    Codice PHP:
    if ($numeropagina 1) {
    $variabilecategoria $_GET['cat'];
    $variabileregione $_GET['reg'];
    $variabileprovincia $_GET['prov']; 
    Codice PHP:
    .../pagina=$numeropagina&cat=$variabilecategoria&regetcetc./ 
    In modo da mantenere lo stesso script di ricerca e facendo così tutto nella stessa pagina.

    Non mi sembra un lavoro disordinato.....almeno....non mi sembra.......

    Ribadisco che 1 mese fa io il php lo conoscevo solo di nome, quindi ogni critica e consiglio sono ben accetti!

  8. #8
    L'unica critica va fatta all'iPhone! Le caselle php me le taglia e sembrava avessi creato 3 query perfettamente uguali!
    Scusa, errore "mio".
    Continuo però a non capire lo schema:
    Codice PHP:
    //Se qui le due variabili sono uguali a rr (che non è una stringa in quanto quella va messa tra apici)
    if (($ricreg == rr) && ($ricprov == rr)){ 
    ________$query mysql_query("SELECT * FROM annunci WHERE cat LIKE '$riccat' LIMIT $primo$per_page"); 
    ____
    ____else
    //questa è una sotto-condizione che, se la prima è vera, non potrà mai essere eseguita e, se la prima non fosse vera, non verrebbe eseguita perché lo script si ferma alla prima.
    if (($ricreg != rr) && ($ricprov == rr)){ 
    ________$query mysql_query("SELECT * FROM annunci WHERE cat LIKE '$riccat' AND reg LIKE '$ricreg' LIMIT $primo$per_page"); 
    ____
    ____else
    //Stesso ragionamento per questa.
    if (($ricreg != rr) && ($ricprov != rr)){ 
    ________$query mysql_query("SELECT * FROM annunci WHERE cat LIKE '$riccat' AND reg LIKE '$ricreg' AND prov LIKE '$ricprov' LIMIT $primo$per_page"); 
    ____
    __

    while(
    $results mysql_fetch_array($query)) { 
    echo 
    Ce l'ho fatta! - ItalianPixel -

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    32
    Mmmm....guarda, mi dispiace ma mi permetto di smentire....se la prima consizione è vera, esegue la query e passa oltre il ciclo IF ELSE, ovvero al while($result......etc.

    Se la prima è falsa passa alla seconda, stessa cosa per la terza.
    Perdonami ma non capisco perchè dici che lo script dovrebbe fermarsi alla prima...??

    Il discorso "rr" non è altro che il valore della variabile di regione e provincia quando la ricerca dev'essere estesa a tutte le regione e/o a tutte le province, in caso di scelta specifica la stessa variabile avrà un valore numerico che riprende l'id della regione o della provincia appunto.

    Quello che posso garantirti è che funziona e per quanto riguarda il fattore "apici" non credo che sia obbligatorio (considerando appunto che funziona tutto senza nessun errore)....ma forse sbaglio! O magari è solo un'errore di buona forma. Se qualcuno mi da una dritta su questo, magari lo aggiusto ed evito figuracce

    P.S. Stesso problema con l'iphone anche se non in tutte... :master:

  10. #10
    E ho di nuovo sbagliato. Questa mattina non ne dico una giusta!
    Hai utilizzato gli else invece deli elseif ma funziona comunque. Ho letto male.
    Se al posto di fare una if per ogni else fai un elseif, rendi il codice più ordinato.
    Così avrai l'if iniziale e due elseif. Questa è giusta però!
    Ce l'ho fatta! - ItalianPixel -

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.