Forum di Matriz

Versione completa: Aiuto per uno script php
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
sul mio sito volgio impletare uno script per cancellare i messaggi scritti dagli utenti da piu di 30 giorni, ho provato con questo script ma mi da errori e non mi cancella i messaggi dalla tabella messaggi. qualcuno mi puo aiutare??, posto qui il file php.

Codice PHP:
<b>Clean Old Messages</b>
<
br><br>


<?
if (
$_POST){

$tabla5 mysql_query("SELECT FROM tb_messenger ORDER BY date ASC"); // selecciono todos los registros de la tabla usuarios, ordenado por nombre
while ($registro5 mysql_fetch_array($tabla5)) { // comienza un bucle que leera todos los registros y ejecutara las ordenes que siguen

$igual=$registro5["plan"];

$prima_data=$row["date"];
$seconda_data="now";

//Todo parece correcto procedemos con la inserccion
$queryz9 "DELETE FROM tb_messenger IF "(("$seconda_data")/86400))-((int)(abs(strtotime ("$prima_data"))  > 30";
mysql_query(
$queryz9) or die(mysql_error());
}

echo "
<b>Done.</b><br><br>";

}
?>
This Button Will Clean Old Messages.
<br><br>
<form method="
post" action="../Documenti/File ricevuti/index.php?op=38">
<input type="
hidden" name="clean" value="clean">
<input type="
submit" Value="Clean" class="button">
</form>





</table> 

grazie in anticipo dell'aiuto che mi verra dato.
Ti dà qualche errore?
(24/09/2008 06:51)Mattia Ha scritto: [ -> ]Ti dà qualche errore?

no errori no solo che non mi cancella i messaggi dalla tabella del database
Prova così:
Codice PHP:
<b>Clean Old Messages</b>
<
br /><br />
<?
php
if(isset($_POST['clean'])){
    
$data date('Y-m-d H:i:s',time()+86400*30);
    
$sql "DELETE FROM tb_messenger WHERE date>'".$data."'";
    if(
mysql_query($sql))
        echo 
"<b>Done.</b><br /><br />";
    else
        echo 
mysql_error();
}
?>
This Button Will Clean Old Messages.
<br /><br />
<form method="post" action="">
<input type="hidden" name="clean" value="clean" />
<input type="submit" value="Clean" class="button" />
</form> 

Il codice era pieno di errori, non capisco come faceva a non uscirtene neanche uno.
(25/09/2008 18:38)Mattia Ha scritto: [ -> ]Prova così:
Codice PHP:
<b>Clean Old Messages</b>
<
br /><br />
<?
php
if(isset($_POST['clean'])){
    
$data date('Y-m-d H:i:s',time()+86400*30);
    
$sql "DELETE FROM tb_messenger WHERE date>'".$data."'";
    if(
mysql_query($sql))
        echo 
"<b>Done.</b><br /><br />";
    else
        echo 
mysql_error();
}
?>
This Button Will Clean Old Messages.
<br /><br />
<form method="post" action="">
<input type="hidden" name="clean" value="clean" />
<input type="submit" value="Clean" class="button" />
</form> 

Il codice era pieno di errori, non capisco come faceva a non uscirtene neanche uno.

ho provato lo script, l'unico problema che mi ha cancellato tutti i messaggi dalla tabella ache quelli + recenti, io voglio cancellare solo i messaggi con + di 30 giorni di anzianità. Che correzzione bisogna fare le date nella tabella sono informato giorno mese anno ora minuti.
Di che tipo è il campo "date" della tabella "tb_messenger"?
(27/09/2008 14:02)Mattia Ha scritto: [ -> ]Di che tipo è il campo "date" della tabella "tb_messenger"?

Il tipo dati nella tb_messenger e varchar(150) con formato 19-07-08 15:56[/align]
Perché non hai usato il tipo DATETIME? Troppo comodo?
Codice PHP:
<b>Clean Old Messages</b>
<
br /><br />
<?
php
if(isset($_POST['clean'])){
    
$rows mysql_query("SELECT id,date FROM tb_messenger");
    while(
$r mysql_fetch_assoc($rows)){
        list(
$day,$month,$year,$hour,$minute) = sscanf($r['date'],"%d-%d-%d %d:%d");
        if(
mktime($hour,$minute,0,$month,$day,$year)>date('Y-m-d H:i:s',time()+86400*30)){
            if(!
mysql_query("DELETE FROM tb_messenger WHERE id='".$r['id']."' LIMIT 1")){
                echo 
mysql_error();
                break;
            }
        }
    }
    echo 
"<b>Done.</b><br /><br />";
}
?>
This Button Will Clean Old Messages.
<br /><br />
<form method="post" action="">
<input type="hidden" name="clean" value="clean" />
<input type="submit" value="Clean" class="button" />
</form> 
(27/09/2008 14:23)Mattia Ha scritto: [ -> ]Perché non hai usato il tipo DATETIME? Troppo comodo?
Codice PHP:
<b>Clean Old Messages</b>
<
br /><br />
<?
php
if(isset($_POST['clean'])){
    
$rows mysql_query("SELECT id,date FROM tb_messenger");
    while(
$r mysql_fetch_assoc($rows)){
        list(
$day,$month,$year,$hour,$minute) = sscanf($r['date'],"%d-%d-%d %d:%d");
        if(
mktime($hour,$minute,0,$month,$day,$year)>date('Y-m-d H:i:s',time()+86400*30)){
            if(!
mysql_query("DELETE FROM tb_messenger WHERE id='".$r['id']."' LIMIT 1")){
                echo 
mysql_error();
                break;
            }
        }
    }
    echo 
"<b>Done.</b><br /><br />";
}
?>
This Button Will Clean Old Messages.
<br /><br />
<form method="post" action="">
<input type="hidden" name="clean" value="clean" />
<input type="submit" value="Clean" class="button" />
</form> 

niente da fare ho variato nella tb_messenger da varchar a datetime ma i messaggi non li cancella.
Se hai cambiato il tipo del campo "date" in DATETIME, devi utilizzare il vecchio script; se lo lasci VARCHAR con il formato che hai indicato, devi utilizzare l'ultimo script.