Variablen per 'GET' übergeben ??

  • #1
N

noah1

Bekanntes Mitglied
Themenersteller
Dabei seit
16.08.2002
Beiträge
1.415
Reaktionspunkte
0
Ort
Hamburg
Auf einer Seite der HP an der ich gerade arbeite werden Daten aus einet Tabelle ausgegeben, diese sollen aber nur aus einem bestimmten Monat eines bestimmten Jahres sein - per default immer der aktuelle Monat.
Das habe ich auch hinbekommen, indem ich im Menü als Link für die Seite
Code:
<?php 
	$amidatum = date(Y-m-d);
		$dat=split(-,$amidatum);
	$menue = array(
			Home => index.php?go=home,
				...
			Einsätze => index.php?go=einsaetze&einsatzmonat=$dat[1]&einsatzjahr=$dat[0],
				...
				);
				foreach($menue as $eintrag =>$datei){
					if ($datei == basename($_SERVER['PHP_SELF'])) {
						echo <a title=\#\>$eintrag</a>;
						}
			else {
				echo <a href=\$datei\>$eintrag</a>;
				}
				}
				
				?>
und im Code für die Ausgabe der Tabellenzellen
Code:
...WHERE jahr='$einsatzjahr' && monat='$einsatzmonat'...
stehen habe.
Jetzt möchte ich ganz oben auf der Seite, auf der die Tabelle ausgegeben wird eine Auswahl erstellen, in der der Besucher der Seite den Monat und das Jahr selber wählen kann.
Das sollte dann ungefär so aussehen:
Code:
<?php
	if ($_REQUEST['monat_jahr'])
			{
				includeindex.php?go=einsaetze&einsatzmonat=.$_POST['einsatzmonat1'].&einsatzjahr=$dat[0]'];					
			}
	echo<form method=\POST\ name=\monat_jahr\>;
		echo<select name=\einsmonat\>;
			echo<option>$einsatzmonat</option>;
		
					$einsmonat = array (
									Januar => 01,
									Februar => 02,
									 März => 03,
									 ...
									 
					foreach ($einsmonat as $eintrag1 => $einsatzmonat1)
				{
					echo <option>$eintrag1</option>;
				}			
					echo</select>   ;
				
	if ($dat[0] == 2005)
			{
				echo<b>$dat[0]</b>;
				$einsatzjahr = 2005;
			}
				 else if($dat[0] > 2005) 
			{
				echo<select name=\einsjahr\>;
				for($jahr=2005; $jahr <= $dat[0]; $jahr++)
			{
				echo<option>$jahr</option>;
			}
				echo</select>;
			}
	echo  ;
	echo<input type=\submit\ value=\Auswählen\>;
	echo</form></div>;
?>
Soweit funktioniert es auch einigermaßen.
Jetzt würde ich das ganze per->GET' machen, sodaß die Variablen, wenn man sie im Formular ändert in der Adreßleiste übergeben werden, zumal sie sowieso schon wegen dem Link im Menü dort stehen.
Nur daß ich das ums Verrecken nicht hinbekomme...
Und dann stehen im Array für die Monate die Monatsnamen, die werden auch übergeben, wie bekomme ich es jetzt aber hin daß z.B. für den Januar nicht der Name, sondern->01' übergeben wird ?
 
  • #2
OK,

wenn ich das richtig verstanden habe, musst du als erstes mal die method des Formulars auf GET setzen.

Für den Monat versuch es mal so:

Code:
<?php
....
$einsmonat = array (
  Januar => 01,
  Februar => 02,
  März => 03,
  ...
);
 
foreach ($einsmonat as $eintrag1 => $einsatzmonat1) {
  echo <option value=' . $einsatzmonat1 .->>$eintrag1</option>;
} 
....
?>

Bitte die SPACE zwischen ' und entfernen, die dienen nur zur besseren Lesbarkeit ;)


gruss conny
 
  • #3
'GET' hatte ich ja schon eingesetzt, aber da schreibt er in der Adreßleiste nicht den vollständigen Link, wie er stehen müßte, um die entsprechenden Daten auszugeben.
Dort steht dann, z.B. wenn ich den Monat März wähle

localhost/alsterdorf/index.php?einsatzmonat1=03

als Link aber müßte dort dann

localhost/alsterdorf/index.php?go=einsaetze&einsatzmonat=03&einsatzjahr=2005

stehen, d.h. es fehlt erstens der Link zur Seite (Einsätze) und zweitens die Variable->einsatzjahr'...

Wenn ich das per POST mach klappt es, aber dann steht ja in der Adreßleite noch der Link vom Aufruf der Seite, und das möchte ich halt dann mit ändern.


Code:
<?php
....
$einsmonat = array (
  Januar => 01,
  Februar => 02,
  März => 03,
  ...
);
 
foreach ($einsmonat as $eintrag1 => $einsatzmonat1) {
  echo <option value=' . $einsatzmonat1 .->>$eintrag1</option>;
}
....
?>

Das klappt übrigens. :D
 
  • #4
Code:
<?php
.....
echo <form action='der_link_zur_seite' method='GET' name='monat_jahr'>;
echo <type ='hidden' name='go' value='einsaetze'>;
.....
?>

Und du musst den Variablen gleiche Namen geben, woher soll PHP wissen das du $einsatzjahr meinst, aber:
Code:
<?php
....
echo<select name=\einsjahr\>;
....
?>

schreibst ;) ;D

gruss conny
 
  • #5
Ich glaube wir sind auf dem richtigen Weg...
Du hattest etwas vergessen, guck Dir das mal an:
Code:
echo <type ='hidden' name='go' value='einsaetze'>;
das fällt Dir bestimmt recht schnell beim Ansehen des Codes auf...(ich hab dafür etwas länger gebraucht...)

Jetzt könntest Du mir aber noch einen Tip geben, wie ich eine Meldung einbaue daß für den ausgewählten Monat in dem Jahr keine Einträge vorliegen...
Die Datenbankabfrage sieht so aus:
Code:
$sql = mysql_query(SELECT * FROM einsaetze WHERE jahr='$einsatzjahr' && monat='$einsatzmonat' order by datum DESC);
			if (empty($sql)){
				
				 echo<div class='einsaetze'><table class='einsaetze'>;
					 echo<tr>;
				 echo<td class=\schada\ colspan=\2\>Kein Eintrag vorhanden !</td>;
				 echo</tr>;
				 echo</table>;				
				}
				
			else{
			while ($ds = mysql_fetch_object($sql)){.........
Wenn die Datenbank komplett leer ist kommt ja schon eine Meldung, aber halt auch nur wenn sie komplett leer ist...
 
  • #6
Das input war nur ein Test ob du auch mitdenkst ;D

Code:
<?php
$sql = mysql_query(SELECT * FROM einsaetze WHERE jahr='$einsatzjahr' && monat='$einsatzmonat' order by datum DESC);
if (!count($sql)){
  echo ......
}
else{
  while ($ds = mysql_fetch_object($sql)){
    ......
  }
}
?>

oder

Code:
<?php
$sql = mysql_query(SELECT * FROM einsaetze WHERE jahr='$einsatzjahr' && monat='$einsatzmonat' order by datum DESC);
$i = 0;
while ($ds = mysql_fetch_object($sql)){
  ++$i;
  .........
}
if($i == 0) {
  echo ..........
}
?>

Da könnte ich dir noch ca. 3545454 Möglichkeiten nennen wie du das machen kannst.

gruss conny
 
  • #7
Da könnte ich dir noch ca. 3545454 Möglichkeiten nennen wie du das machen kannst.

gruss conny

Nicht nötig, die zweite klappt ganz gut...
 
Thema:

Variablen per 'GET' übergeben ??

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben