Ich arbeite an einem Programm, das Werte aus einer Datenbank erhält und spuckt eine Zeile nach dem anderen in eine Formulartextausgabe aus. Um die verschiedenen Zeilen zu sehen, gibt es Navigationsschaltflächen, die die aktuelle Zeile ändern, die Sie gerade betrachten. Alles funktioniert bis auf die Knöpfe, die jedes Mal gelöscht und reinitialisiert werden, wenn Sie einen von ihnen drücken. Es gibt vier dieser Schaltflächen, eine "erste", "vorherige", "nächste" und "letzte", die die Nummer festlegen, die die aktuelle Zeile auf den jeweiligen Wert für jede Schaltfläche steuern soll.PHP-Zeile Navigationstaste Schalter löscht immer Variable vor dem Ausführen
Hier ist der Abschnitt, der nicht funktioniert:
`
if(isset($result)){
$rows = mysqli_num_rows($result);
if(isset($button_value)){
echo "After isset(button_val) in buttons, val = ".$button_value."<br>";
if(isset($_GET['table_nav'])){
$button_ch = $_GET['table_nav'];
switch($button_ch){
case "First":
unset($button_ch);
echo "button_value in, before = ".$button_value."<br>";
$button_value = 0;
echo "button_value in = ".$button_value."<br>";
break;
case "Previous":
unset($button_ch);
if($button_value > 0){
echo "button_value in, before = ".$button_value."<br>";
$button_value--;
echo "button_value in = ".$button_value."<br>";
break;
}else{
echo "Invalid button action. No previous rows.<br>";
break;
}
break;
case "Next":
unset($button_ch);
if($button_value < $rows){
echo "button_value in, before = ".$button_value."<br>";
$button_value++;
echo "button_value in = ".$button_value."<br>";
break;
}else{
echo "Invalid button action. No next rows.<br>";
break;
}
break;
case "Last":
unset($button_ch);
echo "button_value in, before = ".$button_value."<br>";
$button_value = $rows - 1;
echo "button_value in = ".$button_value."<br>";
break;
default:
unset($button_ch);
echo "Error, invalid row navigation button value<br>";
}
echo "button val after set by case = ".$button_value;
}//*/
}
} else {
echo "ERROR in result";
}`
Drücken der„First“oder„Zurück“-Tasten setzt den button_value (verwendete Spur der aktuellen Zeile zu halten) auf 0, drücken Sie die Schaltfläche "Weiter" setzt button_value auf 1, und drücken Sie die Schaltfläche "Last" setzt den Wert auf die maximale Anzahl von Zeilen für die ausgewählte Tabelle.
Ich kann wirklich nicht herausfinden, was hier vor sich geht. Wenn noch mehr Code benötigt wird, um das herauszufinden, kann ich es liefern, aber ich wollte nicht alle 226 Codezeilen posten.
Der größere Teil des Codes PHP unten enthalten ist:
<?php
global $table_array;
//global $button_value;
$table_array = array();
//*
if(!isset($button_value)){
$button_value = 0;
echo "reset the undecfined var button_value <br>";
}//*/
//$result = get_table($_GET["table_name"], $connection_to_mysql);
if(isset($_GET["table_name"])){
$table = $_GET["table_name"];
//echo "table name is ".$table."<br><br>";
$result = get_table($table, $connection_to_mysql);
$rows = mysqli_num_rows($result);
list($table_array, $table_cols) = parse_result($result, $table);
}
//The button handling section
if(isset($result)){
$rows = mysqli_num_rows($result);
if(isset($button_value)){
if(isset($_GET['table_nav'])){
$button_ch = $_GET['table_nav'];
switch($button_ch){
case "First":
unset($button_ch);
$button_value = 0;
echo "button_value in = ".$button_value."<br>";
break;
case "Previous":
unset($button_ch);
if($button_value > 0){
$button_value--;
break;
}else{
echo "Invalid button action. No previous rows.<br>";
break;
}
break;
case "Next":
unset($button_ch);
if($button_value < $rows){
echo "button_value in, before = ".$button_value."<br>";
$button_value++;
echo "button_value in = ".$button_value."<br>";
break;
}else{
echo "Invalid button action. No next rows.<br>";
break;
}
break;
case "Last":
unset($button_ch);
$button_value = $rows - 1;
echo "button_value in = ".$button_value."<br>";
break;
default:
unset($button_ch);
echo "Error, invalid row navigation button value<br>";
}
echo "button val after set by case = ".$button_value;
}//*/
}
} else {
echo "ERROR in result";
}
?>
Wenn der Code-Abschnitt
if(!isset($button_value)){
$button_value = 0;
echo "reset the undefined var button_value <br>";
}
ist nicht an der Spitze enthalten ist, dann wird die Variable "button_value" ist immer ungesetzt vor jeder switch statement hit.
Oh, und hier ist der HTML-Code für die Schaltflächen:
<form action='' method="GET">
<table>
<tr>
<input id="button_first" type="submit" name="table_nav" value="First">
</tr>
<tr>
<input id="button_previous" type="submit" name="table_nav" value="Previous">
</tr>
<tr>
<input id="button_next" type="submit" name="table_nav" value="Next">
</tr>
<tr>
<input id="button_last" type="submit" name="table_nav" value="Last">
</tr>
</table>
</form>