PHP: Problem mit Suchfeld + Button form
daisho 26.02.2011 - 22:16 1499 6
daisho
VereinsmitgliedSHODAN
|
Ist mir fast peinlich das zu fragen, aber ich habe null Ahnung von PHP und pfusche gerade in einem phpBB Forum rum: <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 ... <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: #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](/images/smilies/redface.gif)
Habs mal mit ...
style="display: inline;"
... gelöst. Hoffe das ist eine halbwegs elegante Vorgehensweise.
Bearbeitet von daisho am 26.02.2011, 22:34
|
kleinerChemiker
Here to stay
|
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
AdministratorLegends never die
|
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: <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: 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: <?php
switch ($_POST['szAction'])
{
case 'action1':
break;
case 'action2':
break;
}
?>
|
kleinerChemiker
Here to stay
|
Reicht es nicht sogar, wenn die Buttons unterschiedlich beschriftet sind, weil die Beschriftung als value vom Button mitgesendet wird?
|
mat
AdministratorLegends never die
|
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
VereinsmitgliedSHODAN
|
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
Here to stay
|
|