Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    MYSQL Query Select OR e AND

    Domanda banalissima...
    ma... come mai non funziona questa query?

    $query = "SELECT data,sq1,sq2,luogo, FROM risultati WHERE ( sq2 = 'Squadra' OR sq1 = 'Squadra' ) AND ( ris1 <= '0' ) ORDER BY data ASC LIMIT 0,3";


    Praticamente voglio che mi estrae i primi 3 record (le prime tre partite) in cui la "SQUADRA" gioca in casa o fuori. Fin qui nessun problema. Se poi gli chiedo di estarmi solo quelli dove il risultato non è ancora stato messo (quindi minore-uguale a zero dato che è basket) non mi esce niente.
    Dove sbaglio?

    grazie mille!

    ciao
    FEDE
    "Ma a noi piace ripensare alla tua voglia di partire
    Alla moto caricata all'impossibile
    Agli scherzi di Alberto, alla sete di avventura
    E' un bel modo per dire libertà"
    (MCR)

  2. #2
    hai un errore di sintassi. La virgola prima di from.

    Salvo altre eventualita'.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    tra l'altro... cmq nn funziona anche senza quella virgola.
    "Ma a noi piace ripensare alla tua voglia di partire
    Alla moto caricata all'impossibile
    Agli scherzi di Alberto, alla sete di avventura
    E' un bel modo per dire libertà"
    (MCR)

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    potrebbe essere lo zero tra apici in ris1 <= 0?
    Chiedo.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Originariamente inviato da fede_87ch
    tra l'altro... cmq nn funziona anche senza quella virgola.
    Allora posta la query reale e non un facsimile.

    Stampa la query e utilizza mysql_error(). Verifica che ci siano le corrispondenze richieste nel db.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    codice:
    $query = "SELECT data,sq1,sq2,luogo FROM lnb2 WHERE ( sq2 = 'SAV Vacallo' OR sq1 = 'SAV Vacallo' ) AND ( ris1 <= 0 ) ORDER BY data ASC LIMIT 0,3";
    	$result = mysql_query($query, $db);
    	while($row = mysql_fetch_array($result))
    	{
    		$data = date("d.m.Y", $row[data]);
    		$ora = date("H\hi", $row[data]);
    		
    		echo "<table class=\"classifica\">
    		<tr><td class=\"grassetto\">$data</td></tr>
    		<tr><td>$row[luogo] - $ora</td></tr>
    		<tr><td>$row[sq1] - $row[sq2]</td></tr>
    		</table>";
    }
    Ecco questa è la query completa con quello che succede dopo. Il problema è che non mi dà errore nel database. Semplicemente non esce nulla.

    Ho provato a mettere al posto del ris1 un altro campo e un altro valore e funzionava. È possibile che sia perchè nel database il campo ris1 ha proprietà NOT NULL mentre adesso è nullo dato che nn ho ancora aggiunto un risultato?

    Sennò non capisco perchè non funziona!

    tnx a tutti in anticipo

    ciao
    FEDE
    Dato che non mi stampa neanche la tabella vuol dire che non mi trova niente.
    "Ma a noi piace ripensare alla tua voglia di partire
    Alla moto caricata all'impossibile
    Agli scherzi di Alberto, alla sete di avventura
    E' un bel modo per dire libertà"
    (MCR)

  7. #7

    Controlli di flusso

    Puoi risolvere i problemi più facilmente inserendo dei controlli nel flusso dello script.
    Per esempio aggiungi:
    codice:
    $num = mysql_num_rows($result);
    echo "La query eseguita ha trovato n° $num righe";
    dopo l'assegnazione della variabile $result.
    Il tuo errore comunque è la collocazione del vettore $row all'interno delle stringhe: lì non viene codificato dall'interprete PHP. Devi metterlo all'esterno usando l'operatore di concatenazione.

    Prova con:
    codice:
    $query = "SELECT data,sq1,sq2,luogo FROM lnb2 WHERE ( sq2 = 'SAV Vacallo' OR sq1 = 'SAV Vacallo' ) AND ( ris1 <= 0 ) ORDER BY data ASC LIMIT 0,3";
    	$result = mysql_query($query, $db);
    	while($row = mysql_fetch_array($result))
    	{
    		$data = date("d.m.Y", $row[data]);
    		$ora = date("H\hi", $row[data]);
    		
    		echo "<table class=\"classifica\">
    		<tr><td class=\"grassetto\">$data</td></tr>
    		<tr><td>".$row[luogo]." - $ora</td></tr>
    		<tr><td>".$row[sq1]." - ".$row[sq2]."</td></tr>
    		</table>";
    }
    Ciao
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  8. #8
    Inoltre sarebbe più corretto indicare gli elementi del vettore $row con la sintassi $row['data']
    (dettaglio...)
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  9. #9
    a parte la sintassi corretta che evita i notice, il problema è nella query. Perchè se cambio la query come spiegato sopra mi dà dei risultati.

    È quando all'ôperatore AND metto una condizione numerica che non mi trova niente.

    grazie cmq x i consigli sulla sintassi giusta..
    "Ma a noi piace ripensare alla tua voglia di partire
    Alla moto caricata all'impossibile
    Agli scherzi di Alberto, alla sete di avventura
    E' un bel modo per dire libertà"
    (MCR)

  10. #10

    Mettiamo a punto

    Guarda, ho provato a creare una query simile sul mio server (IIS) e funziona, anche con l'AND...
    A questo punto potrebbe essere qualche bazzecola sintattica come per esempio la punteggiatura.
    Su alcune release di Windows non funzionano query copiate ed incollate da manuali, oppure l'else di alcune if non viene letto
    se indentato (questione di spazi!), quindi non esito a crederti.

    Prova così:
    codice:
    $query = "SELECT data,sq1,sq2,luogo FROM lnb2 WHERE (sq2='SAV Vacallo' OR sq1='SAV Vacallo') AND (ris1<=0) ORDER BY data ASC LIMIT 0,3";
    if ((mysql_query($query, $db)) == false) { echo "Errore nella query!"; }
    $result = mysql_query($query, $db);
    $res_num = mysql_num_rows($result);
    echo "La query eseguita ha trovato n° $res_num righe";
    
    while($row = mysql_fetch_array($result))
    { $data = date('d.m.Y', $row['data']);
    $ora = date('H:i', $row['data']);
    
    echo "<table class=\"classifica\">
    <tr><td class=\"grassetto\">$data</td></tr>
    <tr><td>".$row['luogo']." - $ora</td></tr>
    <tr><td>".$row['sq1']." - ".$row['sq2']."</td></tr>
    </table>";
    }
    Non indentare nulla. Ho rettificato come da manuale anche la funzione date() che facevi su $row['data'] con il formato
    della data H\hi che non è un formato valido. Inoltre hai 2 controlli
    di flusso (in grassetto nel codice) che ti permetteranno di localizzare la causa dell'errore.
    Secondo me ora va a palla. Se non va, dipende dai record che estrai nella tabella o qualche svista simile, come per esempio
    che non hai creato quella colonna di nome sq2 etc...
    Crepi il lupo!
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.