• ModSenior

    Crea un campo nella tabella con la data, fai uno script php che controlli tutta la tabella per cercare i record da eliminare e li elimini, metti in cron in modo che si esegua automaticamente e il gioco è fatto...


  • User

    @Thedarkita said:

    Crea un campo nella tabella con la data, fai uno script php che controlli tutta la tabella per cercare i record da eliminare e li elimini, metti in cron in modo che si esegua automaticamente e il gioco è fatto...
    Ciao Thedarkita,
    innanzitutto grazie per avermi risposto.
    Nella tabella prodotti sono presenti le voci data e scadenza, la prima con il comando NOW() in automatico mi genera la data di inserzione dell'annuncio.
    Invece la data di scadenza mi rimane a zero poichè non conosco il comando per inserire la data odierna + 30gg.
    Esempio:
    Campo | Tipo |
    Data | date |
    Scadenza | date |

    La tabella prodotti è così configurata.
    Praticamente non appena l'utente inserisce il prodotto automaticamente mi dovrebbe partire un conto alla rovescia con un delete alla fine .
    Ho provato ad inserire questo script ma non funge.:bho:
    Un pò di pazienza!!!
    <? session_start();?>
    <?php
    $tmstmp=mktime();
    $last=file_get_contents("lastcron.txt");
    if(($tmstmp-$last)>(6010))
    {
    $pntr=fopen('lastcron.txt', 'w');
    if(fwrite($pntr, $tmstmp))
    {
    mail ("mail","cron OK","OK");
    include ("cron.php");
    }
    else
    {
    mail ("mail","cron FAIL","FAIL");
    }
    fclose($point);
    }
    ?>


  • User Attivo

    Nel campo data non inserire now() di mysql ma time() di php, il campo scadenza lo puoi anche togliere, tanto ci penserà il cron a "pulire" la tabella 😉

    Hai una pagina che inserisce i dati nel database e un'altra che li fa visualizzare?

    O non hai ancora fatto niente? 😄

    :gthi:


  • User

    @Jeeves said:

    Nel campo data non inserire now() di mysql ma time() di php, il campo scadenza lo puoi anche togliere, tanto ci penserà il cron a "pulire" la tabella 😉

    Hai una pagina che inserisce i dati nel database e un'altra che li fa visualizzare?

    O non hai ancora fatto niente? 😄

    :gthi:
    L'utente dopo essersi loggato entra in un form per l'inserimento prodotto .
    poi il prodotto viene visualizzato in un altra pagina.
    se vuoi puoi dare un'occhiatina startcar . it.(scusate..:D)
    Giusto per rendere l'idea

    Fammi sapere, attendo con anzia.:rollo:


  • User

    @Jeeves said:

    Nel campo data non inserire now() di mysql ma time() di php, il campo scadenza lo puoi anche togliere, tanto ci penserà il cron a "pulire" la tabella 😉

    Hai una pagina che inserisce i dati nel database e un'altra che li fa visualizzare?

    O non hai ancora fatto niente? 😄

    :gthi:
    Scusami dimenticavo nel campo data ho inserito date
    Nella pagina invio prodotto ho inserito NOW(), che a sua volta mi restituisce la data nel campo data sul db.
    Spero di essere stato chiaro:smile5:


  • User Attivo

    Posta qui la query che ha creato la tabella del database, il codice php che inserisce l'annuncio e il codice php che visualizza gli annunci 😉


  • User

    Il data base l'ho creato io con Mysql

    Questo genera l'invio:
    <?
    session_start();

    $login = $_SESSION['logged'];
    $codice = $_POST['codice'];
    

    if ($titolo=="")

    {
    echo "<div align="center"><strong class="error">Compilazione di qualche campo errata!!!<br></strong>";
    echo "<strong><a href="index.php">Torna Indietro</a></strong></div>";
    }

    else{

    echo "";

    	require_once("../db_conn.php");
    	if($immagine==""){ $immagine="nondisponibile.jpg"; }
    	
    
    
    	   $query="INSERT INTO prodotti VALUES('','$login', NOW(),'')";
    	
    
    	   if (!mysql_query($query,$db_conn)) 
    	   {
    		  echo "<br><strong class=\"error\"><h3>Spiacente, impossibile effettuare l'inserimento...</h3></strong>";
    		  echo "<a href=\"index.php\"><h3>Torna Indietro</h3></a></div>";
    	   }
    	   else 
    	   {
    	      echo "Inserimento effettuato con successo!";
              
    
    						}
    		else{ 			  echo "<a href=\"index.php\">Puoi inserire altre auto !</a>"; }
    	   }
    	   echo "</div>";
    

    }

    ?>

    Mentre questo lo stampa:
    <?
    /*function GeneraRandom()
    {
    $numero=rand(1,9999);
    return $numero;

    }
    */
    session_start();
    if(!isset($idsessione))
    {
    session_register("idsessione");
    $idsessione=session_id();
    }

    require_once("db_conn.php");

    $query = "SELECT * FROM prodotti where codice='".$_GET['codice']."'";
    $risultati=mysql_query($query,$db_conn) or die("query non riuscita");

    $numrighe=mysql_num_rows($risultati);

    if($numrighe==0)
    echo " <center>Al momento non ci sono articoli ";

    else{

    while ($riga = mysql_fetch_array($risultati))
    {
    	$codice=$riga['codice'];
    	$venditore=$riga['venditore'];
    		
    	$query1 = "SELECT * FROM utenti where id='$venditore'";
    

    $risultati1=mysql_query($query1,$db_conn) or die("query non riuscita");

    $numrighe1=mysql_num_rows($risultati1);
    while ($riga1 = mysql_fetch_array($risultati1))
    {
    $login=$riga1['nome'];
    ?>
    <? echo "$titolo";
    echo "<input type="hidden" name="articolo" value="$articolo">";
    echo "<input type="hidden" name="prezzounitario" value="$prezzounitario">"; ?>
    <? echo( "$marca"); ?>
    <? echo( "$modello"); ?>
    ecc
    ecc

       </form>
    

    <?

    }
    

    }
    }

    mysql_free_result($risultati);
    ?>


  • User

    @Jeeves said:

    Posta qui la query che ha creato la tabella del database, il codice php che inserisce l'annuncio e il codice php che visualizza gli annunci 😉
    Il data base l'ho creato io con Mysql

    Questo genera l'invio:
    <?
    session_start();

    $login = $_SESSION['logged'];
    $codice = $_POST['codice'];

    if ($titolo=="")

    {
    echo "<div align="center"><strong class="error">Compilazione di qualche campo errata!!!<br></strong>";
    echo "<strong><a href="index.php">Torna Indietro</a></strong></div>";
    }

    else{

    echo "";

    require_once("../db_conn.php");
    if($immagine==""){ $immagine="nondisponibile.jpg"; }

    $query="INSERT INTO prodotti VALUES('','$login', NOW(),'')";

    if (!mysql_query($query,$db_conn))
    {
    echo "<br><strong class="error"><h3>Spiacente, impossibile effettuare l'inserimento...</h3></strong>";
    echo "<a href="index.php"><h3>Torna Indietro</h3></a></div>";
    }
    else
    {
    echo "Inserimento effettuato con successo!";

    }
    else{ echo "<a href="index.php">Puoi inserire altre auto !</a>"; }
    }
    echo "</div>";
    }

    ?>

    Mentre questo lo stampa:
    <?
    /*function GeneraRandom()
    {
    $numero=rand(1,9999);
    return $numero;

    }
    */
    session_start();
    if(!isset($idsessione))
    {
    session_register("idsessione");
    $idsessione=session_id();
    }

    require_once("db_conn.php");

    $query = "SELECT * FROM prodotti where codice='".$_GET['codice']."'";
    $risultati=mysql_query($query,$db_conn) or die("query non riuscita");

    $numrighe=mysql_num_rows($risultati);

    if($numrighe==0)
    echo " <center>Al momento non ci sono articoli ";

    else{

    while ($riga = mysql_fetch_array($risultati))
    {
    $codice=$riga['codice'];
    $venditore=$riga['venditore'];

    $query1 = "SELECT * FROM utenti where id='$venditore'";
    $risultati1=mysql_query($query1,$db_conn) or die("query non riuscita");

    $numrighe1=mysql_num_rows($risultati1);
    while ($riga1 = mysql_fetch_array($risultati1))
    {
    $login=$riga1['nome'];
    ?>
    <? echo "$titolo";
    echo "<input type="hidden" name="articolo" value="$articolo">";
    echo "<input type="hidden" name="prezzounitario" value="$prezzounitario">"; ?>
    <? echo( "$marca"); ?>
    <? echo( "$modello"); ?>
    ecc
    ecc

    </form>

    <?

    }
    }
    }

    mysql_free_result($risultati);
    ?>


  • User Attivo

    Allora, fai così:

    pagina che inserisce i dati nel database:

    [php]<?
    session_start();

    $login = $_SESSION['logged'];
    $codice = $_POST['codice'];

    if ($titolo=="")

    {
    echo "<div align="center"><strong class="error">Compilazione di qualche campo errata!!!<br></strong>";
    echo "<strong><a href="index.php">Torna Indietro</a></strong></div>";
    }

    else{

    echo "";

    require_once("../db_conn.php");
    if($immagine==""){ $immagine="nondisponibile.jpg"; }

    $query="INSERT INTO prodotti VALUES('','".$login."', ".time().",'')";

    if (!mysql_query($query,$db_conn))
    {
    echo "<br><strong class="error"><h3>Spiacente, impossibile effettuare l'inserimento...</h3></strong>";
    echo "<a href="index.php"><h3>Torna Indietro</h3></a></div>";
    }
    else
    {
    echo "Inserimento effettuato con successo!";

    }
    else{ echo "<a href="index.php">Puoi inserire altre auto !</a>"; }
    }
    echo "</div>";
    }

    ?>
    [/php]


    Pagina che stampa a video i commenti:

    [php]<?
    /*function GeneraRandom()
    {
    $numero=rand(1,9999);
    return $numero;

    }
    */
    session_start();
    if(!isset($idsessione))
    {
    session_register("idsessione");
    $idsessione=session_id();
    }

    require_once("db_conn.php");

    $query = "SELECT * FROM prodotti where codice='".$_GET['codice']."'";
    $risultati=mysql_query($query,$db_conn) or die("query non riuscita");

    $numrighe=mysql_num_rows($risultati);

    if($numrighe==0)
    echo " <center>Al momento non ci sono articoli ";

    else{

    while ($riga = mysql_fetch_assoc($risultati))
    {
    $codice=$riga['codice'];
    $venditore=$riga['venditore'];

    $query1 = "SELECT * FROM utenti where id='".$venditore."'";
    $risultati1=mysql_query($query1,$db_conn) or die("query non riuscita");

    $numrighe1=mysql_num_rows($risultati1);
    while ($riga1 = mysql_fetch_assoc($risultati1))
    {
    $login=$riga1['nome'];
    echo $titolo;
    echo "<input type="hidden" name="articolo" value="".$articolo."">";
    echo "<input type="hidden" name="prezzounitario" value="".$prezzounitario."">";
    echo $marca;
    echo $modello;
    ?>
    ecc
    ecc

    </form>

    <?

    }
    }
    }

    mysql_free_result($risultati);
    ?>[/php]

    Però dimmi comì'è strutturata la tabella nel database 😉

    :gthi:


  • User

    Tabella prodotti

    Campo

    Tipo

    Null

    Predefinito
    codice int(11)No venditore varchar(15)No regione varchar(20)No marca varchar(40)No modello textNo carrozzeria varchar(30)No versione varchar(30)No colore varchar(30)No colorenew varchar(30)No metallizzato varchar(15)No carburante varchar(20)No immatricolazionemese varchar(20)No immatricolazioneanno varchar(20)No potenza varchar(20)No chilometraggio varchar(20)No tipocambio varchar(10)No titolo varchar(40)No condizione varchar(5)No descrizione textNo immagine varchar(50)No immagine2 varchar(50)No immagine3 varchar(50)No immagine4 varchar(50)No prezzo floatNo spedizione varchar(2)No data dateNo

    Indici: Nome chiaveTipoCardinalitàCampoPRIMARY PRIMARY20 codice

    Spazio utilizzato: TipoUtilizzoDati11.792BIndice2.048BTotale13.840B Statistiche righe: IstruzioniValoreFormatodinamico Righe20 Lunghezza riga ø589 Dimensione riga ø692 B Prossimo Autoindex64 Creazione04 Lug, 2008 at 10:33 PM Ultimo cambiamento04 Lug, 2008 at 10:33 PM


  • User

    @Jeeves said:

    Allora, fai così:

    pagina che inserisce i dati nel database:

    [php]<?
    session_start();

    $login = $_SESSION['logged'];
    $codice = $_POST['codice'];

    if ($titolo=="")

    {
    echo "<div align="center"><strong class="error">Compilazione di qualche campo errata!!!<br></strong>";
    echo "<strong><a href="index.php">Torna Indietro</a></strong></div>";
    }

    else{

    echo "";

    require_once("../db_conn.php");
    if($immagine==""){ $immagine="nondisponibile.jpg"; }

    $query="INSERT INTO prodotti VALUES('','".$login."', ".time().",'')";

    if (!mysql_query($query,$db_conn))
    {
    echo "<br><strong class="error"><h3>Spiacente, impossibile effettuare l'inserimento...</h3></strong>";
    echo "<a href="index.php"><h3>Torna Indietro</h3></a></div>";
    }
    else
    {
    echo "Inserimento effettuato con successo!";

    }
    else{ echo "<a href="index.php">Puoi inserire altre auto !</a>"; }
    }
    echo "</div>";
    }

    ?>
    [/php]


    Pagina che stampa a video i commenti:

    [php]<?
    /*function GeneraRandom()
    {
    $numero=rand(1,9999);
    return $numero;

    }
    */
    session_start();
    if(!isset($idsessione))
    {
    session_register("idsessione");
    $idsessione=session_id();
    }

    require_once("db_conn.php");

    $query = "SELECT * FROM prodotti where codice='".$_GET['codice']."'";
    $risultati=mysql_query($query,$db_conn) or die("query non riuscita");

    $numrighe=mysql_num_rows($risultati);

    if($numrighe==0)
    echo " <center>Al momento non ci sono articoli ";

    else{

    while ($riga = mysql_fetch_assoc($risultati))
    {
    $codice=$riga['codice'];
    $venditore=$riga['venditore'];

    $query1 = "SELECT * FROM utenti where id='".$venditore."'";
    $risultati1=mysql_query($query1,$db_conn) or die("query non riuscita");

    $numrighe1=mysql_num_rows($risultati1);
    while ($riga1 = mysql_fetch_assoc($risultati1))
    {
    $login=$riga1['nome'];
    echo $titolo;
    echo "<input type="hidden" name="articolo" value="".$articolo."">";
    echo "<input type="hidden" name="prezzounitario" value="".$prezzounitario."">";
    echo $marca;
    echo $modello;
    ?>
    ecc
    ecc

    </form>

    <?

    }
    }
    }

    mysql_free_result($risultati);
    ?>[/php]

    Però dimmi comì'è strutturata la tabella nel database 😉

    :gthi:
    In allegato c'è la tabella prodotti


  • User

    @StartSale said:

    In allegato c'è la tabella prodotti
    Buogiorno Jeeves,
    ho postato la tabella prodotti.
    Forse non va bene?:(


  • User Attivo

    Mazza che tabella, quanto occupa? 😄

    Comunque il fatto è che ti consiglio di usare mysql_fetch_assoc() che fa un'array con $car['nomecampo'] e non $var[0, 1, 2...] 😉

    :gthi:


  • User Attivo

    Comunque non ho sentito parlare di mktime. Per il controllo della data secondo me è il massimo


  • User

    @mikslap said:

    Comunque non ho sentito parlare di mktime. Per il controllo della data secondo me è il massimo
    Ciao
    non ho capito bene, non hai mai sentito parlare di mktime, ma per il controllo della data è il massimo?
    Che significa!
    Scusami mi sembra un controsenso..:?


  • User Attivo

    Ho detto che non ho visto nei messaggi precedenti un chiaro riferimento ad MKTIME di php


  • User

    @mikslap said:

    Ho detto che non ho visto nei messaggi precedenti un chiaro riferimento ad MKTIME di php
    Ciao Mikslap,
    sono un neofita sul php e mysql, dopo 6 mesi ho messo su un sito web di annunci per auto , pian pianino vado sistemadolo aggingendo nuove funzionalità.
    Ora il mio problema è legato alla scadenza dell'annuncio .
    Ho fatto più di una ricerca sui vari motori e forum ma non ho trovato un chiaro riferimento, sulla funzione da integrare, al momento dell'inserimento dell'annuncio.
    Cioè desideravo una funzione tipo che dicesse alla Sql : questa è la data di inserimento aggiungi 30 gg, fai un conto alla rovescia e alla fine elimina l'annuncio.
    Più o meno cerco un qualcosa di simile, l'importante è che dopo l'inserimento dell'annuncio l'utente sappia che tra 30 giorni scade dunque sarà eleminato.
    Spero in un aiutino da parte di chi ha già fatto un qualcosa di simile.
    Grazie anticipatamente
    🙂


  • Consiglio Direttivo

    Ciao starsale

    credo che potresti implementare un semplicissimo codice di php all'apertura della home o dell'area annunci che cancelli tutti gli annunci più vecchi di 30 gg rispetto alla data odierna. (immagino che la data sia salvata nel formato aaaa-mm-dd sul db)

    ovvero:
    [php]$data=time(); // prendo il timestamp attuale
    $data=$data - 2592000; //sottraggo il numero di secondi equivalente a 30 gg
    $data=date('Y-m-d', $data); //formatto la data in aaaa-mm-dd

    $sql="DELETE FROM annunci WHERE data_pubblicazione <= '$data'"; // cancello dalla tabella tutti gli annunci più vecchi o uguali a $data
    $query=mysql_query($sql) or die (mysql_error());[/php]ed il gioco è fatto 😉
    facci sapere se risolvi
    :ciauz:

    EDIT: per far vedere la data di scadenza basta aggiungere i 30 gg alla data pubblicazione annuncio ovviamente 😉


  • User Attivo

    Proprio adesso ho scaricato la e-mail ed ho visto la tua risposta. Adesso non posso ma tra qualche ora ti dico come fare per ignorare o cancellare il messaggio i giorni desiderati.
    Ci sentiamo dopo.
    Ciao


  • User Attivo

    Adesso ti posto uno script creato al momento per riconoscere la differenza di giorni che intercorrono tra la data scritta nel DATABASE e la data attuale.

    list($anno, $mese, $giorno) = explode("-",$variabile_DB); // $variabile_DB E' LA VARIABILE DATA SCRITTA NEL DATABASE
    // calcolo la differenza tra il timestamp della data definita e la data attuale
    // il risultato dovrò dividerlo per 86400 (il numero di secondi in un giorno)
    // MI RICAVO IL NUMERO DI GIORNI CHE INTERCORRONO DALLA DATA DEL DATABASE E LA DATA DI OGGI
    $differenza_esa=(strtotime("$anno/$mese/$giorno") - strtotime(date("Y/m/d")))/(86400);
    $differenza = number_format($differenza_esa, 0, ",", "."); // QUI HO IL NUMERO DI GIORNO FORMATTATO (ANCHE SE E' LA STESSA COSA)
    // qui stampo giorni o giorno a seconda se la differenza è composta da 1 (uno) o più giorni
    // funziona anche con i numeri negativi
    $pluraleosingolare = ((ceil(abs($differenza_esa)>1)) or ceil($differenza_esa)==0)?"giorni":"giorno";
    // CONTROLLO I NUMERI DI GIORNI TRASCORSI
    if ($differenza > 30)
    {
    // IL CODICE PER CANCELLARE O MEGLIO (SECONDO ME) FARE UN UPLOAD DELLA TABELLA DEL SOLO CAMPO (MANCANTE) CHE CHIAMERO'
    // "valore" INT(1), (NOME CAMPO: valore | TIPO: INT(1)) CHE PER DEFAULT E' 0 (ZERO) QUINDI VALIDO CON L'UPLOAD AL CAMPO
    // GLI DAREMO IL VALORE DI 1 (UNO). QUINDI NELLA VISUALIZZAZIONE DEGLI ANNUNCI LA CLAUSULA
    // SELECT * FROM tabella WHERE valore='0'
    $UP = "UPDATE tabella SET valore='1' WHERE id='$id'"; // LA VARIABILE $id SAREBBE L'ID AUTOINCREMENT DELLA TABELLA DEGLI ANNUNCI
    mysql_query($UP,$conn); // $conn E' LA VARIABILE DI CONNESSIONE AL DATABASE CHE DI SOLITO SI METTE NEL FILE config.php
    }