Mehrere Auswahlfelder und nur ein Submit-Button

Verfasst am: 01. 07. 2011 [22:31]
Marcus
Dabei seit: 27.01.2011
Themenersteller

85 Beiträge
Beitrag hilfreich?

Hallo zusammen!

Es würde mich freuen, wenn ich Eure Hilfe in Anspruch nehmen könnte:

Ich habe ein Formular mit mehreren Auswahlfeldern.

Das Formular habe ich nun so umgestaltet, das ich nur noch ein Reset bzw. Submit-Button habe.

Bislang funktioniert es leider nur, wenn man den Wochentag auswählt. Die anderen Auswahlfelder ignoriert die Routine.

PHP
<table>
 
<tbody>
<form action="kurssuche.php" method="post" accept-charset="utf-8">
	<tr>
		<td><strong>Angebot:</strong></td>
			<td width="600">
 
					<select name="searchterm" size="1" id="Angebot" class="select">
						<?php
						//Angebot auslesen
						$sqlbefehl ="
						Select distinct
						Angebot
						From
						programm
						ORDER BY
						Angebot
						";
						$erg_cats = mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
						while($cat = mysql_fetch_assoc($erg_cats)){
						echo '<option value="'.$cat['Angebot'].'">'.$cat['Angebot'].'</option>';
						}
						?>
					</select>
 
 
			</td>
			<td width="550">
				<style="text-align:left;">Der MTV Treubund behält sich das Recht vor, Angebote mit schwacher Resonanz unangekündigt einzustellen
			</td>
	</tr>
	<tr>
		<td><strong>Ort:</td>
			<td>
 
					<select name="searchterm" size="1" id="Ort" class="select">
						<?php
						//Ort auslesen
						$sqlbefehl ="
						Select distinct
						Ort
						From
						programm
						ORDER BY
						Ort
						";
						$erg_cats = mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
						while($cat = mysql_fetch_assoc($erg_cats)){
						echo '<option value="'.$cat['Ort'].'">'.$cat['Ort'].'</option>';
						}
						?>
					</select>
 
					<!--<input type = "submit" value="Suchen" />
					<input type = "reset" value="Abbrechen" />
				</form>-->
			</td>
			<td width="550">
				<style="text-align:left;">Der MTV Treubund behält sich das Recht vor,die Kurs-Orte bei Bedarf zu wechseln</style>
			</td>
	</tr>
	<tr>
		<td><strong>Übungsleiter:</strong></td>
			<td>
 
					<select name="searchterm" size="1" id="Uebungsleiter" class="select">
						<?php
						//Übungsleiter auslesen
						$sqlbefehl ="
						Select distinct
						Uebungsleiter
						From
						programm
						ORDER BY
						Uebungsleiter
						";
						$erg_cats = mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
						while($cat = mysql_fetch_assoc($erg_cats)){
						echo '<option value="'.$cat['Uebungsleiter'].'">'.$cat['Uebungsleiter'].'</option>';
						}
						?>
					</select>
 
 
			</td>
			<td width="700">
				<style="text-align:left;">Der MTV Treubund behält sich vor, Kursleiter (auch sehr kurzfristig) auszuwechslen</style>
			</td>
	</tr>
	<tr>
		<td><strong>Tageszeit:</strong></td>
			<td>
 
					<select name="searchterm" size="1" id="Tageszeit" class="select">
					<option value="0">Uhrzeit</option>
					<option value="Vormittags">08 h - 12 h</option>
					<option value="Nachmittag">12 h - 18 h</option>
					<option value="Abends">18 h - 22 h</option>
					</select>
 
 
			</td>
			<td width="550">
				<style="text-align:left;">mögliche zeitliche Verlegungen durch den MTV Treubund sind nicht ausgeschlossen</style>
			</td>
	</tr>
	<tr>
		<td><strong>Wochentag:</strong></td>
			<td>
 
				<select name="searchterm" size="1" id="Tage" class="select">
					<option value="0">Wochentag</option>
					<option value="Montag">Montag</option>
					<option value="Dienstag">Dienstag</option>
					<option value="Mittwoch">Mittwoch</option>
					<option value="Donnerstag">Donnerstag</option>
					<option value="Freitag">Freitag</option>
					<option value="Samstag">Samstag</option>
					<option value="Sonntag">Sonntag</option>
				</select>
 
 
			</td>
			<td width="550">
				<style="text-align:left;">Der MTV Treubund behält sich die örtliche Verlegung von Kursen (bei Bedarf auch sehr kurzfristig) vor</style>
			</td>
	</tr>
 <td></td><td><input name="reset" type="reset" id="reset2" value="Zurücksetzen" />
 
              <input type="submit" id="send2" name="send" value="Ergebnisse anzeigen" /></td>
			<td width="12"></td>
		  </tr>
 
</form>
</tbody>
 
</table>


Funktioniert das nur mit js? Weil dann kann ich es wohl abhaken, da ich mich damit überhaupt nicht auskenne!

Danke im voraus!

Marcus

Portal für Veranstaltungen der Esoterik und Alternativen Verfahren

Mein Blog
 
Verfasst am: 01. 07. 2011 [22:51]
Matthes
Dabei seit: 08.05.2010

174 Beiträge
Beitrag hilfreich?

Du benutzt gleiche Namen für alle Felder.
Damit bekommt die Variable den Wert des letzten Feldes dieses Namens.

Entweder aus den Namen ein "searchterm[]" machen, dann hast Du die Auswahlen als Array, oder unterschiedliche Namen verwenden.

Du machst das aber nicht beruflich, oder...?
Wenn sowas nicht klappt, lass Dir $_POST ausgeben (var_export, print_r, ...) und lies die Anzeige aufmerksam. In der Regel fällt einem dann schon auf, dass man gleiche Namen verwendet.

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 01.07.2011 um 22:56.]

Mal: "May have been the losing side. Still not convinced it was the wrong one."
 
Verfasst am: 01. 07. 2011 [23:03]
Marcus
Dabei seit: 27.01.2011
Themenersteller

85 Beiträge
Beitrag hilfreich?

Hallo Matthes!

Danke soweit!

Beruflich?

Um Gottes Willen, nee. Ich bastel das in meiner Freizeit, und um das vielleicht mal irgendwann zu lernen.

Beruflich würde ich ja am langen Arm verhungern... *lol*

Portal für Veranstaltungen der Esoterik und Alternativen Verfahren

Mein Blog
 
Verfasst am: 02. 07. 2011 [00:06]
Ultima
Dabei seit: 09.07.2010

759 Beiträge
Beitrag hilfreich?

Dafür brauchst du kein JavaScript. Wie Matthes schon sagte, gib allen Suchkriterien unterschiedliche Bezeichnungen. Danach einfach prüfen welche gesetzt wurden und daraus entsprechend die WHERE Bedingungen bilden für die SQL Abfrage.

So kannst du auch die Anzeige eingrenzen oder besser gesagt die User können gezielter suchen.

JS brauchst du erst wenn du die Ergebnisse direkt einblenden willst ohne die Seite neu zu laden.

Schöne Grüße
Thomas

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 02.07.2011 um 00:07.]

 
Verfasst am: 02. 07. 2011 [12:51]
Marcus
Dabei seit: 27.01.2011
Themenersteller

85 Beiträge
Beitrag hilfreich?

Hallo Ultima!

Auch Dir Danke für Deine Antwort.

Dann weiß ich schon mal ein wenig weiter. Und da ihr mir bei der Abfrage damals ja auch schon so gut geholfen habt, brauche ich die ja eigentlich 'nur' entsprechend anzupassen icon_cheesygrin.gif

Das, denke ich, sollte sogar ich hinbekommen.

Portal für Veranstaltungen der Esoterik und Alternativen Verfahren

Mein Blog
 
Verfasst am: 02. 07. 2011 [17:12]
Marcus
Dabei seit: 27.01.2011
Themenersteller

85 Beiträge
Beitrag hilfreich?

So, ich habs tatsächlich gebacken bekommen.

Aber ich würde gerne noch von den Experten wissen, obs da Optimierungspotenzial gibt. Meistens ist das bei so zusammengeschusterten Code ja der Fall:

PHP
if (isset($_POST['Angebot']) && !empty($_POST['Angebot']) || ($_POST['Ort']) && !empty($_POST['Ort']) || ($_POST['Uebungsleiter']) && !empty($_POST['Uebungsleiter']) || ($_POST['Tageszeit']) && !empty($_POST['Tageszeit']) || ($_POST['Tage']) && !empty($_POST['Tage'])) {
	$db = mysql_connect("localhost","xxxxx","xxxxx") or die(mysql_error());
	mysql_select_db("xxxxx") or die ("Die Datenbank existiert nicht.");
	mysql_query('SET NAMES `utf8`');
	$begriff = mysql_real_escape_string($_POST['Angebot']. $_POST['Ort']. $_POST['Uebungsleiter']. $_POST['Tageszeit']. $_POST['Tage']);


Danke und Gruß Marcus

Portal für Veranstaltungen der Esoterik und Alternativen Verfahren

Mein Blog
 
Verfasst am: 02. 07. 2011 [17:32]
romacron
Dabei seit: 01.11.2009

1143 Beiträge
Beitrag hilfreich?

Was auf den ersten Blick auffällt

$_POST vars im Code

zu aller allererst Alle Variablen aus dem $_POST nehmen.

in etwa so:
$validatetPostVars

~~query( (string)$validatetPostVars['Angebot'] .(int)$validatetPostVars['leiter']);

...so diese Richtung.
ggf noch prüfen ob die übergebenen Werte eine maximale Länge nicht übersteigen.
Spassvögel submitten gern eine Textdatei mit 1.99MB.
Damit quält sich das Script wink.gif


ich glaube Matthes oder Oscar hatten zum Abfangen von Posts und Gets gleich am Anfang des Scripts kommentiert
 
Verfasst am: 02. 07. 2011 [18:59]
Marcus
Dabei seit: 27.01.2011
Themenersteller

85 Beiträge
Beitrag hilfreich?

Hallo Roman!

Wahrscheinlich ein völlig depperte Frage, aber eben Anfänger:

Auch wenn alles nur Select-Felder sind und keine Eingabe-Felder?

Weil das Formular nur aus Aswahlfeldern besteht: Hier zu finden

Gruß

Marcus

Portal für Veranstaltungen der Esoterik und Alternativen Verfahren

Mein Blog
 
Verfasst am: 02. 07. 2011 [19:04]
Matthes
Dabei seit: 08.05.2010

174 Beiträge
Beitrag hilfreich?

Das kann selbst das schlechteste Scriptkiddie innerhalb einer Minute umbasteln und eigene Werte übergeben.
Wann immer Du Werte vom Besucher erhälst, musst Du sie prüfen und ggf. entschärfen. Egal ob das jetzt GET-Parameter sind, ob Du ein Formular verarbeitest, ob es Cookies sind, oderoderoder. Alle Daten, die von außerhalb kommen, sind potentiell böse, jederzeit.

PS: Wobei Du die POST-Variablen ja durch mysql_real_escape_string jagst, so schlimm ist es dann nicht mehr.

PPS: Entferne doch bitte einer das Passwort aus Marcus' Codeschnippsel... ;)

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 02.07.2011 um 19:08.]

Mal: "May have been the losing side. Still not convinced it was the wrong one."
 
Verfasst am: 02. 07. 2011 [20:54]
Marcus
Dabei seit: 27.01.2011
Themenersteller

85 Beiträge
Beitrag hilfreich?

Also müsste das ähnlich diesem hier sein:

PHP
$sqlbef = "insert into programm (angebot, tage, ort, von, bis, uebungsleiter, tageszeit, zielgruppe, anmerkung) values ('$angebot', '$tage', '$ort', '$von', '$bis', '$uebungsleiter', '$tageszeit', '$zielgruppe', '$anmerkung')";


Nur das das nicht insert into heißt, sondern $Validate PostVars?

Portal für Veranstaltungen der Esoterik und Alternativen Verfahren

Mein Blog
 




Du bist nicht eingeloggt. Bitte beachte, dass Du eingeloggt sein musst, um Themen zu erstellen oder auf Beiträge zu antworten.

RSS Feed abonnieren

Werde in Echtzeit über neue Foren-Beiträge informiert:



2 Mitglieder waren innerhalb der letzten 15 Minuten online (47 heute gesamt):
Deep_Thought, Ostseebrise

Administratoren und Moderatoren:
[keine]

Seitenreport hat 18153 registrierte Mitglieder, 3003 Themen und 29112 Beiträge.
Der aktuelle Mitgliederzuwachs liegt bei durchschnittlich 12 bestätigten Neuregistrierungen pro Tag.
Pro Tag werden im Seitenreport Forum durchschnittlich 1 neues Thema und 7 Beiträge erstellt.
Die Durchschnittszahlen berechnen sich aus den letzten 7 Tagen.

Mehrfach empfohlen

Seitenreport ist einer der bekanntesten SEO und Website Analyse Dienste im deutschsprachigen Raum und wurde u.a. schon empfohlen:
von Mr. Wong im Wong Letter
vom Leserservice der Deutschen Post
vom Technik Blog SiN
und vielen anderen

Partnerprogramm

12% Lifetime Provision auf alle Buchungen von Dir geworbener Mitglieder sowie 0,50 € für jede Registrierung. Eines der besten deutschen Partnerprogramme laut den appCharts von 100partnerprogramme.de. Nimm jetzt teil am Seitenreport Partnerprogramm und verdiene gutes Geld dabei!

* = Partnerlinks