CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
02.11.2005, 16:11:58
|
Anfänger
|
|
Registriert seit: Jul 2005
Ort: Hannover
Alter: 44
Beiträge: 55
|
|
HILFE!!! Hab da nen Denkfehler!
hallo zusammen,
ich hänge mal wieder an einem kleinen skript und seh die lösung grade nicht und hoffe, dass mir da jemand von euch auf die sprünge helfen kann:
und zwar habe ich eine csv datei in eine db importiert und ich möchte nun das feld bdate in jedem datensatz in ein format bringen, mit welchem ich auch etwas anfangen kann.
bis hierhin gibt es kein problem, allerdings wenn ich das skript ausführe, erhält jeder datensatz den selben wert....
hier mal der code für das meiner meinung nach recht einfach zu lösende problem:
PHP-Code:
<?php
include("config_db.php");
function datum_wie_ich_will($t) {
return sprintf("%02d%02d%02d",
substr($t, 6, 7),
substr($t, 3, 4),
substr($t, 0, 2));
}
$abfr=mysql_query("SELECT * FROM $table_po");
while($dsatz=mysql_fetch_array($abfr)){
$t=$dsatz[bdate];
$datum = datum_wie_ich_will($t);
$update=mysql_query("UPDATE $table_po SET bdate = '$datum'");
}
?>
wahrscheinlich steh ich da grad aufm schlauch!!
vielen dank schonmal im voraus für eure mühe!!
gruß knisterkarl
|
02.11.2005, 17:27:02
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: HILFE!!! Hab da nen Denkfehler!
In deiner UPDATE-Query fehlt eine WHERE-Klausel. Deswegen werden einfach alle Datensätze aktualisiert.
|
02.11.2005, 18:07:29
|
Anfänger
|
|
Registriert seit: Jul 2005
Ort: Hannover
Alter: 44
Beiträge: 55
|
|
AW: HILFE!!! Hab da nen Denkfehler!
hallo xabbuh,
ich habe die where bedingung/klausel bewusst weg gelassen, da ja jeder datensatz verändert werden soll. allerding soll nicht jeder datensatz den wert des ersten bekommen, sondern jedes datum soll dahingehend verändert werden, dass es zu dem entsprechenden datensatz passt....ich hoffe das ist einigermaßen verständlich!!
gruß knisterkarl
|
02.11.2005, 19:14:05
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: HILFE!!! Hab da nen Denkfehler!
Eben deswegen brauchst du eine WHERE-Klausel in der du angibst, welcher Datensatz genau dieses Datum bekommen soll. Außerdem: Was hast du da überhaupt vor?
Geändert von xabbuh (02.11.2005 um 19:32:04 Uhr)
|
02.11.2005, 19:43:05
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: HILFE!!! Hab da nen Denkfehler!
Zitat:
Zitat von Knisterkarl
jedes datum soll dahingehend verändert werden, dass es zu dem entsprechenden datensatz passt....ich hoffe das ist einigermaßen verständlich!!
gruß knisterkarl
|
eben genau deswegen brauchts ja ne where bedingung. wie sonst sollte das gehen?
zweitens: sag uns doch bitte was du genau machen willst, denn es gibt sicher eine lösung, bei der du nicht x mal ein update ausführen musst.
|
03.11.2005, 02:54:00
|
Anfänger
|
|
Registriert seit: Jul 2005
Ort: Hannover
Alter: 44
Beiträge: 55
|
|
AW: HILFE!!! Hab da nen Denkfehler!
also, ich habe wie gesagt eine datei in die db geladen, in der das datum wie folgt aussieht tt.mm.jjjj.....
ich benötige das datum allerdings in diesem format ---> jjjjmmtt
deswegen dachte ich, dass ich mit der funktion datum_wie_ich_will das datum aus der db so formatiere, wie ich es benötige um es dann im nächsten schritt via update in die db zu schreiben.
|
03.11.2005, 09:38:06
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: HILFE!!! Hab da nen Denkfehler!
Dann wäre es einfacher, wenn du einfach mit den MySQL-Funktionen CONCAT() und SUBSTRING() die Umformung direkt in der UPDATE-Query vornimmst:
Code:
UPDATE
tabelle
SET
bdate = CONCAT(SUBSTRING(bdate FROM 7 FOR 4), SUBSTRING(bdate FROM 4 FOR 2), SUBSTRING(bdate FROM 1 FOR 2))
Aber: Warum nimmst du für das Datumsformat nicht DATE?
|
03.11.2005, 10:34:42
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: HILFE!!! Hab da nen Denkfehler!
Zitat:
Zitat von xabbuh
Dann wäre es einfacher, wenn du einfach mit den MySQL-Funktionen CONCAT() und SUBSTRING() die Umformung direkt in der UPDATE-Query vornimmst:
Code:
UPDATE
tabelle
SET
bdate = CONCAT(SUBSTRING(bdate FROM 7 FOR 4), SUBSTRING(bdate FROM 4 FOR 2), SUBSTRING(bdate FROM 1 FOR 2))
Aber: Warum nimmst du für das Datumsformat nicht DATE?
|
genau daran hatte ich gestern auch gedacht :-)
|
03.11.2005, 15:55:03
|
Anfänger
|
|
Registriert seit: Jul 2005
Ort: Hannover
Alter: 44
Beiträge: 55
|
|
AW: HILFE!!! Hab da nen Denkfehler!
hallo ihr beiden,
das mit der formatierung in der mysql_query hat wunderbar geklappt....mir war es gar nicht so bewusst, dass man ja auch ne menge schon in der query erledigen kann und sich somit an der ein oder anderen stelle ne menge (schreib)arbeit wegfällt! vielen dank für den tipp....werde zukünftig erstmal schauen, was mysql schon erledigen kann.....
gruß knisterkarl
EDIT: ich habe auf der seite verschiedene formular, bei denen das datum eingegeben werden kann und ich habe dann aus drei optionsfeldern (jjjjmmtt) einen string zusammengefügt und diesen dann in die db geschrieben und arbeite dann damit weiter....deshalb habe ich mich gegen date entschieden... es reicht für meine zwecke völlig aus....
Geändert von Knisterkarl (03.11.2005 um 15:58:36 Uhr)
|
03.11.2005, 20:57:23
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: HILFE!!! Hab da nen Denkfehler!
Sinnvoller wäre es schon, DATE als Spaltentyp zu verwenden. So kannst du ohne Probleme Datumsberechnungen und -vergleiche mit den entsprechenden MySQL-Funktionen vornehmen. Beim Einfügen kannst du die Zeichenkette YYYYMMDD mit STR_TO_DATE() ganz einfach umwandeln:
PHP-Code:
<?php
$sql = sprintf("INSERT INTO
tabelle
SET
bdate = STR_TO_DATE('%s', GET_FORMAT(DATE, 'INTERNAL'))");
?>
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:51:09 Uhr.
|