Schleife in PHP
Max
- php
Hallo ich bin in das tolle Forum gelanden vielleicht kann mir jemand bei meinem Problem helfen?
Ich habe ein Schleife oder Abfrage gebaut für Serientermine nur es funktioniert noch nicht richtig
In der Variable $txt_serientermin steht in diesem Beispiel der Wert 2004-01-24
Es darf in die Datenbank nur ein Termin hinzugefügt werden der auch am selben Tag ist, vorausgesetzt die Überschrift ist noch nicht verhanden.
Also das heißt es können mehrere Einträge an einem Tag satt finden, sie müssen jedoch jeweils eine andere Überschrift haben, Falls es an dem selben Tag schon einen Eintrag mit der gleichen Überschrift gibt darf es keinen doppelten Eintrag geben.
Laut meinen Script wird ein Doppelter Eintrag beim erneuten Aufruf des Script erzeugt. Ich habe schon alles ausprobiert aber ich kann keinen Fehler finden? Wenn das Script erneut aufgerufen wird soll er sofort aus der Schleife springen wenn an dem dem Tag mit der selben Überschrift schon ein Termin besteht um doppelte Einträge zu verhindern
Vielleicht sieht jemand von euch den Fehler?
Danke Max!
$result = mysql_query("SELECT * FROM termine ");
while($row = mysql_fetch_array($result))
{
IF($row[DATUM_VON] == $txt_serientermin AND $row[DATUM_BIS] == $txt_serientermin)
{
break;
}
IF($row[UEBERSCHRIFT] == $txt_ueberschrift)
{
IF($row[DATUM_VON] != $txt_serientermin)
{
$db_tabelle = "termine";
mysql_query("INSERT INTO $db_tabelle VALUES ('','$txt_serientermin','$txt_serientermin','$txt_ueberschrift','$txt_bemerkungen','$chk_topevent','$chk_anmeldung','$chk_verein')");
continue;
}
else
{
break;
}
}
}
}
// }
Sorry die eine Klammer am Ende ist mir dazwischen gerutscht! Aber das war nicht das Problem!!
Hello Max,
zu Deinem Script will ich mich hier nicht weiter äußern, denn ich denke, dass Du den falschen Lösungsansatz hast. Es ist doch Unsinn, mit einer leistungsfähigen Datenbank zu arbeiten, wenn man dann doch per PHP sucht.
Beschäftige dich etwas mit MySQL oder überhaupt SQL und versuche dann ein passendes SQL-Statement für das Auffinden von Daten zu erstellen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello Max,
zu Deinem Script will ich mich hier nicht weiter äußern, denn ich denke, dass Du den falschen Lösungsansatz hast. Es ist doch Unsinn, mit einer leistungsfähigen Datenbank zu arbeiten, wenn man dann doch per PHP sucht.
Beschäftige dich etwas mit MySQL oder überhaupt SQL und versuche dann ein passendes SQL-Statement für das Auffinden von Daten zu erstellen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
wieso was hat das mit MySQL zutun?
Die echo "<br>".$row[UEBERSCHRIFT]; ist nur eine Testausgabe.
Ich möchte gerne was in die Datenbank schreiben vorausgesetzt das Datum ist gestzt und hat ein anderes Datum und die gleiche Überschrift auf dem selben Datum darf nicht 2 mal vorkommen.
Mit SQL hätte ich genau die selben Verschachtelungen dann kann ich es doch auch gleich mit php machen?
Oder welche Vorteile soll mir MySQL geben?
Wie gesagt ich will nichts auslesen ich will nur was reinschreiben wenn meine Bedingung zutrifft. Alles andere sind Testausgaben.
Gruß Max
hi,
wieso was hat das mit MySQL zutun?
noch nicht allzu viel.
du solltest aber dafür sorgen, _dass_ er mehr damit zu tun bekommt, weil es einfacher ist.
die DB kann einiges von der arbeit, die du jetzt mit php machst, schon für dich übernehmen.
Ich möchte gerne was in die Datenbank schreiben vorausgesetzt das Datum ist gestzt und hat ein anderes Datum und die gleiche Überschrift auf dem selben Datum darf nicht 2 mal vorkommen.
Mit SQL hätte ich genau die selben Verschachtelungen dann kann ich es doch auch gleich mit php machen?
Oder welche Vorteile soll mir MySQL geben?
methode 1:
du definierst in deiner tabelle die kombination der felder datum und überschrift als unique, jede kombination aus datum und überschrift darf also nur genau einmal vorkommen.
dann versuchst du einfach, mit INSERT deinen datensatz einzufügen. wenn diese kombination von datum und überschrift schon vorhanden ist, dann gibt dir mysql einen fehler aus; diesen kannst du auswerten, und so erkennen, dass datum und überschrift schon vorhanden waren.
methode 2:
du machst zuerst eine SELECT-abfrage auf die datenbank, mit der du den/die datensätze ausliest, bei denen datum = dein_neues_datum und überschrift = deine_neue_überschrift ist. (sinnvollerweise noch mit LIMIT 1 kombiniert.)
anschliessend schaust du mit mysql_num_rows() nach, wie viele datensätze in der ergebnismenge dieser abfrage gelandet sind - sind es 0, ist die kombi datum/überschrift noch nicht vorhanden,und du kannst sie anschliessend einfügen.
gruss,
wahsaga
Hello Max,
zu Deinem Script will ich mich hier nicht weiter äußern, denn ich denke, dass Du den falschen Lösungsansatz hast. Es ist doch Unsinn, mit einer leistungsfähigen Datenbank zu arbeiten, wenn man dann doch per PHP sucht.
Beschäftige dich etwas mit MySQL oder überhaupt SQL und versuche dann ein passendes SQL-Statement für das Auffinden von Daten zu erstellen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
wieso was hat das mit MySQL zutun?
Die echo "<br>".$row[UEBERSCHRIFT]; ist nur eine Testausgabe.
Ich möchte gerne was in die Datenbank schreiben vorausgesetzt das Datum ist gestzt und hat ein anderes Datum und die gleiche Überschrift auf dem selben Datum darf nicht 2 mal vorkommen.
Mit SQL hätte ich genau die selben Verschachtelungen dann kann ich es doch auch gleich mit php machen?
Oder welche Vorteile soll mir MySQL geben?
Wie gesagt ich will nichts auslesen ich will nur was reinschreiben wenn meine Bedingung zutrifft. Alles andere sind Testausgaben.
Gruß Max
Hallo Tom,
ich habe es nun mit MySQL versucht aber es funktioniert auch nicht!
$db_tabelle = "termine";
mysql_query("INSERT INTO $db_tabelle
(ID,DATUM_VON,DATUM_BIS,UEBERSCHRIFT,BEMERKUNGEN,TOPEVENT,ANMELDUNG,VEREIN)
VALUES ('','$txt_serientermin','$txt_serientermin','$txt_ueberschrift','$txt_bemerkungen','$chk_topevent','$chk_anmeldung','$chk_verein')
WHERE DATUM_VON != $txt_serientermin
AND DATUM_BIS != $txt_serientermin
AND UEBERSCHRIFT = $txt_ueberschrift
OR
DATUM_VON = $txt_serientermin
AND DATUM_BIS = $txt_serientermin
AND UEBERSCHRIFT != $txt_ueberschrift
");
Also eigntlich geht das so auch nicht aber ich muß die beiden Bedingungen abfangen da sie bei mir so eintretten
Beispiel1:
In ID steht 1
In DATUM_VON steht 22-01-04
In DATUM_BIS steht 22-01-04
UBERSCHRIFT steht Hallo Welt
Wenn DATUM_VON != 24-01-04
UND DATUM_BIS != 24-01-04
UND UBERSCHRIFT = Hallo Welt
Dann soll er den INSERT ausführen
-------------------------------------------
Beispiel2:
In ID steht 2
In DATUM_VON steht 24-01-04
In DATUM_BIS steht 24-01-04
In UBERSCHRIFT steht Hallo zweite Welt
Wenn DATUM_VON = 24-01-04 ist
UND DATUM_BIS = 24-01-04 ist
UND UBERSCHRIFT != Hallo zweite Welt
Dann soll er den INSERT ausführen
Die Frage ist wie soll ich die zwei Bedingungen abfangen? Soll ich das wirklich lieber mit MySQL machen aber das funktioniert bei mir in MySQL erst gar nicht
Ich bitte um etwas hilfe da ich mich nur noch auf der Achse drehe...
Gruß Tom
hi Max,
[pref:t=68383&m=392351] gilt auch für dich.
bitte versuche, dich daran zu halten.
gruss,
wahsaga