Toggle - menüpunkte einzeln aus- und wieder einklappen
TippSpielGott
- javascript
0 wahsaga
Also, folgendes ist mein Problem:
Ich möchte einen Terminplan erstellen, bei dem nähere Informationen zu den Terminen per Mausklick ausgeklappt werden sollen - bei Interesse. Funktioniert einzeln gesehen auch so ganz gut, nur nicht, wenn es mehrere Termine sind. Die Termine werden in einer Mysql-Datenbank gesammelt und mit PHP ausgelesen. Jedem Termin ist eine ID zugewiesen. Wie ist es nun möglich, dass auch jeder zu "toggelnden" Tabelle die zugehörige ID zugewiesen wird - oder wo liegt der Fehler? Hier der Quelltext:
<script type="text/javascript">
function toggle( targetId ){
if (document.getElementById){
target = document.getElementById( targetId );
if (target.style.display == "none"){
target.style.display = "";
} else {
target.style.display = "none";
}
}
}
</script>
<?
include "dbconnect.php";
$abfrage = "SELECT id,beginn,ende,zeit,event,information,importance FROM termine ORDER BY beginn";
$termine = mysql_query($abfrage);
list($id,$beginn,$ende,$zeit,$event,$information,$importance) = mysql_fetch_row($termine);
$beginn = explode("-", $beginn);
$ende = explode("-", $ende);
$zeit = explode(":", $zeit);
if ($information=="") ($information="Keine weiteren Informationen hinterlegt.");
if ($ende[2]!="00") ($ende="- $ende[2].$ende[1]."); ELSE ($ende="");
echo "<table width='100%'><tr><td width='40'>$beginn[2].$beginn[1].</td><td width='50'>$ende</td><td>$event</td><td align='right'>"; ?>
<script> var toggleId = "<?php echo $id; ?>"; </script>
<div onclick="toggle(toggleId);return false;">+</div></td></tr></table>
<? echo "<table id='$id' style='display: none;'><tr><td width='80'>$zeit[0]:$zeit[1] Uhr</td><td width='10'></td><td>$information</td></tr></table>";
while (list($id,$beginn,$ende,$zeit,$event,$information,$importance) = mysql_fetch_row($termine)) {
$beginn = explode("-", $beginn);
$ende = explode("-", $ende);
$zeit = explode(":", $zeit);
if ($information=="") ($information="Keine weiteren Informationen hinterlegt.");
if ($ende[2]!="00") ($ende="- $ende[2].$ende[1]."); ELSE ($ende="");
echo "<table width='100%'><tr><td width='40'>$beginn[2].$beginn[1].</td><td width='50'>$ende</td><td>$event</td><td align='right'>"; ?>
<script> var toggleId = "<?php echo $id; ?>"; </script>
<div onclick="toggle(toggleId);return false;">+</div></td></tr></table>
<? echo "<table id='$id' style='display: none;'><tr><td width='80'>$zeit[0]:$zeit[1] Uhr</td><td width='10'></td><td>$information</td></tr></table>"; }
?>
hi,
Wie ist es nun möglich, dass auch jeder zu "toggelnden" Tabelle die zugehörige ID zugewiesen wird - oder wo liegt der Fehler?
was willst du denn jetzt eigentlich wissen?
wie es möglich ist? na ja, ausgabe per echo o.ä. eben ...
wo der fehler ist? _welcher_ fehler?
$abfrage = "SELECT id,beginn,ende,zeit,event,information,importance FROM termine ORDER BY beginn";
diese id ist doch sicherlich nummerisch? dann kannst du sie natürlich nicht als id in html verwenden, weil ids dort nicht mit einer ziffer beginnen dürfen.
<script> var toggleId = "<?php echo $id; ?>"; </script>
was soll das bewirken? wenn du diese zeile mehrfach ausgibst, überschreibst du den wert ja immer wieder.
wirf sie raus, du brauchst sie nicht.
<div onclick="toggle(toggleId);return false;">+</div></td></tr></table>
<? echo "<table id='$id' style='display: none;'><tr><td
so, hier hast du zwei stellen, wo die id einzusetzen wäre.
machen wir erst mal eine in html gültige id aus deiner (vermutlich nummerischen), in dem wir ein präfix davorsetzen:
$toggle_id = "toggle".$id;
und dann setzen wir die noch ein:
echo '<div onclick="toggle(''.$toogle_id.'');return false;"> ...';
echo '<table id="'.$toggle_id.'" style="display:none;"><tr><td ...';
dabei achtest du natürlich darauf, dass die id im aufruf der toggle()-funktion auch in anführungszeichen steht, denn es soll ja ein string übergeben werden.
gruß,
wahsaga