PHP: Problem mit Suchfeld + Button form

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php-problem-mit-suchfeld-button-form_222555/page_1 - zur Vollversion wechseln!


daisho schrieb am 26.02.2011 um 22:16

Ist mir fast peinlich das zu fragen, aber ich habe null Ahnung von PHP und pfusche gerade in einem phpBB Forum rum:

Code:
			<div id="search-box">
				<fieldset>
				<form action="{U_SEARCH}" method="post" id="search">
					<input name="keywords" id="keywords" type="text" maxlength="128" title="{L_SEARCH_KEYWORDS}" class="inputbox search" value="<!-- IF SEARCH_WORDS-->{SEARCH_WORDS}<!-- ELSE -->{L_SEARCH_MINI}<!-- ENDIF -->" onclick="if(this.value=='{LA_SEARCH_MINI}')this.value='';" onblur="if(this.value=='')this.value='{LA_SEARCH_MINI}';" />
					<input class="button2" value="{L_SEARCH}" type="submit" />
				</form>
                <form action="{U_SEARCH}" method="post" id="advsearch">
                    <input class="button2" value="{L_SEARCH_ADV}" type="submit" title="{L_SEARCH_ADV_EXPLAIN}" /> {S_SEARCH_HIDDEN_FIELDS}
                </form>
                </fieldset>
			</div>

Was ich will, ist einen "Advanced Search" Button nach dem Suchfeld und Search-Button der einfach nur auf die URL /search.php verweist (eben die erweiterte Suche im phpBB Forum).
Jetzt funktioniert der Button ...
Code:
<form action="{U_SEARCH}" method="post" id="advsearch">
                    <input class="button2" value="{L_SEARCH_ADV}" type="submit" title="{L_SEARCH_ADV_EXPLAIN}" /> {S_SEARCH_HIDDEN_FIELDS}
                </form>
... eigentlich genau so wie ich will, allerdings erscheint er immer unter dem Suchfeld und Button wie nach einem <br> Break, stelle ich ihn oben in die andere form action hinein, führt er immer die Suche wie der erste Button aus (irgendwie klar).
Eine Form Action in der Form Action funktioniert irgendwie nicht.

Muss mich vermutlich schon im Vorhinein entschuldigen weils vermutlich eine Babyaufgabe ist ... aber ich versteh es gerade nicht warum der zweite Button immer erst nach einem Zeilenumbruch zu sehen ist (der für mich irgendwie nicht vorhanden ist im Code?)

/Edit: Das Stylesheet für das DIV:
Code:
#search-box {
	color: #FFFFFF;
	position: relative;
	margin-top: 2px;
	margin-right: 0px;
	display: block;
	float: right;
	text-align: right;
	white-space: nowrap; /* For Opera */
}


/Edit: Eh klar ... nachdem ich stundenlang probiere entdecke ich den "style"-tag :o

Habs mal mit ...
Code:
style="display: inline;"
... gelöst. Hoffe das ist eine halbwegs elegante Vorgehensweise.


kleinerChemiker schrieb am 27.02.2011 um 10:43

warum überhaupt so kompliziert? Du willst den Button doch nur als Link, oder? Dann kannst ihn ja auch so einbinden <a href><img /></a>


mat schrieb am 27.02.2011 um 11:21

Sollen Informationen aus dem Form mitgenommen werden oder nicht? Wenn nicht, dann mach einfach einen Link, so wie der kleine Chemiker es vorgeschlagen hat. Ansonsten brauchst du eine Javascript-Funktion, um multiple Form-Submits korrekt in jedem Browser auslösen zu können.

Das ganze funktioniert so, dass du eine versteckte Input-Variable (zB szAction) im Form hast, die du bei einem Click auf den Button setzt. Diese verarbeitest du dann im PHP-Skript. Hier ein bisschen Code:

HTML-Formular:

Code:
<form method="POST" name="formBlubb">
  <input type="hidden" name="szAction" value="defaultsubmit" />

  <button onclick="return submitFormAction('formBlubb','action1')">Action 1</button>
  <button onclick="return submitFormAction('formBlubb','action2')">Action 2</button>
</form>

Javascript-Funktion:
Code:
function submitFormAction(szForm,szAction)
{
  var oForm = document.forms[szForm];
  if (!oForm)
  {
    alert('Form not found!');
    return true; // so default event of button is processed
  }

  // *) Set new action
  oForm.elements.szAction = szAction;

  // *) Manually submit form
  oForm.submit();

  return false; // avoid default event of button
}

Im PHP-Form kannst du dann ganz simpel die entsprechenden POST-Variablen auswerten:
Code: PHP
<?php

switch ($_POST['szAction'])
{
  case 'action1':
    break;
  case 'action2':
    break;
}

?>


kleinerChemiker schrieb am 27.02.2011 um 11:59

Reicht es nicht sogar, wenn die Buttons unterschiedlich beschriftet sind, weil die Beschriftung als value vom Button mitgesendet wird?


mat schrieb am 27.02.2011 um 12:05

Das geht nur mit <input type="submit" ... und ich bin persönlich kein Fan davon, weil der value sowohl die Submit-Button-Aufschrift, als auch den übergebenen Wert darstellt. Abgesehen davon, dass es hässlich ist, ist damit zum Beispiel keine geeignete Trennung zwischen Logik und HTML-Code bei Multi-Language-Support möglich.


daisho schrieb am 28.02.2011 um 16:32

Ja, der zweite Button ist ja im Prinzip einfach nur ein Link der auf die (erweiterte) Suchseite des Forums zeigt und muss sonst nichts anderes tun. Habs halt im Moment so gelöst da der Code schon vorhanden war und ein "richtiger" Button auch einen Mouse-Over Effekt hat im Gegensatz zu einem Bild (wobei ich gar nicht weiß ob ein Button bei jedem gleich aussieht!? Sonst würden ja beide ev. unterschiedlich aussehen)


kleinerChemiker schrieb am 28.02.2011 um 16:43

http://de.selfhtml.org/html/formula...tm#herkoemmlich




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025