Frage

Ich erstelle ein Banner -Management -Tool, das eine SQL -Datenbank verwendet, um seine Daten nach dem Hinzufügen zu speichern. Es gibt eine Registerkarte, die für jedes Banner in dieser Datenbank eine Update- und Löschenschaltfläche angezeigt wird. Diese Schaltflächen werden in einer PHP -basierten Schleife erstellt, sodass ich x -Menge an Update- und Löschen von Schaltflächen habe.

Jetzt, abhängig davon, welche Taste ich drücke, gehe ich zu einem Update -VieUw des Elements, der auf die Schaltfläche "Update" geklickt wurde.

Das Problem, das ich begegne, da diese Schaltflächen alle denselben Namen haben, ist, dass ich nicht unterscheiden kann, welche Taste gedrückt wurden. Jedes Element im DB hat en RowID, aber ich kann nicht herausfinden, wie ich den ID bekommt, sobald du den Knopf drückst ...

Hier ist der Code, wie diese Schaltflächen generiert werden.

do {
    $entry = $dbase->querySingle("SELECT name FROM banners where ROWID='$currentRowNumber'");

    echo "<tr>";
    echo "<td width=\"50\">". $entry ."</td>";
    echo "</tr>";

    echo "<tr>";
    echo "<td><input type=\"submit\" name=\"operation\" value=\"Update\"></td>";
    echo "<td><input type=\"submit\" name=\"operation\" value=\"Delete\"></td>";
    echo "</tr>";

    $currentRowNumber++;

} while ($dbase->querySingle("SELECT name FROM banners where ROWID='$currentRowNumber'") != NULL);

Ich habe mich gefragt, ob jemand eine Idee hat, wie man diese Schaltflächen unterscheidet. Vielleicht ein versteckter Faktor, den ich unten lesen kann? (Ich weiß nicht, ob so etwas existiert)

Grüße

War es hilfreich?

Lösung

Sie können alle Vorgänge pro Zeile in einem Formular mit einem einwickeln input type="hidden" value="$id" enthalten die ID des Elements oder verwenden Sie eine action="/update?id=$id" pro Formular oder, wenn Sie sich an eine große Form halten möchten, können Sie verwenden name="update[$id]" Für die Schaltfläche Senden.

Andere Tipps

Anstatt die Schaltflächen als "Operation" als "Operation" aufzurufen, raten Sie, sie nach dem zu nennen, was sie tatsächlich tun, nämlich "Update" und "Löschen". Auf diese Weise können Sie die Funktion der Schaltfläche von dem, was Etikett in der Schaltfläche angezeigt wird, entkoppeln.

<input type="submit" name="update" value="Update banner" />
<input type="submit" name="delete" value="Remove banner" />

Sie prüfen, welche Taste mit Array_key_exists oder ISSET gedrückt wurden, um festzustellen, welche Taste gedrückt wurde.

if (isset ($_POST ['update']))
{
}
else if (isset ($_POST ['delete']))
{
}
else
{
    // No button was pressed
}

In Bezug auf die Ermittlung, welcher Element die Schaltfläche bezieht, gehe ich davon aus, dass alle Ihre Banner eine Möglichkeit haben, sie einzigartig zu identifizieren (ein Primärschlüssel, normalerweise ein numerischer Wert). Wenn Sie im Namen der Taste die Syntax für die [Quadratklammer] verwenden, können Sie die Zeile für die gedrückte Taste identifizieren.

<input type="submit" name="update[1]" value="Update banner" />
<input type="submit" name="delete[1]" value="Remove banner" />
<input type="submit" name="update[23]" value="Update banner" />
<input type="submit" name="delete[23]" value="Remove banner" />
<input type="submit" name="update[153]" value="Update banner" />
<input type="submit" name="delete[153]" value="Remove banner" />

if (isset ($_POST ['update']))
{
    $rowToUpdate = key ($_POST ['update']);
}
else if (isset ($_POST ['delete']))
{
    $rowToDelete = key ($_POST ['delete']);
}
else
{
    // No button was pressed
}

Ich habe hier Zahlen als Bezeichner verwendet, aber Sie können alles verwenden, was Sie verwenden, um ein Banner von einem anderen zu unterscheiden. Ich bezweifle, dass Sie Interpunktion oder Räume in Ihren Bezeichnern verwenden könnten, abgesehen von Unterstrichen, also müssen Sie das berücksichtigen. update[abc] und update[abc_def] sollte in Ordnung sein, aber ich konnte nicht bürgen update[abc def] oder update[abc-def]. Alles in allem sparen Sie viele unnötige Kopfschmerzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top