Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Wochentage richtig ausgeben

Hallo, ich brauche eure Hilfe

ich hab folgendes Problem:
aus der Datenbank wird ausgelesen ob MO, DI, ... 0 oder 1 ist. In einem Datensatz kann es aber auch vorkommen dass ich Montag, Dienstag und Sonntag mit 1 eingetragen habe.

Mein Ergebnis soll so ausschaun:

Anreise: jeden Montag, Dienstag und Mittwoch (mein Problem liegt beim Beisprich oder dem "und")


ich hab zur Zeit folgenden Code:

if ($aZeile2["montag"] == "1")
$anreise.= "Montag";

if ($aZeile2["dienstag"] == "1")
$anreise.= "Dienstag";

if ($aZeile2["mittwoch"] == "1")
$anreise.= "Mittwoch";

if ($aZeile2["donnerstag"] == "1")
$anreise.= "Donnerstag";

if ($aZeile2["freitag"] == "1")
$anreise.= "Freitag";

if ($aZeile2["samstag"] == "1")
$anreise.= "Samstag";

if ($aZeile2["sonntag"] == "1")
$anreise.= "Sonntag";

if ($aZeile2["jeden"] == "1")
$anreise.= "täglich";

mein $anreise sieht folglich teilweise so aus MontagDienstagMittwoch

Wie kann ich das jetzt "exploden" damit ich das mim Beistrich so hinkrieg, dass der letzte nimma da ist.
Kann mir da jemand helfen?

Vielen Dank
Moni

Hier gehts zum Orginal Eintrag "Wochentage richtig ausgeben" im Forum

Antworten

eine möglichkeit wäre z.b. die gefundenen tage nicht direkt in den string $anreise, sondern in ein array zu schreiben...

Code:                   In Zwischenablage kopieren (nur IE)
1">

nachdem alle möglichen tage geprüft wurden, kann man mit

Code:                   In Zwischenablage kopieren (nur IE)
2">

wenn jetzt unbedingt das letzte komma (also vor dem letzten tag) noch gegen "und" getauscht werden soll, dann musst du mal bei den string-funktionen von php schauen (http://de3.php.net/manual/de/ref.strings.php)

ps : was zum henker ist ein "beistrich"...ich denk mal das , oder? :D


2.

Wegen des "und" vor dem letzte Eintrag ist der implode() zu früh - besser ist:

Code:                   In Zwischenablage kopieren (nur IE)
3">




3.

Hallo,

Danke für eure Hilfe...

leider funktioniert noch irgendwas nicht...
ich hab 2 verschachtelte while schleifen und beim durchlaufen der zweiten stimmt was nicht....
ich bekommen beim ersten durchlaufen das richtige ergebnis, beim zweiten mal wird allerdings das erste ergebnis mitgenommen, obwohl in der datenbank nix davon steht.

zb.
1. Durchlaufen: Ergebnis Jeden Samstag
2. Durchlaufen: Ergebnis: Jeden Samstag und Sonntag (obwohl nur jeden Sonntag dastehn sollte)

In der Datenbank ist alles richtig. Es muss entweder am Array liegen oder an der Schleife, aber ich komm nicht drauf....

Hier der Quellcode:


<?php
$sql= "SELECT * FROM variante WHERE $id=tour_fid ORDER BY variante_id";
$rs = getrs($sql);


while ($aZeile = mysql_fetch_array($rs))
{
echo "<br>
<table width='490' border='0' style='border: #ffffcc solid 3px;'>";?>
<tr><td width=100>Kategorie: </td>
<td><?= $aZeile["kategorie"] ?></td>
<td><div align="right">
<?php echo "<a href=tour_termine_neu.php?variante=".$aZeile["variante_id"]."&tour=".$id.">Neuer Termin</a></div>";
$variante = $aZeile["variante_id"]; ?>
</td>
</tr>

<tr>
<td valign="top">Termine:</td>
<td colspan="2">
<table border=1 width="360">
<?php
//Termine
$sql= "SELECT *, date_format(von,'%d-%m-%Y') AS von, date_format(bis,'%d-%m-%Y') AS bis FROM termine WHERE $variante = variante_fid ORDER BY von";
$rs2 = getrs($sql);
while ($aZeile2=mysql_fetch_array($rs2))
{
echo "<tr><td width=50%>";
echo $aZeile2["von"]." - ".$aZeile2["bis"];
?>
</td>

<td align="right"></td></tr>

<tr>
<td>
<?php
if ($aZeile2["montag"] == "0" && $aZeile2["dienstag"] =="0" && $aZeile2["mittwoch"] == "0" && $aZeile2
["donnerstag"] == "0" && $aZeile2["freitag"] == "0" && $aZeile2["samstag"] == "0" && $aZeile2["sonntag"] == "0"
&& $aZeile2["jeden"] == "0")
echo "";

else {
echo "Jeden ";

if ($aZeile2["montag"] == "1")
$anreisetag[] = "Montag";

if ($aZeile2["dienstag"] == "1")
$anreisetag[] = "Dienstag";

if ($aZeile2["mittwoch"] == "1")
$anreisetag[] = "Mittwoch";

if ($aZeile2["donnerstag"] == "1")
$anreisetag[] = "Donnerstag";

if ($aZeile2["freitag"] == "1")
$anreisetag[] = "Freitag";

if ($aZeile2["samstag"] == "1")
$anreisetag[] = "Samstag";

if ($aZeile2["sonntag"] == "1")
$anreisetag[] = "Sonntag";

if ($aZeile2["jeden"] == "1")
$anreisetag[] = "Tag";


if (count($anreisetag) > 1)
{
$last = array_pop($anreisetag);
$anreise = implode(', ', $anreisetag).' und '.$last;
}
else
$anreise = $anreisetag[0];

}

echo $anreise;
?>
</td>

<td align="right">
<?php if ($aZeile2["infos"]!="") echo $aZeile2["infos"]; else echo ""; ?>
</td>
</tr>

<?php } ?>

</table>

</td>
</tr>
</table>

<?php } ?>

was mach ich da falsch?


4.

1. bitte die formatierungsmöglichkeiten des forums benutzen (es macht wenig spass sich den code so durchzulesen)
2. das temporäre array $anreisetag ist im zweiten durchlauf noch gefüllt vom ersten durchlauf. du musst es als vor der verwendung in der zweiten while-schleife zunächst initialisieren:
Code:                   In Zwischenablage kopieren (nur IE)
4">




Hier gehts zum Orginal Eintrag "Wochentage richtig ausgeben" im Forum
 
phpforum.de | Impressum