Code laten loopen

Pagina: 1
Acties:
  • 341 views

Acties:
  • 0 Henk 'm!

  • Xanthium
  • Registratie: September 2005
  • Laatst online: 25-07 11:59
Korte vraag waar ik niet uitkom;

Ik wil de volgende code laten herhalen todat alle records met een verlopen datum eruit zijn gewerkt. Het probleem is namelijk dat ie nu elke keer maar 1 record verwijderd die aan de eisen voldoet. Wat ik tot nu toe heb;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!-- SQL CLEANUP VOOR OUDE DIENSTEN -->

<?php

$today = date('d-m-Y');
$tomorrow = strtotime('+1 day', strtotime($today));

$schoonmaak_query = mysql_query("SELECT datum, id FROM diensten");
$record3 = mysql_fetch_assoc($schoonmaak_query);

$plandatum = $record3['datum'];
$dienstid = $record3['id'];
$expiration_date = strtotime($plandatum);


if ($expiration_date < $tomorrow) {
mysql_query("DELETE FROM diensten WHERE id = $dienstid"); } 
?>


<!-- EINDE SQL CLEANUP VOOR OUDE DIENSTEN -->


weet iemand zo hoe dit te bewerkstelligen? _/-\o_

[ Voor 6% gewijzigd door Xanthium op 30-03-2010 21:38 ]


Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46

KompjoeFriek

Statsidioot

Dit is wel erg basic.

Op regel 8 haal je met mysql_query de nodige resultaten al op van de database.
Vanaf regel 9 zul je moeten beginnen met je loop (tot dat mysql_fetch_assoc geen geldig resultaat meer geeft)

php.net heeft handige online documentatie met voorbeelden hoe je hun functies kunt gebruiken :)

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

nvm

[ Voor 96% gewijzigd door RaZ op 30-03-2010 21:43 ]

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • Xiqum
  • Registratie: Juni 2003
  • Laatst online: 15-09 08:55
Wat je nu doet met mysql_fetch_assoc() is één record uitlezen van je resultaat. Wat je zult moeten doen is een while loop. Eenvoudig voorbeeldje.

code:
1
2
3
4
5
6
7
8
9
while ($record3 = mysql_fetch_assoc($schoonmaak_query);) {
    $plandatum = $record3['datum'];
    $dienstid = $record3['id'];
    $expiration_date = strtotime($plandatum);
    
    if ($expiration_date < $tomorrow)
        mysql_query("DELETE FROM diensten WHERE id = $dienstid");
    
}


Natuurlijk kan je dat loopje nog verbeteren maar dan snap je iig het principe. ;)

edit: spuit 11
edit2: zoals de rest ook al aangeeft je kunt het met 1 query doen iets met "DELETE FROM tabel WHERE datum < morgen"

[ Voor 10% gewijzigd door Xiqum op 30-03-2010 21:47 ]



Acties:
  • 0 Henk 'm!

Verwijderd

Dit hoef je niet eens te loopen. Je kunt dit met één DELETE-statement oplossen. Tip: SQL kan ook prima data vergelijken.

[ Voor 1% gewijzigd door Verwijderd op 30-03-2010 21:46 . Reden: een => één ]


Acties:
  • 0 Henk 'm!

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Je kunt het ook vrij eenvoudig met een andere sql query oplossen.

Maar ik mis nog wat je zelf al hebt geprobeerd.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Acties:
  • 0 Henk 'm!

  • Xanthium
  • Registratie: September 2005
  • Laatst online: 25-07 11:59
bedankt voor jullie suggesties, ben eruit :)

Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Als je nou ook nog even aangeeft hoe je er uit bent gekomen (mede dankzij onze hulp dus) doe je ook nog wat terug voor de community en kan iemand anders met een soortgelijk probleem door dit topic ook zijn probleem oplossen. Zo doe je wat terug voor de hulp die je hier gekregen hebt, voor wat hoort wat, eigenlijk heel normaal :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
^^ Wat hij zegt. Toch zet ik dit topic op slot; dit omdat het in eerste instantie al geen bestaansrecht had omdat het niet meer is dan een Kan iemand even...?-topic en/of een scriptrequest/quickfix. Hierbij dan ook het vriendelijke verzoek voortaan onze Quickstart te hanteren bij het openen van een topic.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.