Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Campo data sul DB INT

  1. #1

    Campo data sul DB INT

    Ciao a tutti
    Grazie per tutti i suggerimenti che in questi mesi ho trovato su questo forum. Grazie in anticipo se qualcuno riuscirà a darmi qualche dritta. Questa volta non sono riuscito a trovare con il tasto cerca una soluzione al mio problema ed ecco il mio quesito. Ho trovato uno script che fa per il mio caso qui trovate il codice di origine
    http://www.phpjabbers.com/free-mysql...search-script/
    Ottima base di partenza per creare una ricerca sul mio DB
    Cosa sono riuscito a modificare:
    sono riuscito a creare una ricerca solo su una colonna del mio DB, invece che su due.
    Sono riuscito a trasformare la data in formato italiano nella tabella riassuntiva
    Non sono riuscito a modificare la data nel form di ricerca.
    Mi spiego
    La data nella mia tabella è un campo in INT 11 quindi ho come record 1340143200
    Nello script invece il campo data è date Not NULL 2011-12-29
    Se nel form di ricerca metto 1340143200 la sql funziona se metto il formato gg-mm-aaaa la sql non funziona.
    Ho provato senza successo a modificare lo script ma con nessun esito…riuscite a darmi una mano?
    Ecco lo script
    Grazie per i suggerimenti!

  2. #2
    <?php
    ################################################## #########
    /*
    GuestBook Script
    Copyright (C) 2012 StivaSoft ltd. All rights Reserved.


    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program. If not, see http://www.gnu.org/licenses/gpl-3.0.html.

    For further information visit:
    http://www.phpjabbers.com/
    info@phpjabbers.com

    Version: 1.0
    Released: 2012-03-18
    */
    ################################################## #########
    error_reporting(0);
    include("config.php");
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>MySQL table search</title>
    <style>
    BODY, TD {
    font-family:Arial, Helvetica, sans-serif;
    font-size:12px;
    }
    </style>
    <link rel="stylesheet" type="text/css" media="all" href="skins/aqua/theme.css" title="Aqua" />
    <script type="text/javascript" src="calendar.js"></script>
    <script type="text/javascript" src="calendar-it.js"></script>
    <script type="text/javascript" src="calendariotab.js"></script>
    </head>
    <body>
    <form id="form1" name="form1" method="post" action="search.php">
    <label for="from">From</label>
    <input name="from" type="text" id="from" size="10" value="<?php echo $_REQUEST["from"]; //dopo aggiungo il calendario ?>" /><input type="reset" value=" ... "onclick="return showCalendar('from', '%d-%m-%Y');"></td>
    <label for="to">to</label>
    <input name="to" type="text" id="to" size="10" value="<?php echo $_REQUEST["to"]; //dopo aggiungo il calendario?>"/><input type="reset" value=" ... "onclick="return showCalendar('to', '%d-%m-%Y');"></td>
    <label>Name or Email:</label>
    <input type="text" name="string" id="string" value="<?php echo stripcslashes($_REQUEST["string"]); ?>" />
    <label>City</label>
    <select name="city">
    <option value="">--</option>
    <?php
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY city ORDER BY id";
    $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
    while ($row = mysql_fetch_assoc($sql_result)) {
    echo "<option value='".$row["city"]."'".($row["city"]==$_REQUEST["city"] ? " selected" : "").">".$row["city"]."</option>";
    }
    ?>
    </select>
    <input type="submit" name="button" id="button" value="Filter" />
    </label>
    <a href="search.php">
    reset</a>
    </form>



    <table width="700" border="1" cellspacing="0" cellpadding="4">
    <tr>
    <td width="90" bgcolor="#CCCCCC">From date</td>
    <td width="159" bgcolor="#CCCCCC">Name</td>
    <td width="191" bgcolor="#CCCCCC">Email</td>
    <td width="113" bgcolor="#CCCCCC">City</td>
    </tr>
    <?php
    //qui non riesco a capire dove trasformare la data..........
    if ($_REQUEST["string"]<>'') {
    $search_string = " AND (full_name LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%' OR email LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%')";
    }
    if ($_REQUEST["city"]<>'') {
    $search_city = " AND city='".mysql_real_escape_string($_REQUEST["city"])."'";
    }

    if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."' AND from_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;
    } else if ($_REQUEST["from"]<>'') {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."'".$search_string.$search_city;
    } else if ($_REQUEST["to"]<>'') {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;
    } else {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_string.$search_city;
    }

    $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
    if (mysql_num_rows($sql_result)>0) {
    while ($row = mysql_fetch_assoc($sql_result)) {
    ?>
    <?php
    echo "<tr>";
    //creo la tabella con la formattazione che gradisco
    echo "<td class=\"textDisplay1\">".$data = date("d-m-Y", $row['from_date'])."</td>";
    //trasformo la da in formato italiano
    echo "<td class=\"textDisplay1\">".$row[full_name]."</td>";
    echo "<td class=\"textDisplay1\">".$row[email]."</td>";
    echo "<td class=\"textDisplay1\">".$row[city]."</td>";
    ?>
    <?php
    }
    } else {
    ?>
    <tr><td colspan="5">No results found.</td>
    <?php
    }
    ?>
    </table>


    <script>
    $(function() {
    var dates = $( "#from, #to" ).datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 2,
    dateFormat: 'dd-mm-yy',
    onSelect: function( selectedDate ) {
    var option = this.id == "from" ? "minDate" : "maxDate",
    instance = $( this ).data( "datepicker" ),
    date = $.datepicker.parseDate(
    instance.settings.dateFormat ||
    $.datepicker._defaults.dateFormat,
    selectedDate, instance.settings );
    dates.not( this ).datepicker( "option", option, date );
    }
    });
    });
    </script>

    </body>
    </html>
    Grazie per i suggerimenti!

  3. #3
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    Non dici cos'è quell'INT che salvi nel DB al posto della data. E' forse il timestamp? In tal caso dovrai convertire da data a timestamp e viceversa. Guardati le funzioni time() e mktime() native di PHP.
    Ti consiglio comunque di salvare nel DB campo in formate DATE, ne hai solo vantaggi, così riesci a sfruttare le decine di funzioni native di MySQL sui campi data
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  4. #4
    Originariamente inviato da marco_c
    Non dici cos'è quell'INT che salvi nel DB al posto della data. E' forse il timestamp? In tal caso dovrai convertire da data a timestamp e viceversa. Guardati le funzioni time() e mktime() native di PHP.
    Ti consiglio comunque di salvare nel DB campo in formate DATE, ne hai solo vantaggi, così riesci a sfruttare le decine di funzioni native di MySQL sui campi data
    Grazie Marco del tuo suggerimento.
    Mastico veramente poco di php. Quella tabella sul db faceva parte di uno script dove giornalemte salvavo i miei servizi appuntamenti per servizi fotografici.Ora avevo la necessità di creare una ricerca la tabella sul db è la seguente

    id
    servizio
    data_ins
    cliente
    email
    telefono
    luogo

    in data_ins inserisco dal form in questo metodo
    $data_ins = strtotime($_POST['data1'])

    Ho letto il tuo suggerimento e sicuramente la parte da modificare sarà questa ho sbaglio?
    // cambiare data_ins da $data_ins = strtotime($_POST['data1'])
    Codice PHP:
    <?php  if ($_REQUEST["string"]<>'') {     $search_string " AND (full_name LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%' OR email LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%')";     } if ($_REQUEST["city"]<>'') {     $search_city " AND city='".mysql_real_escape_string($_REQUEST["city"])."'";     }  if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') {     $sql "SELECT * FROM ".$SETTINGS["data_table"]." WHERE data_ins >= '".mysql_real_escape_string($_REQUEST["from"])."' AND data_ins <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city; } else if ($_REQUEST["from"]<>'') {     $sql "SELECT * FROM ".$SETTINGS["data_table"]." WHERE data_ins >= '".mysql_real_escape_string($_REQUEST["from"])."'".$search_string.$search_city; } else if ($_REQUEST["to"]<>'') {     $sql "SELECT * FROM ".$SETTINGS["data_table"]." WHERE data_ins <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city; } else {     $sql "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_string.$search_city; }  $sql_result mysql_query ($sql$connection ) or die ('request "Could not execute SQL query" '.$sql); if (mysql_num_rows($sql_result)>0) {     while ($row mysql_fetch_assoc($sql_result)) { ?>
    Grazie per i suggerimenti!

  5. #5
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    Non ho capito che strada vuoi intraprendere: vuoi modificare il campo int in campo DATE nel DB?

    Allora dovrai prima di tutto migrare i dati che sono già dentro nel db
    a) aggiungi una colonna di tipo DATE
    b) fai uno script PHP che fa la SELECT di tutti i record e per ogni singolo record esegue l'update del nuovo campo DATE col valore preso dal vecchio campo INT: UPDATE tabella SET campo_data='<?php print date('Y-m-d', $record["campo_int"]) ?>' WHERE id=<?php print $id ?>
    c) poi puoi eliminare la colonna campo_int

    Così hai trasformato i dati esistenti.
    Poi come dici tu la riga in cui gestisci l'input

    $data_ins = strtotime($_POST['data1'])

    diventerà

    $data_ins = $_POST['data1']

    cioè conservi la data così come l'ha inserita l'utente
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  6. #6
    Ciao Marco
    quella di cambiare il campo nellla tabella è un ipotesi che avevo preso in considerazione.Ma dovrei cambiare tante cose ...
    Sto cercando di modificare il form di ricerca. Che ho postato sopra.
    In pratica:
    sul DB ho un campo dove mi salva le date 'data_ins' in questo formato
    data_ins = INT 10 quindi sul db le date sono salvate in questa maniera 1340143200
    Nel form se metto 1340143200 effettua la ricerca corretta
    Quello che vorrei fare è mettere nel form di ricerca la data in questa maniera gg-mm-aaaa ed effetuare la ricerca senza modificare il campo data sul db.Ma non riesco


    Grazie per i suggerimenti!

  7. #7
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    Ce la dovresti fare con la funzione mktime e un pò di operazioni sulle stringhe.
    Se il tuo input è

    Codice PHP:
    $_POST['data1'
    allora, se per esempio il separatore della data è il trattino "-", spezzi i vari campi della data

    Codice PHP:
    list($giorno$mese$anno) = preg_split("[-]"$_POST['data1']) 
    A questo punto trasformi i vari pezzi in timestamp con la funzione mktime

    Codice PHP:
    $ts mktime(000$mese$giorno$anno
    Ora usi $ts nella query.
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  8. #8
    Grazie mi metto all'opera... e ti faccio sapere
    Grazie per i suggerimenti!

  9. #9
    Ciao Marco ho provato a ragionare e a studiare i tuoi ragionamenti
    dunque
    Io ho un valore dta sul db che è un campo INTEGER. Quindi avro come data questo valore 1340143200

    Per trasformarlo
    <?php
    $tmsp=1340143200; // data 20-06-2012
    echo date('d-m-Y',$tmsp);
    ?>

    Questa è la soluzione per la tabella di ricerca per trasformare la data da
    1340143200---gg-mm-aaaa
    <?php
    echo "<td class=\"textDisplay1\">".$data = date("d-m-Y", $row['from_date'])."</td>";
    ?>

    Ora la parte difficile
    <?php
    if ($_REQUEST["string"]<>'') {
    $search_string = " AND (full_name LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%' OR email LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%')";
    }
    if ($_REQUEST["city"]<>'') {
    $search_city = " AND city='".mysql_real_escape_string($_REQUEST["city"])."'";
    }

    if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."' AND from_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;
    } else if ($_REQUEST["from"]<>'') {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."'".$search_string.$search_city;
    } else if ($_REQUEST["to"]<>'') {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;
    } else {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_string.$search_city;
    }
    if (isset($_POST['tipo3']) && $_POST['tipo3']) $query .= "data BETWEEN $data1 AND $data2 OR ";
    $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
    if (mysql_num_rows($sql_result)>0) {
    while ($row = mysql_fetch_assoc($sql_result)) {
    ?>

    E qui nulla ho provato diversi modifiche senza nessun risultato

    inserendo nei due form la data gg-mm-aaaa non trova nulla
    se metto
    1340143200 funziona........
    Dove sbaglio....
    Grazie mille
    Grazie per i suggerimenti!

  10. #10
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    Non capisco bene il senso del codice.
    Prima scrivi così

    Codice PHP:
    if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>''
    {
    $sql "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."' AND from_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;

    il che è palesemente sbagliato, visto che infili nella query direttamente ciò che ricevi dall'input dell'utente ($_REQUEST["from"] e $_REQUEST["to"]). Invece qui l'input lo devi trasformare. Ti avevo spiagato come in qualche post fa.

    Poi di seguito scrivi

    Codice PHP:
    if (isset($_POST['tipo3']) && $_POST['tipo3']) $query .= "data BETWEEN $data1 AND $data2 OR "
    A parte che non so cosa significa tipo3.. qua sembri appenderci un'altra ricerca sempre sulle date.. Non capisco.
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

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.