DB-Abfrage erst nach Auswahl des 2.<select> Feldes

Html

Erfahrenes Mitglied
Hallo zusammen, programmiere derweil an einem kleinen Script zum Bilder hochladen. Doch zuvor soll mit einem kleinen Formular eine Vorauswahl getroffen werden.

Es besteht aus:

1.<select> Kategorie
2.<select> Jahr
3.<select> Dynamisch erzeugt

Nun ist mein Problem das die DB Abrage schon ausgeführt wird wenn nur die Kategorie gewählt wurde. Dann fehlt meiner DB Abfrage aber noch das Jahr und es wird nix gefunden.

Also Kategorie wählen -> Jahr wählen -> DB-Abfrage


Wie muss die Überprüfung dafür aussehen?



PHP:
<?php


$dbhost = 'localhost';
$dbname = 'einsätze'; // Hier Datenbankname rein
$dbuser = 'root'; // Hier User...
$dbpasswd = ''; // und passwort...

//Verbindungsaufbau
$connection = @mysql_connect($dbhost, $dbuser, $dbpasswd);
@mysql_select_db($dbname, $connection);?>


<form action='bilder_neu2.php' method='POST'>
Kategorie:    <select name='kategorie' onChange="form.submit()" size="1">
              <option selected>--Bitte auswählen--</option>
			  <option <?php echo $_POST['kategorie'] == "Einsatz" ? 'selected' : '' ?> >Einsatz</option>
              <option <?php echo $_POST['kategorie'] == "Jugendfeuerwehr" ? 'selected' : '' ?> >Jugendfeuerwehr</option>
              <option <?php echo $_POST['kategorie'] == "Events" ? 'selected' : '' ?> >Events</option>
              </select>
           
<br><br>

Jahr:         <select name='jahr' onChange="form.submit()" size="1">
              <option selected>--Bitte auswählen--</option>
			  <option <?php echo $_POST['jahr'] == "2005" ? 'selected' : '' ?> >2005</option>
              <option <?php echo $_POST['jahr'] == "2006" ? 'selected' : '' ?> >2006</option>
              <option <?php echo $_POST['jahr'] == "2007" ? 'selected' : '' ?> >2007</option>
              </select>
             

</form>




<?php

// Kategorie Einsätze
If($_POST['kategorie']== "Einsatz"){


$result=mysql_query("SELECT * FROM einsätze WHERE jahr='".$_POST['jahr']."'") OR die(mysql_error());


echo "<form action='upload.php' method='POST'>";

If (mysql_num_rows($result)== 0){ 
	 
	echo "Seite: Kein Datensatz vorhanden";

	}
	 
else{ 

	 
	echo "Seite: <select name='seite'>";

	while($row=mysql_fetch_array($result)){
	$nummer = $nummer + 1; 
	
	echo "<option value='".$row['ID']."'>".$nummer."|".$row['einsatzart']."</option>";
	
	}
	

	echo "</select><br><br>";

echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>"; 
echo "<input type='submit' name='Loeschen' value='Bilder löschen'> 
	  <input type='submit' name='Neu' value='Neue Bilder hinzufügen'>";

echo "</form>";
}
}
?>




<?php

// Kategorie Jugendfeuerwehr
If($_POST['kategorie']== "Jugendfeuerwehr"){


$result=mysql_query("SELECT * FROM jugendfeuerwehr WHERE jahr='".$_POST['jahr']."'") OR die(mysql_error());


echo "<form action='upload.php' method='POST'>";

If (mysql_num_rows($result)== 0){ 
	 
	echo "Seite: Kein Datensatz vorhanden";
	 
	}
	 
else{ 

	 
	echo "Seite: <select name='seite'>";

	while($row=mysql_fetch_array($result)){
	$nummer = $nummer + 1; 
	
	echo "<option value='".$row['ID']."'>".$nummer."|".$row['beschreibung']."</option>";
	
	}
	

echo "</select><br><br>";

echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>"; 
echo "<input type='submit' name='Loeschen' value='Bilder löschen'> 
	  <input type='submit' name='Neu' value='Neue Bilder hinzufügen'>";

echo "</form>";
}
}
?>




<?php

// Kategorie Events
If( $_POST['kategorie']== "Events"){


$result=mysql_query("SELECT * FROM events WHERE jahr='".$_POST['jahr']."'") OR die(mysql_error());


echo "<form action='upload.php' method='POST'>";

If (mysql_num_rows($result)== 0){ 
	 
	echo "Seite: Kein Datensatz vorhanden";
	 
	}
	 
else{ 

	 
	echo "Seite: <select name='seite'>";

	while($row=mysql_fetch_array($result)){
	$nummer = $nummer + 1; 
	
	echo "<option value='".$row['ID']."'>".$nummer."|".$row['beschreibung']."</option>";
	
	}
	

echo "</select><br><br>";

echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>"; 
echo "<input type='submit' name='Loeschen' value='Bilder löschen'> 
	  <input type='submit' name='Neu' value='Neue Bilder hinzufügen'>";

echo "</form>";
}
}
?>
 
Indem du nicht nur abfragst, was in $_POST['kategorie'] steht, sondern auch prüfst ob Jahr und dein dynamisches Element eine Auswahl besitzen.
Das könntest du mit [phpf]isset[/phpf] oder [phpf]empty[/phpf] realisieren.

Du solltest dich aber dringend über SQL Injektionen erkundigen und dein Skript absichern.
 
Hallo, ja aber mit isset() gehts nicht.

Denn wenn ich die Kategorie wähle wird das Formular abgeschickt und der Eintrag "Bitte auswählen" im zweiten select Feld ist vorhanden . Somit existiert die Variable 'Jahr'.
 
HTML:
option selected value="0">--Bitte auswählen--</option>

PHP:
if($_POST['kategorie'] == 'xxx' AND intval($_POST['jahr']) != '0')

So sollte es z. B. gehen?
 
Super so funktioniert es... Danke.

Aber noch etwas. Ist es möglich das die Zeile "Bitte auswählen" nur einmal angezeigt wird. Sie dient ja nur dazu dass der User gezwungen ist das Select Feld auszuwählen damit der onchange feuert.

Kann die Zeile danach irgendwie gelöscht werden?
 
PHP:
<?php if(!isset($_POST['xxx'])) echo "<option>Bitte auswaehlen</option>"; ?>

Sollte so funktionieren.
 
Ein Problem jagt das andere. Und zwar wollte ich mein kleines cms nicht mit frames realisieren sondern es mal nach folgendem Prinzip zu machen:

http://www.tutorials.de/forum/php-t...che-art-fuer-z-b-index-php-section-links.html

Nur nun habe ich ein Problem: Ich habe das obige Script in die Seite eingebaut, doch durch den onchange wird es ja wieder an die gleiche seite gesendet-doch dann muss ich ja im action-Feld auch noch "section" angeben.

Aber das ist ja nicht alles, wenn ich dann so weit bin und neue Bilder hinzufügen will springt das Formular ja auf eine andere Seite. Doch damit diese angezeigt wird, muss ja auch diese bei "include" angegeben werden.

Ist das wirklich so aufwendig oder gibt es eine ander Lösung. Wären Frames da vielleicht nicht doch besser?
 
Link-Problem bei includedem Formular

Vielleicht erkläre ich es nochmal etwas einfacher. Also ich habe ein "Frameset" mit obigem Tutorial mit php realisiert.

Es klappt auch perfekt. Nur angenommen ich habe auf einer includeden Seite einen weiteren Link zu einer anderen Seite.

Dann muss auch diese Seite mit include angegeben werden?
 
Zuletzt bearbeitet:
Weiterleitung bei includedem Formular

Also habe noch etwas rum probiert aber so richtig klappt es nicht. Poste mal meine index.php

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>

<body>

<table width="100%" height="100%"  border="1">
  <tr>
    <td width="20%"><a href="index.php?section=termine">termine</a></td>
    <td width="80%" rowspan="4">
	
<?php

$seiten = array();
$seiten['termine'] = "include/verwaltung_termine/termine.php";
$seiten['einsatz'] = "include/verwaltung_einsaetze/formular.html";
$seiten['bilder'] = "include/verwaltung_bilder/formular.php";
//...


if(isset($_GET['section']) AND isset($seiten[$_GET['section']])) { 

switch($_GET['section']){
case "termine": include($seiten[$_GET['section']]); break;
case "einsatz": include($seiten[$_GET['section']]); break;
case "bilder": 	include($seiten[$_GET['section']]); break;
}
}

else {
include('includes/test.php');
}




?> 

</td>
  </tr>
  <tr>
    <td height="23"><a href="index.php?section=einsatz">einsatz</a></td>
  </tr>
  <tr>
    <td height="23"><a href="index.php?section=bilder">bilder</a></td>
  </tr>
  <tr>
    <td height="302">&nbsp;</td>
  </tr>
</table>






</body>
</html>


So mein Problem ist jetzt, dass unter dem link "einsatz" die Seite formular.php included wird. So weit so gut. Nur wird dieses Formular an die Seite upload.php gesendet.

Doch wie bekomme ich die Verlinkung vom Formular auf die andere Seite hin?

Bitte um Hilfe, Olli
 
Zurück