Przycisk edycji/usunięcia do każdego rekordu z listy

0

Witam mam taki problem jako początkujący, przerobiłem pare kursów przetrzepałem wiele podobnych tematów niestety z mizernym skutkiem. Potrzebuję aby jak w temacie do każdego rekordu z wyświetlonej już przeze mnie listy dodać przycisk edit/delete który będzie usuwać dany rekord/wiersz. Wymagane jest żebym mógł wygląd tego przycisku mógł jakoś zastąpić obrazkiem używając styli lub jeśli macie to inną bardziej profesjonalną metodą. W kodzie jest fragment z jednego poradnika niestety wywala mi błąd: Undefined index: action in C:\xampp\htdocs\page\profil.php on line 36. Więc nie moze zrobić żadnego przekierowania ani nic. Z góry dziękuje za pomoc mam nadzieje że dobrze mi ktoś to opisze gdyż są to podstawy a widze wiele osób ma z tym problem.

<?php
session_start();
require_once 'connect.php';
?>
<!DOCTYPE html>
<html lang="pl">
    <head>
        <meta charset="UTF-8">
        <title>Moto-Arena</title>
          
    </head>
    <body>
        <?php
        echo "Witaj ". $_SESSION['user'] . " !"; 
        $login=$_SESSION['user'];
        $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
        if (mysqli_connect_errno() != 0)
        {
            echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
        }
        else 
        {
            $wynik = @$polaczenie -> query("SELECT * FROM ogloszenia WHERE login='$login'");
            if ($wynik === false){
                    echo '<p>Zapytanie nie zostało wykonane poprawnie!</p>';
                    $polaczenie -> close();
            }
            else {
                    echo '<p>Ogłoszenia:</p>';
                    while (($rekord = $wynik -> fetch_assoc()) !== null)
                    {
                        echo '<p>' . $rekord['title'] . '(' . $rekord['marka'] . '-' . $rekord['model'] . ')' .  $rekord['photo'] . ' - <a href="profil.php?action=Edytuj&amp;id='.$rekord['ID'].'">Edytuj</a><br>' . '</p>'; 
                        
                    }
                    
                    if ($_GET["action"] == "edytuj")
                    {
                        $id = $_GET["id"];

                        $result = mysql_query("SELECT * FROM tabela WHERE id = '$id' LIMIT 1") or die(mysql_error());
                        $dane = mysql_fetch_array($result);

                        echo'<form method=post action="">
                        Opis: <input type="text" name="opis" value="'.$dane[opis].'"><br>
                        Cena: <input type="text" name="opis" value="'.$dane[opis].'"><br>
                        <input type="hiddden" name="id" value="'.$id.'">|
                        <input type="hiddden" name="action" value="zapisz_zmiany">';
                    }
                    
                    $wynik -> close(); // zwolnienie pamięci
                    $polaczenie -> close();
            }
        }   
        ?>
        <br/>
        <form action="index.php" method="post">
        <input type="submit" value="Wyloguj" name="wylogowany">
        </form>
        <form action="dodajogloszenie.php" method="post">
        <br/>
        <input type="submit" value="Dodaj ogłoszenie">
        </form>
    </body>
</html> 
0

Olaboga, przepisz to w jakimś frameworku, np. Yii.

0

Jak wyżej albo chociaż użyć mysqli lub PDO zamiast przestarzałego mysql.
Koniec końców i tak jest strasznie - drabinki ifów, html pomieszany z php.

0

Niezła jazda. Dlaczego tworzysz obiekt klasy mysqli na początku kodu PHP, a potem korzystasz ze strukturalnego podejścia poprzez mysql_query? Wysoki poziom niekonsekwencji.
Poczytaj pierwsze o programowaniu obiektowym w PHP i pisz TYLKO obiektowo, bo inaczej to nie ma sensu. Chyba, że będziesz miał do zrobienia pętlę for, która wyrzuci liczby od 1 do 10. Koledzy wyżej dobrze podpowiadają, ale spróbuj najpierw samodzielnie potworzyć coś obiektowego.

Co do problemu.

Zamień:

 if ($_GET["action"] == "edytuj")

na taką instrukcję:

if(isSet($_GET["action"])) // Sprawdzenie, czy w ogóle istnieje klucz "action" w tablicy asocjacyjnej $_GET
{
 if((trim($_GET["action"]) != "") && ($_GET["action"] == "edytuj")) // Weryfikacja wartości klucza "action"
 {
     // Dalsze instrukcje
 }
}
0
Tumeg napisał(a):

Jak wyżej albo chociaż użyć mysqli lub PDO zamiast przestarzałego mysql.

A według Ciebie to co niby to jest?

vampireanon napisał(a):
        $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
        if (mysqli_connect_errno() != 0)

Inna sprawa, że raz jest mysqli a raz mysql.... :)

Dobrze masz dodany przycisk. Jeśli chcesz obrazek, to w środku dodaj tag

<img>

i po sprawie.
Błąd dotyczy czego innego, zobacz która to linijka 36. Chcesz się nauczyć programować, to nie zważaj na problemy, tylko metodą prób i błędów lokalizuj - komentarz do fragmentu kodu, i tak fragment po fragmencie dojdziesz która linijka powoduje błąd. Następnie zastanów się, co to jest, do czego miało służyć i czy w dobrym miejscu jest. Przy drzewie ifów łatwo jest się pomylić, więc zastanów się, czy można to jakoś inaczej rozwiązać (ja lubiałem switch`a - bardziej przejrzysty). Jak zlokalizujesz problem, ale nie poradzisz sobie, to zapytaj jeszcze raz.

I nie bój się pytać. Możesz trafić na osoby które zjadą Cię, ale i trafisz na osoby które pomogą. Te pierwsze często zapomniały, lub chcą zapomnieć, że kiedyś też nie wiedzieli...

A najważniejsze, na przyszłość. Nie mieszaj! Jak masz mysqli, to trzymaj się tego do końca, a nie w... mysql przy końcu dokumentu. W ogóle zapomnij, że było coś takiego jak mysql.

Ostatnia rzecz, wspomniane frameworki. Owszem, przyśpieszają, ułatwiają, itp, itd, etc.... ale jeśli chcesz się nauczyć, dobrą taktykę obrałeś na początek. Napisz z palca kod, postaraj się aby działał, zrozum go (co i dlaczego tak, a nie inaczej).. potem zacznij stosować oddzielność treści od widoku (MVC się kłania). W ten sposób dojdziesz do efektów i frameworków, które będą koniecznością.

0

Dzięki wielkie działa, dopiero zaczynam przygodę z php więc przepraszam za "burdel" na pewno zastosuje sie do waszych rad. Co do mysql i mysqli to wywalało mi różne błędy przy funkcji ?! num rows z błędem że przyjmuje wartość string. Wiele opisów na internecie jest na mysql. Ale postaram się to ogarnąć. Tak czy inaczej wielkie dzięki bo długo sie z tym męczyłem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1