time

Status
Niet open voor verdere reacties.

ArcanA

Gebruiker
Lid geworden
19 jul 2009
Berichten
37
Hallo.

Laat me even omschrijven wat ik precies maak.
Ik maak een trouwscript op een spel waar de ene een naam in kan vullen en de andere de trouw kan accepteren / weigeren.

Wanneer PersoonA , PersoonB ten huwelijk gevraagt heeft, krijgt hij 24uur de tijd deze te aanvaarden of weigeren. Wanneer de 24uur om zijn, en hij nog niet gereageerd heeft, moet het dus uit de database verwijderen.

Wat doe ik? Wanneer PersoonA hem verstuurt heeft, stuur ik id, verstuurder, ontvanger, getrouwd en timedelete naar de database.
PHP:
$timedelete = time () + (24*60*60);
Dus, 24uur.

Ik zet dan de volgende check in mijn db connect:


PHP:
<?php
  # Alle huwelijkaanzoeken na 24uur verwijderen die niet geacepteerd of verwijdert zin
  $sQuery = "SELECT * FROM huwelijk WHERE getrouwd = 'nee'";
  $sResult = mysql_query($sQuery);
    while ($sTrouw = mysql_fetch_assoc($sResult)) {
    
      mysql_query ("DELETE FROM `trouwen` WHERE `timedelete` < '". time () ."'");

    }
?>

Iemand een idee waarom dit niet wilt werken? Zit er al een aantal uren mee, hopelijk kan iemand me helpen.

Mvg,
ArcanA
 
Laatst bewerkt:
Je tweede reeks queries is onnodig, je kunt het ook gewoon in 1x doen:

[sql]
DELETE FROM trouwen WHERE getrouwd = 'nee' AND timedelete < NOW()
[/sql]

De huidige query haalt eerst alle niet getrouwde rijen op, en voert vervolgens heel vaak dezelfde query uit; die ALLE rijen verwijderd waar de timedelete te klein is; ook degenen die al getrouwd zijn; omdat er geen restrictie zit op of ze wel/niet getrouwd zijn, of de ID van de rij.
 
ik zal het eens proberen, dus je bedoelt dat ik die while weg moet doen ?

Het is gelukt (jij had ook nog een foutje gemaakt)

Het was niet NOW , maar TIME

Hartstikke bedankt! Ik dacht dat je maar 1rij kon verwijderen in een Query zonder while te gebruiken omdat je met mysql_fetch_assoc er ook maar eentje komt uit te db halen zonder while te gebruiken..

Mvg,
ArcanA
 
Laatst bewerkt:
Hm? NOW() is als het goed is een functie van de database, die hetzelfde doet als time() in PHP :)

En je kunt zoveel rijen verwijderen als je wilt; net als je meerdere rijen kunt selecteren (je haalt ze 1 voor 1 op ivm geheugenverbruik, je selecteert ze allemaal in 1x)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan