Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich möchte mit PHP alle Monate zu einem Jahr nacheinander auslesen lassen

und so für jedes Jahr alle vorhandenen Monate auszugeben. Anschließend sollen

die Monate wählbar sein und bei Klick auf diesen werden Details angezeigt.

Das sieht derzeit so aus:

$Yearresult = mysql_query("SELECT DISTINCT Year FROM std_einzel WHERE RVID ='$Vertrag'",$db);

while ($Yeardata = mysql_fetch_array($Yearresult)) {

echo "<br>".$Yeardata[Year].": ";

$Monthresult = mysql_query("SELECT DISTINCT Month FROM std_einzel WHERE RVID ='$Vertrag' AND Year ='$Yeardata[Year]'",$db);

$Montdata = mysql_fetch_array($Monthresult);

while ($Monthdata = mysql_fetch_array($Monthresult)) {

echo "<a href=\"".$PHP_SELF."?Year=".$Yeardata[Year]."&Month=".$Monthdata[Month]."\"> ".$Monthdata[Month]." </a>";

};

};

Funktioniert auch fast, die Ausgabe erscheint jedoch so

(den unterlegten Link stelle ich mal in < > da:

11 <stunden.php?Year=2002&Month=11> 12 <stunden.php?Year=2002&Month=12>

2 <stunden.php?Year=2003&Month=2> 3 <stunden.php?Year=2003&Month=3>

Stimmt also, bis auf den ersten Monat, der wird abgeschnitten.

Liegt vermutlich am Array (0...X), oder?

Aber was ist an meiner Funktion denn falsch *seufz*

ThX & Greetz

Slayer8

Geschrieben

Genau, Jahr und Monat stehen beide in der Tabelle.

Dort sind folgende Daten hinterlegt:

Month___Year

_10_____2002

_11_____2002

_12_____2002

_01_____2003

_02_____2003

_03_____2003

Natürlich in mehrfacher Ausfertigung, aber das DISTINCT sorgt ja dafür das je nur eines ausgegeben wird...

Geschrieben

$Montdata = mysql_fetch_array($Monthresult); // erster Monat der fehlt

while ($Monthdata = mysql_fetch_array($Monthresult)) { // die restlichen Monate

}

Gruß Jaraz

Geschrieben

Vielleicht hilft dir ja dieser Code weiter, um die Monate in PHP auszugeben!?

<?php
// legt Monat und Jahr fest, wenn keine Angaben vorhanden sind
if(!$monat) $monat=date("m");
if(!$jahr) $jahr=date("Y");

// Formular zum Auswählen eines bestimmten Monats
echo "<form action='$PHP_SELF' method='post'>";
echo "<b>Monat:</b> <select name='monat' style='font-size:10px; font-family: Tahoma;'>";
for($i=1;$i<13;$i++) {
echo"<option value='$i'";
if($monat==$i) echo " selected";
echo ">$i";
} echo "</select>";

echo "<b>Jahr:</b> <select name='jahr' style='font-size:10px; font-family: Tahoma;'>";
for($i=2000;$i<2038;$i++) {
echo "<option value='$i'";
if($jahr==$i) echo " selected";
echo ">$i";
}
echo "</select><br>";
echo "</td>";
echo "</tr><tr>";
echo "<td><hr size=1 color=blue noshade></td>";
echo "</tr><tr>";
echo "<td>";
$wochentage=array("Mo.","Di.","Mi.","Do.","Fr.","Sa.","So.");
echo "<table><tr>"; for($i=0;$i<7;$i++) echo "<td align='center'><b>".$wochentage[$i]."</b></td>"; echo "</tr>";

/* ausgabe der Tage im Monat */
for($i=1;$i<32;$i++) {
$datum = mktime(0,0,0,$monat,$i,$jahr);

if(mktime(0,0,0,date("m"),date("d"),date("Y"))==$datum) {
$fett="<b>"; $fett_a = "</b>";
} else {unset($fett); unset($fett_a);}
$tag_der_woche = getdate($datum);
$tag_der_woche = $tag_der_woche[wday];

if($tag_der_woche==1 || $i==1) echo "<tr>";

if($i==1 && $tag_der_woche!=1){
$colspan=$tag_der_woche-1;
if($colspan<0) $colspan=6;
echo "<td colspan=$colspan> </td>";
}
if(checkdate($monat,$i,$jahr)) {
echo "<td>".sprintf("%s".date("d",$datum)."%s",$fett,$fett_a)."</td>";
}
if($tag_der_woche==0 || $i==31) echo "</tr>";
}
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</tr></table>";
echo "<input type='submit' value='Monat zeigen'></form>";
echo "</div>";
echo "<div align=right><form><input type=button value='schließen' onClick=self.close()></form></div>";
?>[/php]

Sozusagen als Gimmick gibts sowas hier (im Menü auf "Kalender" klicken).

Geschrieben
Original geschrieben von FMG

Vielleicht hilft dir ja dieser Code weiter, um die Monate in PHP auszugeben!?

Und was hat das mit der Frage zu tun? :rolleyes:

Gruß Jaraz

Geschrieben

Mein Script klappt mittlerweile, es lag an dem von Jaraz genannten "Problem". Mein Fehler *g*

Aber trotzdem Danke....

Eine Frage am Rande, was mach mehr Sinn, zwischen PHP und HTML zu trennen

<?php ?>

<html>

<?php ?>

<html<?php ?>> <html>

<?php ?>

<html>

Oder aber in PHP alle HTML Sachen mit einem Echo auszugeben ?

Geschrieben
Original geschrieben von Jaraz

Und was hat das mit der Frage zu tun? :rolleyes:

Gruß Jaraz

Sorry, ich wollte nurmal ne Möglichkeit einwerfen, um aufzuzeigen, dass es auch ohne SQL-Code geht.

Geschrieben

Klar geht das auch ohne, aber ich brauche MySQL ja, da alle Monate in der Datenbank ausgegeben werden soll.

Bzw. Alle Monate, die in der Datenbank verzeichnet und zu denen nähere Infos hinterlegt sind.

Geschrieben

Es ist genau so wie Jaraz es gesagt hat. Es ist eine Anweisung zu viel im Quelltext.


$Yearresult = mysql_query("SELECT DISTINCT Year FROM std_einzel WHERE RVID ='$Vertrag'",$db);
while ($Yeardata = mysql_fetch_array($Yearresult))
{
echo "<br>".$Yeardata[Year].": ";

$Monthresult = mysql_query("SELECT DISTINCT Month FROM std_einzel WHERE RVID ='$Vertrag' AND Year ='$Yeardata[Year]'",$db);
// $Montdata = mysql_fetch_array($Monthresult); //diese Anweisung ist zuviel
while ($Monthdata = mysql_fetch_array($Monthresult))
{
echo "<a href=\"".$PHP_SELF."?Year=".$Yeardata[Year]."&Month=".$Monthdata[Month]."\"> ".$Monthdata[Month]." </a>";
};
};
[/php]

Frank

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...