"; echo "".$" />

Эхо удалить ссылку в php

php

697 просмотра

4 ответа

90 Репутация автора

У меня есть вопрос, касающийся функции удаления в php. Советник PHP Я настоящий нуб в этом.

Я хочу сделать ссылку на удаление в цикле php.

Это мой home.php:

while($row = $result->fetch_assoc()) {
    echo "<tr>";
    echo "<td class='info-item'>".$row["userID"]."</td>";
    echo "<td class='info-item'>".$row["userName"]." </td>";
    echo "<td class='info-item'>".$row["userLast"]."</td>";
    echo "<td class='info-item'>".$row["userDegree"]."</td>";
    echo "<td class='info-item'>".$row["userOrganization"]."</td>";
    echo "<td class='info-item'>".$row["userIndustry"]."</td>";
    echo "<td class='info-item'>".$row["userAddress-1"]."</td>";
    echo "<td class='info-item'>".$row["userAddress-1"]."</td>";
    echo "<td class='info-item'><a href='$delete'>Link</a></td>";
}

Эта строка:

echo "<td class='info-item'><a href='$delete'>Link</a></td>";

не работает.

ибо $deleteя использую это поверх моего скрипта:

$delete = "delete.php";

Это идет к delete.php, который выглядит следующим образом.

ob_start();
include("dbconfig.php");
if(isset($_GET['userID'])!="") {
    $delete=$_GET['userID'];
    $delete=mysql_query("DELETE FROM tbl_users WHERE userID='$delete'");
    if($delete)
        header("Location:index.php");
    else
        echo mysql_error();
}
ob_end_flush();

Но, кажется, ничего не происходит в отношении удаления определенного идентификатора, который я нажал.

Пожалуйста помоги.

Автор: Dionoh Источник Размещён: 18.07.2016 09:30

Ответы (4)


0 плюса

6966 Репутация автора

Решение

Ваше удаление не работает, потому что оно избыточно и статично. Вы должны сделать его динамическим, по крайней мере, добавив идентификатор пользователя в delete.php. Это idбудет затем использоваться для определения того, какие записи для удаления ...

    <?php
        while($row = $result->fetch_assoc()) {
            // GENERATE AN ID BASED URL FOR THE DELETE
            // THIS WOULD READ SOMETHING LIKE: "delete?id=1" 
            // AND THE ID WOULD BE UNIQUE ACROSS EACH ROW....
            // YOU CAN THEN USE THE ID ($_GET['userID'] TO DETERMINE WHICH USER
            // ADD userId WHICH RECORD YOU HAVE TO DELETE....
            $delete = "delete.php?userID="  . $row["userID"];
            echo "<tr>";
            echo "<td class='info-item'>"   . $row["userID"]            . "</td>";
            echo "<td class='info-item'>"   . $row["userName"]          . " </td>";
            echo "<td class='info-item'>"   . $row["userLast"]          . "</td>";
            echo "<td class='info-item'>"   . $row["userDegree"]        . "</td>";
            echo "<td class='info-item'>"   . $row["userOrganization"]  . "</td>";
            echo "<td class='info-item'>"   . $row["userIndustry"]      . "</td>";
            echo "<td class='info-item'>"   . $row["userAddress-1"]     . "</td>";
            echo "<td class='info-item'>"   . $row["userAddress-1"]     . "</td>";
            echo "<td class='info-item'><a href='{$delete}' >Delete User</a></td>";
        }

PHP:

    <?php

        // USING PDO...
        //DATABASE CONNECTION CONFIGURATION:
        defined("HOST")         or define("HOST",           "localhost");
        defined("DBASE")        or define("DBASE",          "yourDB");
        defined("USER")         or define("USER",           "root");
        defined("PASS")         or define("PASS",           "root");

        ob_start();
        if(isset($_GET['userID'])!="") {
            $userID         = $_GET['userID'];
            try {
                $dbh        = new PDO('mysql:host='.HOST.';dbname='. DBASE,USER,PASS);
                $dbh->setAttribute(PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

                $query      = "DELETE FROM `tbl_users` WHERE userID='{$userID}'";
                $stmt       = $dbh->prepare($query);
                $deleteOK   = $stmt->execute();

                if ($deleteOK) {
                    header("Location:index.php");
                }

            }catch(PDOException $e){
                throw new Exception($e->getMessage());
            }
        }
        ob_end_flush();
Автор: Poiz Размещён: 18.07.2016 09:33

0 плюса

2691 Репутация автора

Вы должны включить идентификатор пользователя в ссылку:

echo "<td class='info-item'><a href='$delete?userID={$row["userID"]}'>Link</a></td>";

Кроме того, ваш код подвержен внедрению SQL и использует функции mysql_ *, которые больше не будут поддерживаться в будущем. Замените их функциями из классов mysqli или PDO.

Автор: syck Размещён: 18.07.2016 09:35

0 плюса

139935 Репутация автора

Когда вы отправляете элемент управления на другую страницу, $deleteпеременная не будет передана. Поэтому всегда лучше использовать строку запроса. Моим лучшим решением будет:

  • Получить идентификатор из базы данных.
  • Добавьте идентификатор к ссылке.
  • Используйте, $_GETчтобы получить строку запроса записи.

home.php код:

echo "<td class='info-item'><a href='{$delete}?userID=".$row["userID"]."'>Link</a></td>";

Теперь в основном delete.php:

$delete = $_GET["userID"];

Примечание. В вашем коде много уязвимостей. Не используйте mysql_*функции, поскольку они устарели.

Автор: Praveen Kumar Purushothaman Размещён: 18.07.2016 09:36

0 плюса

901 Репутация автора

Вы не отправляете userIDсо своим URL, измените здесь.

echo "<td class='info-item'><a href='$delete?userID=".$row["userID"]."'>Link</a></td>";

Также используйте выход после headerздесь

header("Location:index.php");
exit;
Автор: Drone Размещён: 18.07.2016 09:36
Вопросы из категории :
32x32