Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Update per script ausführen
Antwort
 
Themen-Optionen
Alt 11.09.2007, 16:12   Nach oben    #1
Neuer Benutzer
 
Registriert seit: 27.10.2005
Beiträge: 14
Standard Update per script ausführen

Hallo,

ich habe diverse Events in einer Datenbank stehen, das Zeitformat ist Y-M-D
Wie kann ich denn nun per Skript anstoßen, das jeden Dienstag das selbige Event eingetragen wird?

Also heute (11.09.2007) und dann immer +7 solange das Datum kleiner ist als 2008-12-31

Könnte mir da jemand weiterhelfen?

Danke und Gruß
Marco
arcor ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:16   Nach oben    #2
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard

Zum Skriptanstoßen machen sich Cronjobs gut.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:19   Nach oben    #3
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Hallo,
schau dir mal die MySQL-Datumsfunktionen an:
- http://dev.mysql.com/doc/refman/5.1/...functions.html

Das hier könnte dir auch helfen:
- http://php-faq.de/q/q-mysql-loeschen.html
Musst du nur die Logik abändern.

Ist also eher ein SQL-Problem, wenn ich das richtig verstanden habe.


PS:
Achso, geht es dir um das Auslesen der Daten oder geht es hier wirklich um Cronjobs?
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:31   Nach oben    #4
Neuer Benutzer
 
Registriert seit: 27.10.2005
Beiträge: 14
Standard

mir geht es eigentlich nur darum, das einmal auszuführen und nicht jeden Datensatz einzeln anlegen oder in ein sql File zu schreiben...

Per Cronjob möchte ich nichts vornehmen.
arcor ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:42   Nach oben    #5
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

*ploink*
Ich habe falsch gelesen.
Sorry.

Du kannst ja solange SQL-Statements in einer Schleife abfeuern bis die Abbruchbedingung (das Datum) erreicht ist.
Wo hakt es denn genau?
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:53   Nach oben    #6
Neuer Benutzer
 
Registriert seit: 27.10.2005
Beiträge: 14
Standard

Naja, ich kann ja nicht einfach sagen date + 7 oder so ähnlich
Muss ich da das Datum wieder auseinanderbröseln?
arcor ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:58   Nach oben    #7
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Du kannst einen Zähler mitlaufen lassen.
Also innerhalb der Schleife machst du
PHP-Code:
$i += 
Beim ersten Mal ist $i = 0; das setzt du so. Danach ist es 7, dann 14, ... also immer eine Woche weiter.

Dann kannst du im SQL-Statement diese Variable nutzen. Musst du mal bei dem oben verlinkten Funktionen schauen, wie man das am besten macht. Weiß ich gerade auch nicht so genau.

Schau dir mal die Funktion DATE_ADD() an. Das mit dem Interval klingt doch eigentlich ganz gut.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 16:59   Nach oben    #8
Projektleiter
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.226
Standard

du kannst aber eine Schleife nehmen (Abbruchbedingung nicht vergessen)
und die dann durchrattern..


mktime() dürfte ein Freund sein.
Einfach pro Durchlauf entsprechende Anzahl an Sekunden
60 Sek = 1Min
60*60 = 1 Std
60*60*24 = 1 Tag
60*60*24*7 = 1 Woche

also pro Durchlauf der Schleife 60*60*24*7 dazuzählen...
und schon hast du immer den Dienstag, wenn der erste Tag einer war..
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 22:18   Nach oben    #9
Neuer Benutzer
 
Registriert seit: 27.10.2005
Beiträge: 14
Standard

Irgendwie bekomme ich es nicht gebacken...
Ich bin leider kläglich gescheitert und werde nun wohl von Hand eintragen müssen
arcor ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.09.2007, 22:20   Nach oben    #10
Benutzer
 
Benutzerbild von bobby
 
Registriert seit: 09.03.2007
Ort: Nürnberg
Beiträge: 57
Standard

Falls ich dich richtig verstanden habe: (MySQL5)
Code:
CREATE PROCEDURE insert_events()
BEGIN
  DECLARE starttime INTEGER DEFAULT NOW();
  DECLARE event_date INTEGER;
  DECLARE finishtime INTEGER DEFAULT TIMESTAMP('2008-12-31');

  SET event_date    = starttime;

  WHILE starttime < finishtime DO
         SET event_date = starttime + 604800; -- 604800 sec = 7 Tage
         INSERT INTO ´events´ (name, date) VALUES('test', event_date);   
  END WHILE;
END;
(Ungetester Code, hab ehr selten mit MySQL zutun)
Unwahrscheinlich, dass das funktioniert - aber ein Gedankenanstoss.

bobby.

//edit: die PHP-Lösung wäre im Grunde das gleiche.

Geändert von bobby (11.09.2007 um 22:56 Uhr).
bobby ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2007, 09:07   Nach oben    #11
Neuer Benutzer
 
Registriert seit: 27.10.2005
Beiträge: 14
Standard

funktioniert leider nicht... hat noch jemand einen php ansatz?
arcor ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2007, 09:36   Nach oben    #12
Projektleiter
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.226
Standard

Hast du den Vorschlag von Ben bzw. den von mir wenigstens mal versucht?

Ich habe den Eindruck das du das nicht hast!

Sowas könnte dabei rauskommen:
PHP-Code:
<?php

  
// Beginn, zB. 15.01.2007
  
$startTag   15;
  
$startMonat 1;
  
$startJahr  2007;

  
// Ende, zB. 31.12.2008
  
$endeTag    31;
  
$endeMonat  12;
  
$endeJahr   2008;


  
// Anfang und Ende
  
$start mktime(000$startMonat$startTag$startJahr);
  
$ende  mktime(000$endeMonat$endeTag$endeJahr);

  for(
$i=$start$i<=$ende$i=$i+60*60*24*7)
  {
     
$sql "INSERT INTO `tabelle` (`ident`, `date`)
             VALUES (NULL , '"
.date('Y-m-d'$i)."')";
     
mysql_query($sql) or exit('<h2>Fehler</h2>sql-querry: '$sql.'<br />error: '.mysql_error());
  }
  echo 
'fertig';
?>
Ich habe das extra mal ein wenig ausführlicher gemacht, damit das auch verstehst.
Wenn du damit Probleme haben solltest, dann sage klar an, was du nicht verstehst! Die copy&paste-Vorkau-Methode ist nicht nicht so gerne gesehen. Frag mich nicht, warum ich dir das trotzdem zum Vorkauen gebe....


Hinweis: ich bestreite nicht, dass es auch Lösungen gibt, die performanter wären..
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2007, 09:52   Nach oben    #13
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Der Ansatz von bobby gefällt mir aber gut.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2007, 10:08   Nach oben    #14
Neuer Benutzer
 
Registriert seit: 27.10.2005
Beiträge: 14
Standard

Hi Jann,

erstmal Danke für deine Hilfe und ja ich habe es vorher versucht - leider ohne Erfolg.

Jetzt habe ich deine Variante genommen und getestet, funktioniert auch... nur leider muss es da einen bug oder einen logischen denkfehler geben!
Nach dem 23.10. sollte der nächste Dienstag der 30.10. sein, nur leider sind alle Einträge ab dort Montags?!?!

Versteh ich nicht
arcor ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2007, 10:18   Nach oben    #15
Projektleiter
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.226
Standard

beachte die Sommer-/Winterzeit.

richtig:
PHP-Code:
   <?php

  
// Beginn, zB. 15.01.2007
  
$startTag   15;
  
$startMonat 1;
  
$startJahr  2007;

  
// Ende, zB. 31.12.2008
  
$endeTag    31;
  
$endeMonat  12;
  
$endeJahr   2008;


  
// Anfang und Ende
  
$start mktime(1200$startMonat$startTag$startJahr);
  
$ende  mktime(1200$endeMonat$endeTag$endeJahr);

  for(
$i=$start$i<=$ende$i=$i+60*60*24*7)
  {
     
$sql "INSERT INTO `tabelle` (`ident`, `date`)
             VALUES (NULL , '"
.date('Y-m-d'$i)."')";
     
mysql_query($sql) or exit('<h2>Fehler</h2>sql-querry: '$sql.'<br />error: '.mysql_error());
  }
  echo 
'fertig';
?>
Dadurch, dass ich Mitternacht gewählt habe (als Zeitpunkt) und zwischendurch die Uhren umgestellt werden, dass aber beim aufaddieren nicht berücksichtigt ist kommt der Fehler.

Nun wird 12 Uhr mittags genommen. Kann sein, dass es mal 11:00 oder mal 13:00 wird.. .aber wenn nur der Tag interessiert ist das nicht tragisch.
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Diverses aus meinem Apache Logs robo47 Tools, Server, Betriebssysteme 3 25.05.2007 22:52
PHP Script alle x Sekunden ausführen | .bat Script? dsxs Sonstige Programmiersprachen 2 03.08.2006 12:15
Variablen per ID auf 2. Script ausgeben? netle Datenbanken 6 18.02.2006 12:43
Suche Möglichkeit htaccess User per Script zu erfahren derMaggus Tools, Server, Betriebssysteme 5 19.01.2006 20:09
[PHP] Wie übergebe ich Daten per URL? Ben Tutorials 0 05.12.2004 14:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:10 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44