Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    192

    if sul controllo data attuale

    Salve a tutti,
    la problematica sta nel fatto che vorrei una IF che controlla il mese della data attuale, se non è stata creata una richiesta la creo con il codice di seguito:

    Cioè se non esiste una richiesta del mese di agosto, creo altrimenti errore:
    Codice PHP:
    // preparo la query per l'inserimento:
    $data = date("d/m/Y"); $sql = "INSERT INTO richieste (data, id_utente) VALUES ('$data','$id_session')"; if(!$message){
    if (
    $connect->query($sql) === TRUE){
    $message = "Richiesta inserita!";
    }
    else{
    $message = "Errore";
    } }
    }
    //FINE INSERIMENTO RICHIESTA?>


    Questo inserimento funziona, ma a priori dovrei fare la verifica...
    //$sqlquery = "SELECT * FROM richieste WHERE month(richieste.data) = month(now())";
    //$result = mysqli_query($connect,$sqlquery);
    //$verifica_mese = mysqli_num_rows($result);

    Non so se sono stato chiaro....
    Ultima modifica di Nosf1; 31-08-2018 a 15:32

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Non so se ho capito bene, ma mi sembra che il codice ce lo hai già tutto
    - fai la select con il controllo del mese
    - controlli il numero di righe recuperate
    - se è zero parti con l'inserimento
    Riccardo Sadocchi
    Microsoft MCP C#

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    192
    E' la IF che non va e la verifica_mese mi da errore... forse sbaglio qualcosa nel codice. L'insert va e funziona. Ma non riesco ad impostare a priori la IF

    In poche parole:
    posso devo poter fare la insert solo una volta al mese.... (creare una richiesta al mese) e non più di una
    Ultima modifica di Nosf1; 31-08-2018 a 17:23

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    ah ok, per prima cosa testa la query, prova a modificarla, ad esempio

    "SELECT * FROM richieste WHERE month('2018-08-01') = month(CURDATE())"
    Riccardo Sadocchi
    Microsoft MCP C#

  5. #5

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    scusa non ho ben capito l'immagine, quindi funziona?

    se in quel modo funziona devi utilizza re CURDATE() (non now()), il nome della colonna (non tabella.colonna)

    tipo
    "SELECT * FROM richieste WHERE month(nome_colonna) = month(CURDATE())"
    Riccardo Sadocchi
    Microsoft MCP C#

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    192
    L'inserimento funziona... (la insert...) ma non so come fare il controllo:
    SE NON ESISTE UNA RICHIESTA NEL MESE (DATA DI OGGI) ALLORA INSERISCI.... ALTRIMENTI NON PUOI INSERIRE
    Cattura.JPG

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Come ti ha detto rikyeko devi prima fare una select cercando una eventuale richiesta nel mese attuale,
    IF la select trova qualcosa NON PUOI inserire
    ELSE inserisci eseguendo la insert

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    192
    Ok, ho creato questo controllo, ma continua ad inserirmi bypassando la IF. Mi sa che sbaglio proprio la sintassi.

    codice:
    //INSERIMENTO RICHIESTA
    if(isset($_POST["invia"]))
    	{
    	    $message = false;	
    	    // recupero la data:
    			
    		@list($g,$m,$a) = explode('/', $data);
    		$data = $a.'-'.$m.'-'.$g;
    		
    		// VERIFICO SE LA RICHIESTA E' DEL MESE (max una richiesta al mese)
    				$sqlquery = "SELECT * FROM richieste WHERE month(data) = month(curdate())";
    				$result = mysqli_query($connect,$sqlquery);
    								
           if (mysqli_fetch_array($result)==NULL) {
    		    $message = "Errore";
    	   }
    	   else {
    	   // preparo la query per l'inserimento:
    	   $sql = "INSERT INTO richieste (data, id_utente) VALUES ('$data','$id_session')";
    	    if(!$message){
    	    	if ($connect->query($sql) === TRUE)
    		     {
    		      $message = "Richiesta Inserita";
    			  mysqli_free_result($result);
    		    }
             }				
           }
        }
    //FINE INSERIMENTO RICHIESTA
    ?>

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ma scusa, i tuoi controlli sono:
    IF la query da errore scrivi il messaggi d'errore
    ELSE esegui la insert

    Dov'è che controlli se la select ha trovato qualcosa? Certo che esegue sempre il ramo ELSE, perché la query non da errore, semplicemente non trova niente.
    Nessun risultato (false sul fetch) != errore (null sul fetch, che poi in caso d'errore verrà sollevata un'eccezzione, non un semplice null)
    Ultima modifica di Alhazred; 03-09-2018 a 12:55

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.