[PHP][mysql]24h alte Daten löschen[Hilfe]

03/11/2012 18:34 TimGl#1
Hallo Com,
ich weiß zwar nicht ob das hier herein gehört aber ich brauche dringend Hilfe.
Ich bin ams chreiben eines Votescriptes und habe es nun soweit fertig das:

-es ein Feld gibt wo der User seinen namen einträgt
-der Name in einer Datenbank mit Datum und Zeit gespeichert wird
-der User nur voten kann wenn sein Name noch nicht in der Datenbank vorhanden ist

Nun zum Problem:

Ich will nach 24h den Namen und das Datum löschen lassen.

Aufbau der Tabelle (user)

1. Spalte: name | 2. Spalte: datum



Ich will aber es so machen das die alle Daten die älter sind als 24h beim drauf gehen auf die index.php schon gelöscht werden!!!


Hier mal die Index.php
Code:
<html>
<body>
<form action="votecheck.php" method="POST">
Benutername: <br />
<input type="text" name="benutzername">
<input type="submit" value="Weiter">
</form>
<?php

//Verbindung zur Mysql Datenbank herstellen

$verbindung = mysql_connect("localhost", "vote", "*Passwort*")
or die ("Fehler beim verbinden mit dem MysqlServer");

mysql_select_db("vote")
or die ("Verbindung zur Datenbank fehlgeschlagen");

//Löschen von Daten die älter als 24h sind.

$sql = "DELETE FROM 
        datum
    WHERE 
        Date_Sub(NOW(), INTERVAL 24 HOUR) > Date";
		
mysql_close($verbindung)
?>
</body>
</html>
03/11/2012 19:04 PseudoPsycho#2
Wo ist jetzt das Problem???
Code:
<?php

//Verbindung zur Mysql Datenbank herstellen

$verbindung = mysql_connect("localhost", "vote", "*Passwort*")
or die ("Fehler beim verbinden mit dem MysqlServer");

mysql_select_db("vote")
or die ("Verbindung zur Datenbank fehlgeschlagen");

//Löschen von Daten die älter als 24h sind.

$sql = "DELETE FROM 
        datum
    WHERE 
        Date_Sub(NOW(), INTERVAL 24 HOUR) > Date";
		
mysql_close($verbindung)
?>
<html>
<body>
<form action="votecheck.php" method="POST">
Benutername: <br />
<input type="text" name="benutzername">
<input type="submit" value="Weiter">
</form></body>
</html>
Stell doch einfach die Reihenfolge um..?
03/11/2012 19:44 Freddy​#3
[Only registered and activated users can see links. Click Here To Register...]
03/11/2012 19:54 TimGl#4
Das Problem ist das er es nicht löscht... also das was älter ist als 24h
03/13/2012 17:13 TimGl#5
Hat noch jemand eine Lösung?

es geht immer noch nicht...
03/13/2012 17:21 Whoknowsit#6
1. "Date" ist eine feste Variable, die du nicht ohne Weiteres verwenden kannst. Wenn das Feld, in dem Datum steht, wirklich "Date" heißt, muss es so aussehen:

Code:
Date_Sub(NOW(), INTERVAL 24 HOUR) > 'Date'
Da dein Feld aber "datum" heißt, solltest du das auch verwenden ;)

Code:
WHERE datum < DATE_SUB(NOW(), INTERVAL 24 HOUR)
Oder von mir aus auch so:

Code:
WHERE datum < Now()-Interval 24 hour
03/13/2012 19:20 TimGl#7
Hab jetzt eine Lösung gefunden :D aber trotzdem danke :P

Nun hab ich aber das nächste problem ^^

Ich schreibe ja ein Vote script und wenn ich des drch mache bekomm ich mein Geld + des Votegeld zugeschrieben.

Aber nun zum Problem: wenn ein anderer votet bekommt derjenige mein Geld+Votegeld...

Ich weiß aber nicht worans liegt... glaube es liegt an Session...

Hier mal der Code:

PHP Code:
<html>

<?php

//wie viel Geld sollen die User bekommen?

$betragsetzen 20;

//Nimmt Benutzernamen auf
session_start();

$benutzername $_SESSION["benutzername"];

echo 
"Hallo $benutzername";

//Verbindung zur Mysql Datenbank herstellen

$verbindung mysql_connect("localhost""vote""***")
or die (
"Fehler beim verbinden mit dem MysqlServer");

mysql_select_db("plugins")
or die (
"Verbindung zur Datenbank fehlgeschlagen");


$ergebnis mysql_query("SELECT balance, username FROM iConomy");
while(
$row mysql_fetch_object($ergebnis))
{

  
$betragalt $row->balance;
  
$betragneu $betragalt $betragsetzen;

$aendern "UPDATE iConomy Set
balance = '
$betragneu'
WHERE username = '
$benutzername'";
$update mysql_query($aendern);
header("Location: /vote/fertig.php");
exit();
}

mysql_close($verbindung)
?>

</html>
03/13/2012 22:23 Whoknowsit#8
session_start(); muss vor sämtlichen Ausgaben erfolgen, genau so wie Header. Kein HTML davor, oder sonst etwas.

Mal ein Vorschlag zur Güte:

PHP Code:
<?php
session_start
();

//Nimmt Benutzernamen auf 

$benutzername = (array_key_exists('benutzername'$_SESSION) ? $_SESSION['benutzername'] : '');

if(empty(
$_SESSION['benutzername'])) {
    die(
'Loginfehler.');
}

// Wie viel Geld sollen die User bekommen? 

$betragsetzen 20;

// Verbindung zur Mysql Datenbank herstellen 

$verbindung mysql_connect('localhost''vote''***') or die ('Fehler beim verbinden mit dem MysqlServer'); 
mysql_select_db('plugins') or die ('Verbindung zur Datenbank fehlgeschlagen'); 

// Betrag updaten

$ergebnis mysql_query('SELECT username FROM iConomy WHERE username = "'.$benutzername.'"');
if (
$ergebnis === FALSE) {
    die(
'Ein unerwarteter Fehler ist aufgetreten.');
}

while(
$row mysql_fetch_object($ergebnis)) { 
    
$update mysql_query('UPDATE iConomy Set balance = balance + '.$betragsetzen.' WHERE username = "'.$benutzername.'"');
    
header('Location: /vote/fertig.php'); 
    exit(); 
}
?>