Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Ricerca su campo date

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302

    Ricerca su campo date

    Buongiorno a tutti,
    ho una form di ricerca che interroga il db e se trova corrispondenza di data mostra a video i risultati.

    Ora finche eseguo la ricerca della data nel formato americano 2015-07-06 i dati vengono correttamente mostrati a video, ma se tento di visualizzarli nel mormato italiano 06/07/2015 non viene mostrato nulla.

    Il database è mysql ed il formato del campo è "date"

    Questa la form di ricerca:

    codice HTML:
    <body>
    <div id="box_ricerca"> <!-- apro il div container -->
    <form name Ricerca method="POST" action="cerca.php">
    <fieldset>
    <legend>Ricerca</legend>
    <div id="box">
      <div id="labdata">Data</div>
      <div id="idata"><input name='data' id="data" size='16'></div>
      <div id="ricerca"><input type="image" src="img/cerca.png"/></div>
    </div>
    </fieldset>
    </form>
    </div>
    </body>
    Questa la pagina cerca.php

    Codice PHP:

    <?php

    // Connessione al dib
    include ("connect.php");

    if (
    trim($_POST['campo1']) == '' && trim($_POST['campo2']) == '' && trim($_POST['data']) == '' && trim($_POST['campo4']) == '' && trim($_POST['campo5']) == '')
    {
        
    //REINDIRIZZO L'UTENTE AL MESSAGGIO DI ERRORE ATTENZIONE COMPILA ALMENO UN CAMPO 

        
    echo "<center><h3><font color=\"red\">Attenzione non hai inserito nessun valore di ricerca</h3><a href=\"ricerca.php\"></br>Torna alla ricerca</a></center></br></br>";
    }


    else
    {

    $campo1 $_POST['campo1'];
    $campo2 $_POST['campo2'];
    $campo3 $_POST['campo3'];
    $data $_POST['data'];
    $campo5 $_POST['campo5'];

    $query "SELECT * , DATE_FORMAT(tabella.data,'%d/%m/%Y') as data_it FROM tabella WHERE 1";

    if (!empty(
    $campo1)) {
        
    $query .= " AND `campo1` LIKE '%$campo1%'";
    }
    if (!empty(
    $campo2)) {
        
    $query .= " AND `campo2` LIKE '%$campo2%' ORDER BY id";
    }

    if (!empty(
    $campo3)) {
        
    $query .= " AND `campo3` LIKE '%$campo3%'";
    }

    if (!empty(
    $data)) {
        
    $query .= " AND `data` = '$data'";
    }
    if (!empty(
    $campo5)) {
        
    $query .= " AND `campo5` LIKE '%$campo5%'";
    }
    }

    // ESEGUO LA QUERY
    $cerca mysql_query($query);


    echo 
    "
        <center><table>
        <tr><th colspan='6'>RISULTATI RICERCA</th><th colspan='5'>OPERAZIONI</tr>
        <tr><th>Id<th>Campo1<th>Campo2<th>Campo3<th>Data<th>Campo4<th>Nuova<th>Visualizza<th>Modifica<th>Pdf<th>Elimina</tr>
    </center>"
    ;

    while (
    $riga mysql_fetch_row($cerca)){
    echo 
    "<tr><td>$riga[0]<td>$riga[2]<td>$riga[5]<td>$riga[1]<td>$riga[103]<td>$riga[102]</td><td><center><a href=\"duplica.php?id=$riga[0]\"><img src= \"img/duplica_32_32.png\"></a></center></td><td><center><a href=\"visualizza.php?id=$riga[0]\"><img src= \"img/visualizza_32_32.png\"></a></center></td><td><center><a href=\"modifica.php?id=$riga[0]\"><img src= \"img/modifica_32_32.png\"></a></center></td><td><center><a href=\"pstampa.php?id=$riga[0]\"><img src= \"img/stampa_32_32.png\"></a></center></td><td><center><a href=\"elimina.php?id=$riga[0]\" onclick=\"return confirm('Cancellare definitivamente?')\"><img src=\"img/elimina_32_32.png\"></a></center></td></tr>";
    }

    echo 
    "</table>";

    // E chiudiamo la connessione a MySQL
    mysql_close();

    ?>
    Mi dareste una mano a capire come recuperare la data in formato italiano ?

    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Devi convertire la data in formato italiano nel formato MySQL (non è formato americano, in tal caso sarebbe mm-dd-yyyy), non puoi fare la ricerca direttamente avendo un formato diverso.

    Con PHP potresti combinare le funzioni date() e strtotime().
    Per farlo direttamente con MySQL, che sarebbe meglio, chiedi nella sezione Database.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Grazie mille Alhazred,
    proverò nella sezione database come da te consigliato, anche se mi sarebbe piaciuto farlo con php capendo come combinare le funzioni da te suggerite
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Beh, prima converti in timestamp la data in formato italiano con strtotime(), poi dal timestamp tiri fuori la data in formato mysql con date().
    Ma fare tutto direttamente nella query è più performante.

  5. #5
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Questa funziona fa a caso tuo:

    Codice PHP:
    function nuovaData($data){
        list(
    $g$m$a) = explode("/"$data);
        return 
    $a "-" $m "-" $g;


  6. #6
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Questa funziona fa a caso tuo:
    No, per favore, ogni volta che non usate DateTime una parte di me muore

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.