PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Datensatznavigation via PHP (http://www.selfphp.de/forum/showthread.php?t=18964)

US 26.03.2008 21:02:14

Datensatznavigation via PHP
 
Ich habe vor eine Datensatznavigationsleiste mit Button zur Navigation zum "ersten", "vorherigen", "nächsten" und "letzten" Datensatz zu basteln. Zu diesem Zweck möchte ich grafische Buttons verwenden und per "submit" die id des gewünschten Datensatzes mit übergeben. Bisher habe ich eine Lösung mit versteckten Formularfeldern und einer Kombination aus JavaScript und PHP, die mir aber nicht so richtig gefällt.

Ich würde es gerne auf dem Weg erstellen, dass ich mehrere Submit-Buttons ins Formular übernehme und beim Neuaufruf der Seite auswerte, welcher Button das Formular gesendet hat. In einem Forum bin ich auf die Idee gebracht wurden, die "name"-Eigenschaft des Buttons nach dem Schema "navig[i]" (vobei i die id des angesteuerten Datensatzes aus der MySQL-Datenbank darstellt zu verwenden. Nutze ich herkömmliche Buttons, funktioniert das auch ganz gut:

PHP-Code:

<?php
// zur Kontrolle, welche Werte per POST ankommen
$arr $_POST['navig'];
if (isset(
$arr)) {
    if (
array_key_exists(1$arr)) { echo '1 gesendet!'; }
    else if (
array_key_exists(2$arr)) { echo '2 gesendet!'; }
    echo 
'<br>';
    
$ausgabe array_keys ($arr);
    
print_r ($ausgabe);
    }
else { echo 
'Formular noch nicht gesendet!';}
?>

HTML-Code:

<form name="test" method="post" action="test.php">
<input name="navig[1]" type="image" src="img/first.gif" value="1" onclick="submit()">
<input name="navig[2]" type="image" src="img/last.gif" value="2" onclick="submit()">
</form>

Die Anzeige ist sowohl im Mozilla als auch im MicrosoftIE je nach gedrücktem Button:

Zitat:

1 gesendet!
Array ( [0] => 1 )
ODER

Zitat:

2 gesendet!
Array ( [0] => 2 )
Nun möchte ich das aber wegen der gestalterischen Möglichkeit lieber mit dem "neueren" <button>-element umsetzen und habe es auch schon probiert:

PHP-Code:

<?php
// zur Kontrolle, welche Werte per POST ankommen
$arr $_POST['navig'];
if (isset(
$arr)) {
    if (
array_key_exists(1$arr)) { echo '1 gesendet!'; }
    else if (
array_key_exists(2$arr)) { echo '2 gesendet!'; }
    echo 
'<br>';
    
$ausgabe array_keys ($arr);
    
print_r ($ausgabe);
    }
else { echo 
'Formular noch nicht gesendet!';}
?>

HTML-Code:

<form name="test" method="post" action="test.php">
<button name="navig[1]" type="submit"
  value="erster">
<img src="img/first.gif" width="16" height="16" border="0" value="2"></button>
<button name="navig[2]" type="submit"
  value="letzter">
<img src="img/last.gif" width="16" height="16" border="0" value="2"></button>
</form>

Hier ist die Anzeige im Mozilla wie oben, aber bei Microsoft kommt egal welchen Button ich drücke:

Zitat:

1 gesendet!
Array ( [0] => 1 [1] => 2 )
Wie dank "array_keys ($arr)" zu sehen ist, wird beim Submit nicht nur der Wert des gedrückten Buttons übersendet, sondern beide Werte. Was kann ich machen, dass auch Microsoft mit <button> dasselbe Resultat liefert wie oben, oder hat jemand eine andere praktikable PHP-Lösung für das Problem?


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:59:31 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.