Question

Je crée un outil de gestion de la bannière qui utilise pour stocker ses données une fois ajouté une base de données SQL. il y a un onglet qui montre pour chaque bannière dans cette base de données mise à jour et le bouton de suppression. Ces boutons sont créés dans une boucle à base de PHP donc je vais avoir une quantité X de mise à jour et des boutons de suppression.

en fonction du bouton i presse je vais aller à une vieuw de mise à jour de l'élément wherunder le bouton de mise à jour a été cliqué.

Le problème que je rencontre depuis ces boutons ont tous le même nom que je ne peux pas distinguer quel bouton a été poussé. Chaque élément de la DB a en ROWID, mais je ne peux pas comprendre comment obtenir l'ID une fois u appuyez sur le bouton ...

Voici le code de la façon dont ces boutons sont générés.

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);

Je me demandais si quelqu'un a une idée sur la façon de distinguer ces boutons. Peut-être un facteur caché que je peux lire ci-dessous? (Ne sais pas si une telle chose existe)

Cordialement

Était-ce utile?

La solution

Vous pouvez envelopper toutes les opérations par ligne sous une forme qui a une input type="hidden" value="$id" contenant l'ID de l'élément, ou utiliser un action="/update?id=$id" par formulaire, ou, si vous voulez coller à une grande forme, vous pouvez utiliser name="update[$id]" pour le soumettre bouton.

Autres conseils

D'abord, au lieu d'appeler les boutons un terme générique comme « opération », je vous conseille de les appeler par ce qu'ils font, à savoir « mise à jour » et « supprimer ». Cela vous permet de découpler la fonction du bouton de ce que l'étiquette est affiché sur le bouton.

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

Vous voulez vérifier quel bouton a été frappé à l'aide array_key_exists ou isset pour déterminer quel bouton a été pressé.

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

En ce qui concerne l'identification quel élément le bouton fait référence, je suppose que toutes vos bannières ont une certaine façon de les identifier de manière unique (une clé primaire, normalement une valeur numérique). Si vous utilisez la syntaxe [support carré] au nom du bouton, vous pouvez identifier la ligne du bouton enfoncé.

<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
}

J'ai nombres utilisés comme identifiants ici, mais vous pouvez utiliser quoi que ce soit que vous utilisez pour distinguer une bannière d'une autre. Je doute que vous pouvez utiliser la ponctuation ou des espaces dans vos identifiants cependant, autres que underscore, vous aurez donc besoin de garder cela à l'esprit. update[abc] et update[abc_def] devraient être bien, mais je ne pouvais pas se porter garant pour update[abc def] ou update[abc-def]. Dans l'ensemble, en utilisant des identifiants numériques vous permettra d'économiser beaucoup de maux de tête inutiles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top