Erstmal danke, mrhappiness.
Am besten ich stelle mein Problem nochmal neu, da es doch ein wenig anders als der Eingangspost ist.
Ich möchte die
sortpos von zwei Einträgen ändern -- eigentlich Einträge, die in einer Tabelle aufgelistet werden, nach oben bzw. unten verschieben
Hier mein Anfangscode: (der komplette Code würde doch etwas den Rahmen sprengen, deshalb stark gekürzt

)
PHP-Code:
<table>
<?
$result = mysql_query("SELECT * FROM $table_leserliste WHERE austraeger='".$name."' ORDER BY sortpos");
while ($data = mysql_fetch_array($result))
{
?>
<tr>
<td><? echo $data["name"]; ?></td>
<td><? echo $data["adresse"]; ?></td>
<td><? echo $data["telefonnr"]; ?></td>
<? // usw....... ?>
<td><? // HIER soll jetzt ein Link zum Vertauschen der [FONT=courier new]sortpos[/FONT] hin ?>nach oben</td>
<td>nach unten (ebenfalls als Link) <-- WIE?</td>
</tr>
<?
} //while ende
?>
</table>
So, das ist also die Situation.
Mein Versuch sieht im Moment so aus -- dabei sende ich die zwei IDs der Einträge an eine extra Datei, die dann die
sortpos vertauscht.
Erstmal die zwei Tabellenspalten aus meinem o.g. Script ersetzt:
PHP-Code:
<td><?
// herausfinden, welche ID die Einträge dadrüber/dadrunter haben
$pos = $data["sortpos"];
$res = mysql_query("SELECT * FROM $table_leserliste WHERE austraeger = '".$name."'
AND sortpos < '".$pos."' LIMIT 1");
$IDminus = mysql_fetch_array($res);
// Link zur Änderung der sortpos
if($IDminus != "") { ?>
<a href="admin_leserliste_sort.php?action=change&id1=
<? echo $data["id"]; ?>&id2=<? echo $IDminus["id"]; ?>">nach oben</a>
<? } ?>
</td>
<td>
<?
// nach unten
$res = mysql_query("SELECT * FROM $table_leserliste WHERE austraeger = '".$name."'
AND sortpos > '".$pos."' LIMIT 1");
$IDplus = mysql_fetch_array($res);
// Link zur Änderung der sortpos
if($IDplus != "") { ?>
<a href="admin_leserliste_sort.php?action=change&id1=
<? echo $data["id"]; ?>&id2=<? echo $IDplus["id"]; ?>">nach unten</a>
<? } ?>
</td>
Meine Idee war also: Ich übergebe die aktuelle ID und die ID, mit der die erste ID vertauscht werden soll, an
admin_leserliste_sort.php, wo dann der "sortpos-Tausch" stattfindet.
So, als Problem hat sich aber herausgestellt, dass nicht immer die korrekte
id übergeben wird!!
Sprich, so bringt mir der Code nichts, obwohl er eigentlich funktioniert. Manchmal werden halt ganz andere Tabelleninhalte vertauscht, als ich wollte.
Und noch der Auszug aus der
admin_leserliste_sort.php: (das Vertauschen der sortpos funktioniert soweit auch!)
PHP-Code:
switch ($action)
{
default:
break;
case "change":
$id1result = mysql_query("SELECT * FROM $table_leserliste WHERE id='".$id1."' LIMIT 1");
$id1data = mysql_fetch_array($id1result);
$id2result = mysql_query("SELECT * FROM $table_leserliste WHERE id='".$id2."' LIMIT 1");
$id2data = mysql_fetch_array($id2result);
$sortpos1 = $id1data["sortpos"];
$sortpos2 = $id2data["sortpos"];
mysql_query("UPDATE $table_leserliste SET sortpos='".$sortpos2."' WHERE id='".$id1."'");
mysql_query("UPDATE $table_leserliste SET sortpos='".$sortpos1."' WHERE id='".$id2."'");
echo "done.";
break;
} // Switch ende
Wie müssen die zwei Tabellen-Links (siehe 1. code) also nun richtig aussehen?
Thx & Greetz