Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    problema inserimento data

    Vorrei creare una pagina dove vengono visualizzati solo degli eventi (futuri), ma al momento non mi riesce.
    questo lo script per l'inserimento:

    <?php
    $user = "root";
    $pwd = "";
    $host = "localhost";
    $dbase = "test1";

    $db = mysql_connect ($host, $user, $pwd) or die
    ("Impossibile connettersi al database!");

    mysql_select_db ($dbase);
    $titolo = $_POST['titolo'];
    $FCKeditor1 = $_POST['FCKeditor1'];
    $giorno = $_POST['giorno'];
    $mese = $_POST['mese'];
    $anno = $_POST['anno'];
    $img = $_POST['img'];

    $data = mktime("0", "0", "0", $mese, $giorno, $anno);

    mysql_query ("INSERT INTO event (titolo_ev, testo_ev, data_ev, img_ev ) VALUES ('$titolo', '$FCKeditor1', '$data', '$img')") or die("Errore nell'inserimento!");
    echo ("Inserimento avvenuto correttamente!");

    ?>

    dove il campo data è int(11).
    L'inserimento va bene.
    Però quando vado a fare l'estrazione non mi filtra i dati: se metto <= now() estrae tutti i dati. se metto >= non estrae nulla. Ho provato a mettere le date sia future che passate

    questo è lo script di estrazione:

    <?php require_once('./connessionex/wr08b.php'); ?>
    <?php
    mysql_select_db($database_wr08b, $wr08b);
    $query_elencocat = "SELECT * FROM event WHERE data_ev <= NOW() ORDER BY data_ev DESC LIMIT 0,5";
    $elencocat = mysql_query($query_elencocat, $wr08b) or die(mysql_error());
    $row_elencocat = mysql_fetch_assoc($elencocat);
    $totalRows_elencocat = mysql_num_rows($elencocat);
    ?>
    <html>
    <head>
    <title>Appuntamenti </title>
    </head>
    <body>
    Elenco delle categorie:<?php do { ?><table>
    <tr><td>


    [img]<?php echo $row_elencocat['img_ev']; ?>[/img]
    <a href="appuntamento.php?id_ev=<?php echo $row_elencocat['id_ev']; ?>">
    <?php echo $row_elencocat['id_ev']; ?> - <?php echo $row_elencocat['titolo_ev']; ?></a>

    <?php echo $row_elencocat['titolo_ev']; ?></p></td></tr></table>
    <?php } while ($row_elencocat = mysql_fetch_assoc($elencocat)); ?>

    </body>
    </html>
    <?php
    mysql_free_result($elencocat);
    ?>

    se metto il formato della data timestamp o data mi inserisce solo 000000.
    dove sbaglio?

  2. #2
    In MySql c'è il type DATETIME che è una variabile già pronta per svolgere le funzioni.

    Tu utilzzi un INT(11) per la data anzichè DATETIME, però poi pretendi di fare estrazioni utilizzando la funzione NOW() che funziona solo con le date.

    Hai due alternative:
    1) o usi il timestamp e allora devi usare solo funzioni timestamp anche a livello SQL
    2) o usi le date e allora devi usare solo funzioni per le date anche a livello SQL.

    Non puoi fare un misto!


    Ti consiglio di usare il data type corretto e impostarlo sulla data, altrimenti se proprio vuoi usare i TIMESTAMP con i campi interi sul Mysql allora stostituisci il NOW() dentro al MySql con UNIX_TIMESTAMP();

    NOTA BENE: La funzione TIMESTAMP(); in Mysql utilizza un formato differente da PHP, devi usare la funzione UNIX_TIMESTAMP(); per ottenere lo stesso formato che in PHP ottieni con la funzione time();


  3. #3
    Ti ringrazio della risposta. ho già provato a cambiare il formato data in mysql ma inserisce solo 0000-00-00. se cambio il formto in mysql devo cambiare anche lo script per l'inserimento?
    se si per favore dammi una dritta.
    Grazie
    Francesco

  4. #4
    Originariamente inviato da eurospeed
    Ti ringrazio della risposta. ho già provato a cambiare il formato data in mysql ma inserisce solo 0000-00-00. se cambio il formto in mysql devo cambiare anche lo script per l'inserimento?
    se si per favore dammi una dritta.
    Grazie
    Francesco
    Non hai letto bene il mio consiglio.
    Se usi TIMESTAMP... usi TIMESTAMP, se usi le date... usi le date.

    Okey riproviamo:

    1) cambia il data type sul Mysql
    2) puoi fare la INSERT in due modi:

    Codice PHP:
    mysql_query ("INSERT INTO event (titolo_ev, testo_ev, data_ev, img_ev ) VALUES ('$titolo', '$FCKeditor1', NOW(), '$img')") or die("Errore nell'inserimento!");
    echo (
    "Inserimento avvenuto correttamente!"); 
    oppure se vuoi impostare manualmente la data senza usare il valore NOW(), puoi semplicemente dichiararla:

    Codice PHP:
    mysql_query ("INSERT INTO event (titolo_ev, testo_ev, data_ev, img_ev ) VALUES ('$titolo', '$FCKeditor1', '$anno-$mese-$giorno 00:00:00', '$img')") or die("Errore nell'inserimento!");
    echo (
    "Inserimento avvenuto correttamente!"); 
    PS: se non ti serve l'orario allora non utilizzare il data type DATETIME ma usa solamente DATE, così non dovrai specificare lo 00:00:00 in ogni inserimento.

    Ciao
    Max

  5. #5
    ok scusa non avevo capito.
    domani provo e se funziona posto lo script corretto

  6. #6
    Originariamente inviato da eurospeed
    ok scusa non avevo capito.
    domani provo e se funziona posto lo script corretto
    Tranquillo! Non ti devi mica scusare!!!
    ... sono ironico quando faccio così

  7. #7
    Vaaaaaaaaaaaaaaaaaa bene OOOOOOOOOOOOOOOOOOOOOOk.

    funziona alla perfezione.
    questo lo script funzionante per chi ne avesse bisogno.

    <?php
    $user = "root";
    $pwd = "";
    $host = "localhost";
    $dbase = "test1";

    $db = mysql_connect ($host, $user, $pwd) or die
    ("Impossibile connettersi al database!");

    mysql_select_db ($dbase);
    $titolo = $_POST['titolo'];
    $meteo = $_POST['meteo'];
    $FCKeditor1 = $_POST['FCKeditor1'];
    $giorno = $_POST['giorno'];
    $mese = $_POST['mese'];
    $anno = $_POST['anno'];
    $img = $_POST['img'];


    mysql_query ("INSERT INTO event (titolo_ev, testo_ev, data_ev, datal_ev, img_ev ) VALUES ('$titolo', '$FCKeditor1', '$anno-$mese-$giorno 00:00:00', '$meteo', '$img')") or die("Errore nell'inserimento!");
    echo ("Inserimento avvenuto correttamente!");
    ?>

  8. #8
    Originariamente inviato da eurospeed
    Vaaaaaaaaaaaaaaaaaa bene OOOOOOOOOOOOOOOOOOOOOOk.

    funziona alla perfezione.
    questo lo script funzionante per chi ne avesse bisogno.

    <?php
    $user = "root";
    $pwd = "";
    $host = "localhost";
    $dbase = "test1";

    $db = mysql_connect ($host, $user, $pwd) or die
    ("Impossibile connettersi al database!");

    mysql_select_db ($dbase);
    $titolo = $_POST['titolo'];
    $meteo = $_POST['meteo'];
    $FCKeditor1 = $_POST['FCKeditor1'];
    $giorno = $_POST['giorno'];
    $mese = $_POST['mese'];
    $anno = $_POST['anno'];
    $img = $_POST['img'];


    mysql_query ("INSERT INTO event (titolo_ev, testo_ev, data_ev, datal_ev, img_ev ) VALUES ('$titolo', '$FCKeditor1', '$anno-$mese-$giorno 00:00:00', '$meteo', '$img')") or die("Errore nell'inserimento!");
    echo ("Inserimento avvenuto correttamente!");
    ?>
    Lo script è insicuro, chiunque potrebbe fare una Sql Injection,

    devi sempre mettere dei controlli per vedere se il titolo ad esempio è una stringa (e mettere gli addslashes), se il giorno, il mese e l'anno fanno un effettivamente una data valida (esiste una funzione che valida le date).

    Ricordati di mettere gli addslashes su tutto.

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.