webINspirit
23-07-2003, 17:17
Hallo,
ich suche eine möglichkeit mehrer Datensätze über ein Php Formular in einer Mysql datenbank zu ändern.
Es sit ein Belegungskalender.
Ich lese alle Datensätze aus in denen der Monat z.B. Januar vorkommt.
Jetzt würde ich gerne auf einmal den 3-6 Januar als belegt eintragen.
Kann mir da jemand weiterhelfen oder weiß jemand wo ich hilfe bekommen kann??
eine möglichkeit wäre du rechnest die differenz der tage aus,
legst dein insert oder update in ne schleife und beginnst ab dem startag bis zum ende deiner differenz.
klar?
webINspirit
23-07-2003, 18:00
Leider noch net so ganz, beschäftige mich noch nicht so lange mit php und mysql. Hast du vielleicht irgendein Beispiel mit dem ich experimentiern könnte??
andik2000
23-07-2003, 18:53
Ich würde jeden belegten Tag in der DB abspeichern. Im extremfall hast Du dann 365 Einträge pro Jahr, was ja nicht unbedingt viel für 'ne Datenbank ist.
Mache drei Felder: Tag Monat Jahr.
Wenn sich jetzt jemand für den 3. bis 7. einträgt duchrläuft dein Script eine Schleife und erzeugt für jeden Tag einen DB-Eintrag. Problematisch wirds nur über Monats- und Jahreswechsel, da muß man ein bisschen tüfteln.
Grüße, Andi
Original geschrieben von webINspirit
Leider noch net so ganz, beschäftige mich noch nicht so lange mit php und mysql. Hast du vielleicht irgendein Beispiel mit dem ich experimentiern könnte??
mach ne tabelle:
- tag
- monat
- jahr
- belegung
dann hast du (wie schon gesagt) max. 365 datensätze pro jahr.
mach mal so:
// $string wird per formular übergeben//
$beginn_tag=$string;
$ende_tag=$string1;
// Schleife bis differenz abgelaufen //
while($beginn_tag <= $ende_tag)
{
$result = mysql_query("INSERT INTO tag (tag,name,jahr,belegung)
VALUES ('$beginn_tag','$string_monat','$string_jahr','$string_belegung')");
$beginn_tag=$beginn_tag+1;
}
Das müsste gehen ...
webINspirit
23-07-2003, 21:44
Meine Datenbank hat 365 Einträge.
Jeder Tag der frei ist steht die farbe grün in der spalte belegt.
Jeder Tag der reserviert ist steht die farbe gelb in der spalte belegt.
Jeder Tag der belegt ist steht die farbe rot in der spalte belegt.
Ich habe diese variante gewählt was es einfach aber dennoch gut aussieht wenn man sich den Kalender anschaut.
Das script ist sehr, sehr umständlich war aber bis jetzt die einzigste lösung die geklappt hat die datenbank zu aktualisieren.
<html>
<head>
<title>Anzeige Kalender</title>
<link rel=stylesheet href=../formular.css>
</head>
<body>
<?PHP
include("../connect.php");
if($send==1) // Ist 1 wenn Formular abgeschickt wurde
{
$sql="UPDATE $dbtab SET belegt='$test' WHERE id='$id';";
mysql_query($sql,$link);
echo"<meta http-equiv=refresh content=0;URL=$PHP_SELF?auswahl=$monat>";
}
$db = @mysql_connect($host,$dbuser,$pass)
or
die($dbfehler);
@mysql_select_db($dbase, $db)
or
die($dbfehler2);
{
$idatum=
array("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");
echo "<b>$auswahl</b><br><br>";
for ($i=0;$i<31;$i++)
{
$daten = mysql_query("SELECT id,belegt,tag FROM $dbtab WHERE monat='$auswahl'
AND tag='" . $idatum[$i] . "'");
while(list($id,$belegt,$tag,$monat)=mysql_fetch_row($daten))
{
if ($belegt == '#00DF00')
{
echo "<form action='$PHP_SELF' method=post>
<input type=hidden name=send value=1>
$tag
<select class=Bereich1 name=test>
<option value=$belegt>frei</option>
<option value=#00DF00>frei</option>
<option value=#FFFF00>reserviert</option>
<option value=#FF0000>belegt</option>
</select>
<input type=hidden name=id value=$id>
<input type=hidden name=monat value=$auswahl>
<input type=Submit value=Ändern>
</form>";
}
if ($belegt == '#FFFF00')
{
echo "<form action='$PHP_SELF' method=post>
<input type=hidden name=send value=1>
$tag
<select class=Bereich1 name=test>
<option value=$belegt>reserviert</option>
<option value=#00DF00>frei</option>
<option value=#FFFF00>reserviert</option>
<option value=#FF0000>belegt</option>
</select>
<input type=hidden name=id value=$id>
<input type=hidden name=monat value=$auswahl>
<input type=Submit value=Ändern>
</form>";
}
if ($belegt == '#FF0000')
{
echo "<form action='$PHP_SELF' method=post>
<input type=hidden name=send value=1>
$tag
<select class=Bereich1 name=test>
<option value=$belegt>belegt</option>
<option value=#00DF00>frei</option>
<option value=#FFFF00>reserviert</option>
<option value=#FF0000>belegt</option>
</select>
<input type=hidden name=id value=$id>
<input type=hidden name=monat value=$auswahl>
<input type=Submit value=Ändern>
</form>";
}
if ($belegt == '')
echo "<br>";
}
}
}
?>
Danke schon mal für all eure Tips!!!