Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Pobieranie i edycja rekordów z bazy
Forum PHP.pl > Forum > Przedszkole
rossecki
Witam, to jest mój pierwszy prost i od razu zgłaszam się z wielkim problemem :<, otóż w ramach nauki chciałem poszerzyć swoje możliwości o pisanie stron z php oraz stron które będą współpracować z mysql..
Zamysł był taki aby spróbować stworzyć mini portal.. (tylko do nauki nie w celach komercyjnych haha.gif) no więc szablon i cała strona wyszła całkiem dobrze, (oparta na html i php(menu i wszystkie rzeczy które będą mogły ulec zmianie = łatwiejsza edycja zmiana 1/2 zmiennych i wszystko ładnie zaskoczy smile.gif) Niestety problem się pojawił kiedy próbowałem napisać "zaplecze", czyli stronę która będzie pod hasłem i za pomocą tylko której będzie można dokonać zmian w bazie danych (dodać wartości, wyświetlić wszystkie, łatwo między nimi nawigować, edytować, usuwać).

I tak dodawanie rekordów udało mi się opanować + klasy w php (po wielkich bólach ale co tam).
Potem przyszła pora na wypisywanie danych (też udało się z pomocą paru poradników + ostatecznie własna inwencja) pokonać problem.

i to jest kod na wypisywanie
Kod
<html>
<head>
<title>zaplecze</title>
</head>
<style>
#main a { color: black; }
</style>
<body>
<div id="main">
<table border="1" width="98%" cellspacing="0" cellpadding="0" bordercolorlight="#000000">
<tr>
<td width="96%" colspan="6" bgcolor="#C0C0C0">
<p align="center"><b><font size="2">Kategorie</font></b></td></tr>
<tr>
<td width="10%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="2"> ID</font></td>
<td width="20%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="2">Nazwa</font></td>
<td width="20%" align="center" bgcolor="#E0E0E0">
<font size="2">Link</font></td>
<td width="44%" align="center" bgcolor="#E0E0E0">
<font size="2">Opis</font></td>
<td width="6%" align="center" bgcolor="#E0E0E0">
<font size="2">Modyfikuj</font></td>
<?php
include('connection.php');  
connection();  
$zapytanie = "SELECT * FROM seriale ORDER BY id";
$wykonaj = mysql_query ($zapytanie)
or die('Błąd zapytania');
  
while($wiersz=mysql_fetch_array ($wykonaj))
{ echo
"<tr>
<td>".$wiersz['id']."</td>
<td>".$wiersz['name']."</td>
<td>".$wiersz['link']."</td>
<td>".$wiersz['opis']."</td>
<td><a href=\"zaplecze.php?go=2?a=del&id={$wiersz[0]}\">DEL</a>
       <a href=\"zaplecze.php?go=2?a=edit&id={$wiersz[0]}\">EDIT</a>
       </td>
</tr>";
}


I ten kod bardzo dobrze działa.. wypisuje tak jak chcę to wszystko.. niestety problem pojawia się gdy chcę dodać funkcję edycji + usuwania (też z poradnika i próba przekształcenia pode mnie).
I tu nie wiem co się dzieje.. na stronie wyrzuca błąd
Kod
Notice: Undefined index: a in C:\xampp\htdocs\ML\zaplecze\2.php on line 45

Notice: Undefined index: id in C:\xampp\htdocs\ML\zaplecze\2.php on line 46


Czyli rozumiem że problem jest z tym
Kod
$a = trim($_REQUEST['a']);
$id = trim($_GET['id']);


Ale nie mam kompletnie pojęcia czemu on wyrzuca taki błąd :<

wydawało mi się iż ten <a href> dobrze definiuje wartość a , a id mamy wcześniej..


Więc mam taką prośbę.. określenie co jest złego w tym kodzie.. może to jest jakaś drobnostka
Sam zaczynam teraz przekopywać forum i może znajdę odpowiedź smile.gif
Kod
<html>
<head>
<title>zaplecze</title>
</head>
<style>
#main a { color: black; }
</style>
<body>
<div id="main">
<table border="1" width="98%" cellspacing="0" cellpadding="0" bordercolorlight="#000000">
<tr>
<td width="96%" colspan="6" bgcolor="#C0C0C0">
<p align="center"><b><font size="2">Kategorie</font></b></td></tr>
<tr>
<td width="10%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="2"> ID</font></td>
<td width="20%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="2">Nazwa</font></td>
<td width="20%" align="center" bgcolor="#E0E0E0">
<font size="2">Link</font></td>
<td width="44%" align="center" bgcolor="#E0E0E0">
<font size="2">Opis</font></td>
<td width="6%" align="center" bgcolor="#E0E0E0">
<font size="2">Modyfikuj</font></td>
<?php
include('connection.php');  
connection();  
$zapytanie = "SELECT * FROM seriale ORDER BY id";
$wykonaj = mysql_query ($zapytanie)
or die('Błąd zapytania');
  
while($wiersz=mysql_fetch_array ($wykonaj))
{ echo
"<tr>
<td>".$wiersz['id']."</td>
<td>".$wiersz['name']."</td>
<td>".$wiersz['link']."</td>
<td>".$wiersz['opis']."</td>
<td><a href=\"zaplecze.php?go=2?a=del&id={$wiersz[0]}\">DEL</a>
       <a href=\"zaplecze.php?go=2?a=edit&id={$wiersz[0]}\">EDIT</a>
       </td>
</tr>";
}

$a = trim($_REQUEST['a']);
$id = trim($_GET['id']);

if($a == 'edit' and !empty($id)) {
    /* zapytanie do tabeli */
    $wynik = mysql_query("SELECT * FROM seriale WHERE
    id='$id'")
    or die('Błąd zapytania');
    
        $wiersz = mysql_fetch_assoc($wykonaj);
        
        echo '<form action="index.php" method="post">
        <input type="hidden" name="a" value="save" />
        <input type="hidden" name="id" value="'.$id.'" />
        imię:<br />
        <input type="text" name="id"
        value="'.$wiersz['id'].'" /><br />
        e-mail:<br />
        <input type="text" name="name"
        value="'.$wiersz['name'].'" /><br />
        <input type="text" name="link"
        value="'.$wiersz['link'].'" /><br />
        <input type="text" name="opis"
        value="'.$wiersz['opis'].'" /><br />
        <input type="submit" value="popraw" />
        </form>';
    }  
elseif($a == 'save') {
    $id = $_POST['id'];
    $name = trim($_POST['name']);
    $link = trim($_POST['link']);
    $opis = trim($_POST['opis']);
    @mysql_query("UPDATE seriale SET id='$id',
    name='$name', link='$link',opis='$opis' WHERE id='$id'")
    or die('Błąd zapytania');
    echo 'Dane zostały zaktualizowane';
}
?>  
</table> </div></body> </html>
fragov
<a href=\"zaplecze.php?go=2?a=del&amp;id={$wiersz[0]}\">DEL</a>
<a href=\"zaplecze.php?go=2?a=edit&amp;id={$wiersz[0]}\">EDIT</a>

zaplecze.php?klucz=wartosc&klucz2=wartosc2&kluczn=wartnoscn
Tak na szybko & zamiast wielu ?, ? dajesz raz.
rossecki
tyle że zaplecze.php?go=2 to jest podstrona... i niestety jest błąd jak zmieniam na:
<a href=\"zaplecze.php?go=2a=del&id={$wiersz[0]}\">DEL</a>
<a href=\"zaplecze.php?go=2a=edit&id={$wiersz[0]}\">EDIT</a>

I tu jest właśnie takie coś czego nie rozumiem.. bo chcialem uzyskać taki efekt.. wyświetla się lista z tabelą... jak klikam edit.. to dany wiersz zmienia się na "edytowalny" wiersz.. z przyciskiem save który robi update...
i teraz się zastanawiam... w jaki sposób mam to osiągnąć.. tongue.gif bo tak jak teraz wkleiłem.. to nie ma opcji żeby zadziałało... Bo chcę żeby znowu wczytało stronę.. tylko żeby dla x wiersza były inne parametry biggrin.gif

EDIT 1//
Dumbass ze mnie.. usiadłem i jeszcze raz przeczytałem i poprawiłem biggrin.gif
Kod
<a href=\"zaplecze.php?go=2&a=del&id={$wiersz[0]}\">DEL</a>
<a href=\"zaplecze.php?go=2&a=edit&id={$wiersz[0]}\">EDIT</a>

EDIT 2//

Teraz siedzę i męczę się jak zrobić żeby on wczytał wszystko do przygotowanego formularza... a po kliknięciu popraw wykonał update danego wiersza... :/
Poprawka, siedzę i zastanawiam się ocb z błędami...
Kod
Notice: Undefined index: a in C:\xampp\htdocs\ML\zaplecze\2.php on line 45

Notice: Undefined index: id in C:\xampp\htdocs\ML\zaplecze\2.php on line 46


i zastanawiam się co z nimi zrobić :/

/// EDIT 3...
Pogrzebałem w kodzie.. zmieniłem składnię.. tzn id jest auto increment aby zawsze miał stałą wartość dla danego wiersza(wynik nauki jak to działa)... już wiem ocb z $_GET.. przy stronach (a w linku definiuje wartość zmiennej a.. co oznacza że może zostać wykonana instrukcja dla takiej wartości zmiennej (u mnie edit albo delete), delete bardzo dobrze działa.. niestety jest natomiast dalej problem z edit.. owszem stworzyłem kolejny formularz i plik wykonawczy formularza //useriale.php//... niestety dalej nie chce on wypisać obecnych wartości do formularza... + nie działa update :/ może to dlatego że form action odnosi się do pliku wykonawczego do którego nijak nie przekazuję wartości id.. więc wykonuje on rozkaz UPDATE dla wiersza o id=0 który nie istnieje smile.gif, zaraz sprawdzę czy jeżeli form action będzie ustalone na tą stronę i tutaj wkleję ten plik wykonawczy czy to pomoże smile.gif
Proszę o luknięcie w kod i uwagi czy są jakieś błędy składniowe, estetyczne całego kodu itd.. jak mam się uczyć to chcę się nauczyć poprawnie smile.gif

Kod
<?php
include('connection.php');  
connection();  
$zapytanie = "SELECT * FROM seriale ORDER BY id";
$wykonaj = mysql_query ($zapytanie)
or die('Błąd zapytania');
  
while($wiersz=mysql_fetch_array ($wykonaj))
{ echo
"<tr>
<td>".$wiersz['id']."</td>
<td>".$wiersz['name']."</td>
<td>".$wiersz['link']."</td>
<td>".$wiersz['opis']."</td>
<td><a href=\"zaplecze.php?go=2&a=edit&id={$wiersz[0]}\">EDIT</a>
<a href=\"zaplecze.php?go=2&a=del&id={$wiersz[0]}\">DEL</a>
       </td>
</tr>";
}

$a = trim($_REQUEST['a']);
$id = trim($_GET['id']);

if($a == 'edit' and !empty($id)) {
    /* zapytanie do tabeli */
    $wynik = mysql_query("SELECT * FROM seriale WHERE
    id='$id'")
    or die('Błąd zapytania');
    
        $wiersz = mysql_fetch_assoc($wykonaj);
        
        echo '<form action="useriale.php" method="post">
        <input type="hidden" name="a" value="save" />
        <table width="100%" border="0">
        <tr>
        <td width="185">Tytuł Serialu<br />
        <input name="name" type="text" value="'.$wiersz['name'].'"></td>
        <td width="194">Link do zdjęcia<br />
        <input name="link" type="text" value="'.$wiersz['link'].'"></td>
        <td width="300">Opis<br />
        <textarea name="opis" cols="40" rows="5"></textarea>
        <input type="submit" value="popraw" />
        <input type=reset>
        </form>'
        
       ;
    }  
elseif($a == 'save') {
    /* odbieramy zmienne z formularza */
    $id = $_POST['id'];
    $name = trim($_POST['name']);
    $link = trim($_POST['link']);
    $opis = trim($_POST['opis']);
    /* uaktualniamy tabelę test */
    @mysql_query("UPDATE seriale SET id='$id',
    name='$name', link='$link',opis='$opis' WHERE id='$id'")
    or die('Błąd zapytania');
    echo 'Dane zostały zaktualizowane';
}

elseif($a == 'del' and !empty($id)) {
    
    /* usuwamy rekord */
    mysql_query("DELETE FROM seriale WHERE id='$id'")
    or die('Błąd zapytania: '.mysql_error());
    
    echo 'Rekord został usunęty z bazy';
}
?>


Rozwiązałem problem smile.gif Można zamknąć...
Wystarczyło ID dać jako niezmienny atrybut hiden do formularza i w oddzielnym pliku wykonawczym wykonywać update smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.