Hi(gh)!
Folgendes Problem (immer noch und, ja, use_strict.php habe ich installiert, es schmeißt mir hier aber keine Fehlermeldung!):
Eine Liste von Datensätzen aus einer MySQL-Datenbank wird in Tabellenform ausgegeben, die ersten beiden Spalten enthalten Links zum Löschen bzw. Bearbeiten jedes Datensatzes. Der Löschen-Link übergibt (beim ersten Datensatz der Tabelle) folgende Werte:
section=2 (Funktion "Löschen oder Bearbeiten", 1 wäre "Eingabe von neuen Datensätzen")
first=0 (Position des ersten Datensatzes in der Liste, es werden immer jeweils 20 Datensätze ausgegeben)
delete=pre (führt zu einer Sicherheitsabfrage)
entry=3 (Indexwert des Datensatzes in der Datenbank)
Dieser Link und die damit verbundene Funktionalität funktionieren einwandfrei. Problematisch ist der "Bearbeiten"-Link; dort sollen (wiederum beim ersten Datensatz der Tabelle) übergeben werden:
section=2 (Funktion "Löschen oder Bearbeiten")
first=0 (Position des ersten Datensatzes in der Liste)
edit=yes (sorgt in der Funktion input() dafür, dass das Formular mit durch den Inhalt des zu bearbeitenden Datensatzes definierten Werten angezeigt wird)
entry=3 (Indexwert des Datensatzes in der Datenbank)
So weit, so gut... nur wird anscheinend nicht nur kein $_GET['entry'] angelegt, es ist nicht einmal möglich, sich den Wert mit
$entry = $_GET['entry'];
echo "<p>entry = ".$entry."</p>"
anzeigen zu lassen, ich bekomme nicht einmal ein "entry =" zu sehen!
Hier der Code:
echo '<h3>Vorhandene Datensätze bearbeiten</h3>';
$first = $_GET['first'];
dbcall();
$query = "DESCRIBE hersteller";
$result = mysql_query($query);
dberror();
echo '<table width="150%">';
echo '<tr>';
echo '<td colspan="2" class="transparent">';
for ($i=0; $i<=4; $i++)
{
$row = mysql_fetch_row($result);
echo '<th class="headrow">';
echo '<a href="hersteller.php?section=2&sort='.($i+1).'&first=0">';
echo $row[0];
echo '</a>';
echo '</th>';
}
echo '</tr>';
$j=0;
$query_sort=" ORDER BY ";
switch ($_GET['sort'])
{
case 1:
$query_sort = $query_sort."ID";
break;
case 2:
$query_sort = $query_sort."Firmenname";
break;
case 3:
$query_sort = $query_sort."Land";
break;
case 4:
$query_sort = $query_sort."Status";
break;
case 5:
$query_sort = $query_sort."Link";
break;
default:
$query_sort = "";
}
$query = "SELECT * FROM hersteller ".$query_sort." LIMIT ".$first.", 20";
$result = mysql_query($query);
dberror();
$sort = $_GET['sort'];
$delete = $_GET['delete'];
while ($row = mysql_fetch_row($result))
{
switch($j%2)
{
case 0:
echo '<tr class="brightrow">';
break;
case 1:
echo '<tr class="darkrow">';
break;
}
echo '<td class="headrow"><span class="b"><a href="hersteller.php?section=2&first='.floor($j/20).'&delete=pre&entry='.$row[0].'">Löschen</a></span></td><td class="headrow"><span class="b"><a href="hersteller.php?section=2&first='.floor($j/20).'&edit=yes&entry='.$row[0].'&sort='.$sort.'&delete='.$delete.'">Bearbeiten</a></span></td><td align="right">'.$row[0]."</td><td>".$row[1]."</td><td>".$row[2]."</td><td>".$row[3]."</td><td>".$row[4]."</td></tr>";
$j++;
}
echo '</table>';
$db = mysql_close();
Der Code für die input()-Funktion im Edit-Modus:
function input()
{
if ($_GET['edit']=="yes")
{
$entry = $_GET['entry'];
$sort = $_GET['sort'];
echo "<p>entry = ".$entry."</p>"; // nichts wird angezeigt!
dbcall();
$query = "SELECT * FROM hersteller WHERE ID=".$entry;
// echo '<p>'.$query.'</p>';
$result = mysql_query($query);
dberror();
$row = mysql_fetch_row($result);
$formtop = '<form method="POST" action="hersteller.php?section=2&first=0&entry="'.$entry.'"&edit=yes&delete=no&sort="'.$sort.'>';
}
...und der Aufruf:
else if ($_GET['edit']=="yes")
{
echo "Hallo!"; // wird angezeigt
echo "<p>entry = ".$entry."</p>"; // wird NICHT angezeigt! Wieso?
input();
}
Also, ich bin erstmal ratlos...
Bis bald im Khyberspace!
Yadgar