Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119

    il db non calcola il timestamp

    salve a tutti.

    Ho un problema, lo spiego in sintesi:


    premetto: server Aruba
    DB: mysql
    campo "scadenza" tipo "TIMESTAMP"
    dati del campo: `scadenza` timestamp NOT NULL default '0000-00-00 00:00:00'


    data da inserire nel campo scadenza tramite form:

    Codice PHP:
    Scadenza:


    <select name="giorno1">
    <?
    for ($i=1$i<=31$i++)
      echo 
    "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="mese1">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>


    <select name="anno1">
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    </select>

    funzione per richiamare le date: ( nel file di action)

    Codice PHP:
    $anno1=$_REQUEST['anno1'];
    $mese1=$_REQUEST['mese1'];
    $giorno1=$_REQUEST['giorno1']; 

    creazione della variabile della data:

    Codice PHP:
    $scadenza mktime(0,0,0,$mese1,$giorno1,$anno1); 

    query per l'inserimento dei dati nel DB: ( previo collegamento al DB)

    Codice PHP:
    $query "INSERT INTO  nome_tabella (scadenza ,  altro_campo ,  altro_campo ) VALUES ('$scadenza', '$altro_campo', '$altro_campo' )"
    MI INSERISCE NEL DB NEL CAMPO "SCADENZA": 0000-00-00 00:00:00

    Mi aiutate?

    ringrazio in anticipo

    Giuseppe

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Non devi usare la funzione mktime che restituisce uno unix timestamp ma semplicemente concatenare i campi

    $scadenza = $anno1.'-'.$mese1.'-'.$giorno1;

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Credo che sia perchè tumetti scadenza tra apici singoli.
    Il timestamp è un intero quindi non va messo tra apici.

    Se no fa un auto casting della stringa del timestamp e viene fuori una schifezza.

    Codice PHP:

    $query 
    "INSERT INTO  nome_tabella (scadenza ,  altro_campo ,  altro_campo ) VALUES ($scadenza, '$altro_campo', '$altro_campo' )"

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Originariamente inviato da nicola75ss
    Non devi usare la funzione mktime che restituisce uno unix timestamp ma semplicemente concatenare i campi

    $scadenza = $anno1.'-'.$mese1.'-'.$giorno1;

    In questo caso allora va bene mettere scadenza tra apici.
    Perchè fa l'autocasting ma essendo una stringa di data corretta non viene fuori una schifezza.

  5. #5
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    Con la concatenazione dei campi funziona.

    Grazie.

    Ora il problema è nella query di estrazione.

    Gli utenti dovranno inserire determinati criteri di selezione tramite un form.

    Mi spiego meglio:

    per quanto riguarda le date, nel DB ho due campi:

    uno è "data_inserimento " che se lo calcola da solo, il tipo del campo è il seguente:

    Codice PHP:
    data_inserimento` timestamp NULL default CURRENT_TIMESTAMP, ( e funziona) 
    l'altro campo e: "scadenza ", che , con il sistema indicatomi in questo topic funziona. Il tipo di campo è il seguente:

    Codice PHP:
    `scadenzatimestamp NOT NULL default '0000-00-00 00:00:00'

    quindi, per quanto riguarda il form di richiesta ho inserito questi campi:



    codice del form: (html)

    Codice PHP:
    <form method="post" action="risultato.php">

    [U]data_inserimento[/U] : dal 

    <select name="[B]inserimento_da_giorno[/B] ">
    <?
    for ($i=1$i<=31$i++)
      echo 
    "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="inserimento_da_mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="inserimento_da_anno">
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    </select>

    al

    <select name="[B]inserimento_a_giorno[/B] ">
    <?
    for ($i=1$i<=31$i++)
      echo 
    "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="inserimento_a_mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="inserimento_a_anno">
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    </select>





    [U]Scadenza[/U] : dal 

    <select name="[B]scadenza_da_giorno[/B] ">
    <?
    for ($i=1$i<=31$i++)
      echo 
    "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="scadenza_da_mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="scadenza_da_anno">
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    </select>

    al 

    <select name="[B]scadenza_a_giorno[/B] ">
    <?
    for ($i=1$i<=31$i++)
      echo 
    "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="scadenza_da_mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="scadenza_da_anno">
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    </select>
    dopodichè, stesso procedimento usato per il form di inserimento.

    dichiaro le variabili nel file di action:

    Codice PHP:
    $inserimento_da_giorno=$_REQUEST['inserimento_da_giorno'];
    $inserimento_da_mese=$_REQUEST['inserimento_da_mese'];
    $inserimento_da_anno=$_REQUEST['inserimento_da_anno'];

    $inserimento_a_giorno=$_REQUEST['inserimento_a_giorno'];
    $inserimento_a_mese=$_REQUEST['inserimento_a_mese'];
    $inserimento_a_anno=$_REQUEST['inserimento_a_anno'];

    $scadenza_da_giorno=$_REQUEST['scadenza_da_giorno'];
    $scadenza_da_mese=$_REQUEST['scadenza_da_mese'];
    $scadenza_da_anno=$_REQUEST['scadenza_da_anno'];

    $scadenza_a_giorno=$_REQUEST['scadenza_a_giorno'];
    $scadenza_a_mese=$_REQUEST['scadenza_a_mese'];
    $scadenza_a_anno=$_REQUEST['scadenza_a_anno']; 

    e poi (e qui viene il bello) creo le variabili delle date:

    allora, ho provato in due modi:

    primo sistema

    Codice PHP:
    $data_inserimento_da $inserimento_da_anno.'-'.$inserimento_da_mese.'-'.$inserimento_da_giorno;

    $data_inserimento_a $inserimento_a_anno.'-'.$inserimento_a_mese.'-'.$inserimento_a_giorno;

    $scadenza_da $scadenza_da_anno.'-'.$scadenza_da_mese.'-'.$scadenza_da_giorno;

    $scadenza_a $scadenza_a_anno.'-'.$scadenza_a_mese.'-'.$scadenza_a_giorno
    secondo sistema:

    Codice PHP:
    $data_inserimento_da mktime(0,0,0,$inserimento_da_mese,$inserimento_da_giorno,$inserimento_da_anno);

    $data_inserimento_a mktime(0,0,0,$inserimento_a_mese,$inserimento_a_giorno,$inserimento_a_anno);

    $scadenza_da mktime(0,0,0,$scadenza_da_mese,$scadenza_da_giorno,$scadenza_da_anno);

    $scadenza_a mktime(0,0,0,$scadenza_a_mese,$scadenza_a_giorno,$scadenza_a_anno); 

    e poi infine inserisco la query di ricerca


    Codice PHP:
    $query "SELECT * FROM informagare WHERE _inserimento >= $data_inserimento_da   AND   data_inserimento <=  $data_inserimento_a   AND  scadenza >= $scadenza_da   AND   scadenza <=  $scadenza_a ORDER BY scadenza DESC LIMIT 0,20"
    allora, in tutte e due i casi non funziona , effettua la query ma non restituisce nessun record. Premetto che , se effettuo la query senza i criteri delle date, tutto funziona correttamente.

    Penso che il problema sia nella creazione delle variabili delle date ( infatti ho provato in due modi) e forse anche nel tipo dei campi del DB (sono timestamp), in ogni caso non riesco a giungere ad una soluzione.

    Spero di non essere stato troppo lungo o confusionario.

    Se mi aiutate, ve ne sarei davvero grato, io intanto continuo a studiare il problema e a provare.

    a dopo e grazie.

    Giuseppe

  6. #6
    nel primo caso (corretto come formato) la data la devi passare come stringa e quindi con le apici, nel secondo compari un unix timestamp con un ansi timestamp.... sarebbe un miracolo funzionasse.

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

  7. #7
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    ho sistemato il primo caso in questo modo:

    Codice PHP:
    $data_inserimento_da '$inserimento_da_anno.'-'.$inserimento_da_mese.'-'.$inserimento_da_giorno';

    $data_inserimento_a '$inserimento_a_anno.'-'.$inserimento_a_mese.'-'.$inserimento_a_giorno';

    $scadenza_da '$scadenza_da_anno.'-'.$scadenza_da_mese.'-'.$scadenza_da_giorno';

    $scadenza_a '$scadenza_a_anno.'-'.$scadenza_a_mese.'-'.$scadenza_a_giorno'
    ma mi restituisce solo i record che erano stati inseriti con data: 0000-00-00 00:00:00


  8. #8
    Originariamente inviato da blob696
    ho sistemato il primo caso in questo modo:

    Codice PHP:
    $data_inserimento_da '$inserimento_da_anno.'-'.$inserimento_da_mese.'-'.$inserimento_da_giorno';

    $data_inserimento_a '$inserimento_a_anno.'-'.$inserimento_a_mese.'-'.$inserimento_a_giorno';

    $scadenza_da '$scadenza_da_anno.'-'.$scadenza_da_mese.'-'.$scadenza_da_giorno';

    $scadenza_a '$scadenza_a_anno.'-'.$scadenza_a_mese.'-'.$scadenza_a_giorno'
    ma mi restituisce solo i record che erano stati inseriti con data: 0000-00-00 00:00:00

    sono perfettamente d'accordo con le testate. Le apici le devi mettere alla query.....

    Codice PHP:
    $data_inserimento_da $inserimento_da_anno.'-'.$inserimento_da_mese.'-'.$inserimento_da_giorno;
    $data_inserimento_a $inserimento_a_anno.'-'.$inserimento_a_mese.'-'.$inserimento_a_giorno;
    $scadenza_da $scadenza_da_anno.'-'.$scadenza_da_mese.'-'.$scadenza_da_giorno;
    $scadenza_a $scadenza_a_anno.'-'.$scadenza_a_mese.'-'.$scadenza_a_giorno;

    .....

    $query "SELECT * FROM informagare 
           WHERE inserimento between '
    $data_inserimento_da' AND '$data_inserimento_a'   
           AND scadenza between '
    $scadenza_da' AND '$scadenza_a'
           ORDER BY scadenza DESC 
           LIMIT 0,20
           "


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

  9. #9
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    niente.

    mannaggia, mi restituisce Zero record.

    ma il tipo di campi vanno bene "timestamp"?

    e se devo cambiarli c'è un modo di far mettere la data di inserimento in automatico, tipo current time?

  10. #10
    Originariamente inviato da blob696
    niente.

    mannaggia, mi restituisce Zero record.

    ma il tipo di campi vanno bene "timestamp"?

    e se devo cambiarli c'è un modo di far mettere la data di inserimento in automatico, tipo current time?
    va bene tutto basta sapere cosa c'e' e cosa vuoi fare. Prima cosa e' l'essere allineati sulle definizioni. Non si puo' dedurre dallo script cosa tu hai nel database. dire che rende 0 record o dire che fuori passa un camion non ha alcuna differenza.

    Suggerimento: Stampa la query e posta il risultato, metti la segnalazione di errore alla query.

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

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.