Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360

    Problema conteggio stringhe uguali

    Salve,


    ho nel mio DB delle prenotazioni ed uso il seguente codice:


    codice:
    <?php
    include "connessione.php";
    
    
    $query  = "SELECT * FROM prenotazioni";
    $result = mysql_query($query) or die (mysql_error());
    
    
    $numero_prenotazioni = mysql_num_rows($result);
    
    
      while ($row=mysql_fetch_array($result)){
    	$checkin = stripslashes($row['checkin']);
    	$mese    = substr("$checkin", -7, 2);
    	$anno    = substr("$checkin", -4, 4);
    	}
    
    
    $query_prenotazioni_novembre_2015  = "SELECT checkin, COUNT(*) FROM prenotazioni WHERE $mese = '11' AND $anno = ‘2015’”;
    $result_prenotazioni_novembre_2015 = mysql_query($query_prenotazioni_novembre_2015) or die (mysql_error());
    
    
    $numero_prenotazioni_novembre_2015 = mysql_num_rows($result_prenotazioni_novembre_2015);
    
    
    mysql_close($connessione);
    ?>

    dove vorrei stampare poi a video il numero delle prenotazioni di novembre 2015, per poi replicare il codice per gli altri mesi, ma non va, dove pensate stia sbagliando?

  2. #2
    Quote Originariamente inviata da harry80 Visualizza il messaggio
    ..., ma non va,...
    Siamo alle solite! Cosa significa "non va"?????????
    Ma vi si consuma la tastiera a descrivere l'errore?!?!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Scusami satifal, volevo intendere che non mi stampa con <?php echo htmlspecialchars($numero_prenotazioni_novembre_201 5); ?> il conteggio corretto, ad esempio ho 2 prenotazioni di novembre e mi stampa 1.

  4. #4
    Perdonami la franchezza, ma l'intero codice e' totalmente privo di senso, hai almeno un'idea di quello che stai facendo?

    Prima estrai tutti i record della tabella prenotazioni, assegnando 2 valori a $mese e $anno che sovrascrivi ogni volta (quindi non si capisce l'utilita' del ciclo) e poi fai un'altra query in cui la clausola WHERE non interroga una colonna ma verifica che il dato precedentemente estratto (cioe' la substring del checkin) sia uguale a 11 o 2015. In sostanza sembrano righe di codice generate a caso

    Quello che devi fare e' usare la colonna "checkin" nella query con il COUNT. Come? Dipende dal formato del valore in checkin.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Quote Originariamente inviata da k.b Visualizza il messaggio
    Perdonami la franchezza, ma l'intero codice e' totalmente privo di senso, hai almeno un'idea di quello che stai facendo?

    Prima estrai tutti i record della tabella prenotazioni, assegnando 2 valori a $mese e $anno che sovrascrivi ogni volta (quindi non si capisce l'utilita' del ciclo) e poi fai un'altra query in cui la clausola WHERE non interroga una colonna ma verifica che il dato precedentemente estratto (cioe' la substring del checkin) sia uguale a 11 o 2015. In sostanza sembrano righe di codice generate a caso

    Quello che devi fare e' usare la colonna "checkin" nella query con il COUNT. Come? Dipende dal formato del valore in checkin.
    checkin è nel formato gg-mm-aaaa, cercavo di usare substr per estrapolare il mese e l'anno, ma sinceramente non so come procedere in questo caso, sto utilizzando una parte di codice di un mio vecchio script ma non riesco a riadattarlo...

    codice:
    $count = mysql_query("SELECT COUNT(checkin) FROM prenotazioni WHERE checkin = '11'");
    $result_count = mysql_fetch_row($count);

  6. #6
    Ma checkin di che tipo è? varchar o date?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    varchar per semplificarmi la vita, ho pensato.

  8. #8
    Quote Originariamente inviata da harry80 Visualizza il messaggio
    varchar per semplificarmi la vita, ho pensato.
    Beh hai pensato male dato che il tipo più logico per un campo che dovrà contenere una data è il date!!!

    Per la serie..."perchè facilitarsi la vita quando complicarsela non costa nulla!!!"

    Chi sa perchè mai quei furboni della Oracle avranno tirato in ballo il formato date quando bastava un bel varchar!

    In caso di varchar prova qualcosa del genere:
    codice:
    SELECT count(*) AS conteggio FROM prenotazioni WHERE SUBSTRING(checkin, 4, 10) = '11-2015';

    oppure:
    codice:
    SELECT count(*) AS conteggio FROM prenotazioni WHERE 
    SUBSTRING(checkin, 4, 2) = '11' AND SUBSTRING(checkin, 7, 4) = '2015';

    In caso di date:
    codice:
    SELECT count(*) AS conteggio FROM prenotazioni WHERE 
    MONTH(checkin) = '11' AND YEAR(checkin) = '2015';
    Ultima modifica di satifal; 09-10-2015 a 15:22
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Ripulendo il codice come mi dicevi e lasciando varchar perché a me colpita il fatto della data poi in aaaa-mm-gg, mi ritrovo in questa situazione:

    codice:
    <?phpinclude "connessione.php";
    
    
    $query_prenotazioni  = "SELECT * FROM prenotazioni";
    $result_prenotazioni = mysql_query($query_prenotazioni) or die (mysql_error());
    
    
    $numero_prenotazioni = mysql_num_rows($result_prenotazioni);
    
    
    $query_prenotazioni_novembre_2015 = mysql_query("SELECT count(*) AS conteggio FROM prenotazioni WHERE SUBSTRING(checkin, 4, 10) = '11-2015'");
    $result_prenotazioni_novembre_2015 = mysql_fetch_row($query_prenotazioni_novembre_2015);
    
    
    $numero_prenotazioni_novembre_2015 = mysql_num_rows($result_prenotazioni_novembre_2015);
    
    
    mysql_close($connessione);
    ?>
    Ma questa volta non mi stampa il conteggio, neanche sbagliato, forse c'è qualche ridondanza o manca altro?

    Grazie!

  10. #10
    Hai una minima idea di cosa restituisca la query che ti ho postato e di come funzionino mysql_fetch_row() e mysql_num_rows()
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.