Problem mit Ausgabe von Mysql Daten es wird nur ein Eintrag angezeigt

Wambo

Mitglied
Folgendes Problem:
Ich habe einen Terminkalender programmiert. Es klappt alles soweit super, bis auf eine Sache: Wenn man bei einem Datum 2 Termine einträgt wird nur einer angezeigt. Wenn man die "ORDER"-Reihenfolge in der SQL-SELECT Anweisung umdreht kommt der andere Eintrag. Aber es wird dann wieder nur der eine Angezeigt.
Ziel:
Ich möchte das ich soviele Termine in ein Datum eintragen kann wie ich will.
Ich hoffe dass ihr mir helfen könnt.
Und ich bedanke mich für eure hilfe



PHP:
<?php
include("mysql.php");


if(!isset($_GET['year']) or $_GET['year']>="2038" or $_GET['year']<="1901") # das mindeste datum = 1902
{
$_GET['year']=date("Y",time());
}

if(!isset($_GET['month']) or $_GET['month']>"12" or $_GET['month']<"1")
{
$_GET['month']=date("m",time());
}


if($_GET['month'] > 12){
$_GET['year'] = $_GET['year'] + 1;
$_GET['month'] = 1;
}
if($_GET['month'] < 1){
$_GET['year'] = $_GET['year'] - 1;
$_GET['month'] = 12;
}
$_GET['day'] = htmlentities($_GET['day']);
$_GET['month'] = htmlentities($_GET['month']);
$_GET['year'] = htmlentities($_GET['year']);

switch($_GET['month']){
case 1 : $month ="Januar";
break;
case 2 : $month ="Februar";
break;
case 3 : $month ="M&auml;rz";
break;
case 4 : $month ="April";
break;
case 5 : $month ="Mai";
break;
case 6 : $month ="Juni";
break;
case 7 : $month ="Juli";
break;
case 8 : $month ="August";
break;
case 9 : $month ="Semptember";
break;
case 10 : $month ="Oktober";
break;
case 11 : $month ="November";
break;
case 12 : $month ="Dezember";
break;
}



$i=1;

echo "<table border='1' width='800' align='center'>";
$nach =  $_GET['month'] + 1 ;
$vor = $_GET['month'] - 1 ;
#############obere leiste vorheriges datum, überschrift, nächstes datum
echo "<tr><th width='25'>
<a href='".$_SERVER['PHP_SELF']."?month=". $vor  ."&year=". $_GET['year'] ."'>
&lt;&lt;</a></th><th colspan='2'><h2>".$month." ".$_GET['year']."</h2>
<a  href= \" ".$_SERVER['PHP_SELF']."#".date('d')." \">
heute</a></th><th width='25'>
<a href='".$_SERVER['PHP_SELF']."?month=". $nach  ."&year=". $_GET['year'] ."'>&gt;&gt;</a></th></tr>";



while(checkdate($_GET['month'],$i,$_GET['year'])==TRUE)
{
#deutsche Wochentage
$tstamp = mktime(0,0,0,$_GET['month'],$i,$_GET['year']);
$datum = date("w",$tstamp);
switch($datum){
case 0 : $tag = "Sonntag";
break;
case 1 : $tag = "Montag";
break;
case 2 : $tag = "Dienstag";
break;
case 3 : $tag = "Mittwoch";
break;
case 4 : $tag = "Donnerstag";
break;
case 5 : $tag = "Freitag";
break;
case 6 : $tag = "Samstag";
break;
}
$heute = date("d",time()).".".date("m",time()).".".date("Y",time());
$datum1 = $i.".".$_GET['month'].".".$_GET['year'];

$sql = 
"SELECT * FROM `termin` 
	WHERE 
		`Datum` = '".mysql_real_escape_string($datum1)."' ORDER BY `Uhrzeit` ASC";
$result = mysql_query($sql, $connect) or die(mysql_error());
$row = mysql_fetch_assoc($result);


###########################################################################################
if($datum1==$heute)
{


 echo "<tr style='background-color:#adff2f; '>";

 echo "<td  align='center' ><div align='left'><a href=\"javascript: show('".$i."');\" name='".$i."'   > ".$i."</a></div>(".$tag.")</td>";


 

}
else{
 if($tag=="Sonntag"){
 echo "<tr style='background-color:#f5f5f5; '>";

 echo "<td  align='center' ><div align='left'><a href=\"javascript: show('".$i."');\" name='".$i."'   > ".$i."</a></div>(".$tag.")</td>";


 }
 else
 {
 echo "<tr>";

  echo "<td  align='center'>";
  echo "<div align='left'><a href=\"javascript: show('".$i."');\" name='".$i."'   > ".$i."</a></div>(".$tag.")</td>"
  ;}
}


#############################################################################################

if(isset($row['Termin'])){
$termin = $row['Uhrzeit']." Uhr  :".$row['Termin']. "<form method='post' name='form".$i."'><input name='terminid' type='checkbox' value='".$i."' onchange='document.form".$i.".submit(); top.location.href=\"".$_SERVER['PHP_SELF']."\"; ' />L&ouml;schen</form><br>";
#####hier onchange wenn man das kästchen ändert wird eintrag gelöscht
}
else {
$termin = "";
}
echo "</td>
<td colspan='3' >".$termin;

#Div container indem das eintragen feld ist

echo "<div style='display:none;' id='".$i."'><br>";
echo "<form method='post' name='form".$i."' id='form".$i."'>";
echo "Termin:<br>
<input name='termin' type='text' width='50' /><br>";
echo" <input name='stunde' type='text' maxlength='2' size='3'  /> : ";
echo "<input name='minute' type='text' maxlength='2' width='2' size='3' /> Uhr<br>";
echo "<input name='submit' type='submit' value='Eintragen' onclick=\'top.location.href='".$_SERVER['PHP_SELF']."'\;'/>";
echo "<input type='hidden' id='hide' name='hide' value='".$i."'>";
echo "</form></div>
</td>
</tr>";
$i++;
}
$datum = $_POST['hide'].".".$_GET['month'].".".$_GET['year'];

$uhrzeit = $_POST['stunde'].":".$_POST['minute'];


#wenn eingetragen wird(der Button geklickt wird)
if($_POST['submit']){
$input = "INSERT INTO 
`termin`(`Datum`, `Termin`, `Uhrzeit`) 
VALUES(
'".$datum."',
'".$_POST['termin']."',
'".$uhrzeit."')";
mysql_query($input,$connect)or die(mysql_error());
echo "<script language='javascript'>";
echo " top.location.href=\"".$_SERVER['PHP_SELF']."\"; ";
echo "</script>";
}

# Löschen wenn Kontrollkasten aktiviert ist

if($_POST['terminid']){
$datum_del = $_POST['terminid'].".".$_GET['month'].".".$_GET['year'];
$del = "DELETE FROM `termin` WHERE `Datum` = '".mysql_real_escape_string($datum_del)."'";
mysql_query($del,$connect) or die(mysql_error());
}
 
Zuletzt bearbeitet:
Hi
Also ich habe mir deinen Code jetzt leider nicht durchgelesen, aber hast du es schon mit einer Schleife versucht? while... dann sollte es funktionieren.
lg Alex
 
Hi
Also ich habe mir deinen Code jetzt leider nicht durchgelesen, aber hast du es schon mit einer Schleife versucht? while... dann sollte es funktionieren.
lg Alex

Ja habe ich schon probiert...das Problem ist dann dass ein Termin dann an jedem Tag des Monats angezeigt wird. Und er soll ja logischerweise nur an dem für ihn bestimmten Tag angezeigt werden
 
Hi
Also ich verstehe leider immer noch nicht, woran das Problem liegt... Du hast in der DB sicher den Termin gespeichert, dann fragst du in ner while Schleife einfach alle Termine ab, die für das heutige Datum anstehen.
lg
 
Hi,

der Fehler, wie von Alex richtig festgestellt, liegt in diesen Zeilen:

PHP:
$sql = 
"SELECT * FROM `termin` 
    WHERE 
        `Datum` = '".mysql_real_escape_string($datum1)."' ORDER BY `Uhrzeit` ASC";
$result = mysql_query($sql, $connect) or die(mysql_error());
$row = mysql_fetch_assoc($result);

Das klappt wunderbar wenn du einen Beitrag hast. ABER sobald es mehr werden kann es nicht Funktionieren. Weil $row nur einmal Eingelesen wird (der 1. Termin) aber das Script kommt kein zweites mal bei der Befehl $row = mysql_fetch_assoc($result); vorbei so kann der zweite garnicht Ausgegeben werden.

Das ganze muss ungefähr so aussehen:
PHP:
$sql = 
"SELECT * FROM `termin` 
    WHERE 
        `Datum` = '".mysql_real_escape_string($datum1)."' ORDER BY `Uhrzeit` ASC";
$result = mysql_query($sql, $connect) or die(mysql_error());
$anzahl = mysql_num_rows($result);

for($i=1;$i<=$anzahl;$i++) {
   $row = mysql_fetch_assoc($result);
   // Geb den Termin aus!
}

Und welch Wunder es weden 2 Termine angezeigt.

Gruß
Timo
 
Hallo
Ich habe die Schleife jetzt eingebaut. Es klappt jetzt auch... Danke erstmal.
Doch jetzt hat sich ein neues Problem ergeben:
PHP:
$anzahl = mysql_num_rows($result);

for($s=1;$s<=$anzahl;$s++) {#$s weil $i schon gebraucht ist
   $row = mysql_fetch_assoc($result);

if(isset($row['Termin'])){				
$termin = 
$row['Uhrzeit']." Uhr  :".$row['Termin']. "<form method='post' name='form".$i."' id='form".$i."'><input name='terminid' type='checkbox' value='".$i."' onchange=\"submit(); top.location.href='".$_SERVER['PHP_SELF']."'; \" />L&ouml;schen</form><br>";

}
else {
$termin = "";
}
echo "</td>";


echo "<td colspan='3' >".$termin;
} #hier das Ende der  For Schleife
Logischerweise wird jetzt immer ein neues "<td>" mit dem Termin drin erstellt. Wie mache ich das jetzt das ich die Ergebnisse alle in ein "<td>" bekomme. Weil wenn ich z.B. 10 Termine an einem Tag hab (ein bisschen übertrieben aber möglich) sieht die Tabelle nicht mehr so aus wie sie soll.
 
Zuletzt bearbeitet:
Die <td>-Tags einfach auserhalb der Schleife schreiben


Mir ist gerade aufgefallen das der sowiso unütz war. Ich habe einfach alles in ein <td> gemacht. Ich frag mich warum ich das nicht gleich so gemacht hab. Aber danke für alles. Ihr seid echt ne tolle Community...Kompliment
 
Zuletzt bearbeitet von einem Moderator:
Zurück