Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Wyświetlanie i edycja rekordów z bazy MySQL
afgan227
post 12.01.2015, 18:28:14
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.02.2014

Ostrzeżenie: (0%)
-----


Witajcie.

Aktualnie pracuję nad stroną, w której chcę mieć możliwość dodawania, usuwania ,wyświetlenia oraz edycji rekordów z bazy MySql. Jak na razie poradziłem sobie z utworzeniem formularzu , który dodaje rekordy do bazy.

  1. <?php
  2.  
  3. $Marka = $_POST['Marka'];
  4. $Model = $_POST['Model'];
  5. $NrRej = $_POST['NrRej'];
  6. $LiczbaOsob = $_POST['LiczbaOsob'];
  7.  
  8. if($Marka && $Model && $NrRej && $LiczbaOsob)
  9. {
  10.  
  11.  
  12. $polaczenie = @mysql_connect('localhost', 'root', 'XXX')
  13. or die('Brak połączenia z serwerem MySQL');
  14. $db = @mysql_select_db('XXX', $polaczenie)
  15. or die('Nie mogę połączyć się z bazą danych');
  16.  
  17.  
  18. $zapytanie = @mysql_query("INSERT INTO autokar SET Marka='$Marka', Model='$Model', NrRej='$NrRej', LiczbaOsob='$LiczbaOsob'");
  19.  
  20. if($zapytanie) echo "Rekord został dodany poprawnie";
  21. else echo "Błąd nie udało się dodać nowego rekordu";
  22.  
  23. mysql_close($polaczenie);
  24. }
  25.  
  26. ?>


Kolejnym postępem w pracy było stworzenie tabelki, która wyświetla nam wszystkie rekordy w danej tabeli bazy.

  1. <?php
  2.  
  3. $wynik = mysql_query("SELECT * FROM autokar")
  4. or die('Błąd zapytania');
  5.  
  6. if(mysql_num_rows($wynik) > 0)
  7. {
  8. echo "<table cellpadding=\"10\" cellspacing=\"1\" border=\"1\" width=\"100%\" >";
  9. echo '<tr style="font-size:18px; height:60px; text-align:center" >';
  10. echo "<td><strong>ID</strong></td>";
  11. echo "<td><strong>Marka</strong></td>";
  12. echo "<td><strong>Model</strong></td>";
  13. echo "<td><strong>Numer rejestracyjny</strong></td>";
  14. echo "<td><strong>Maksymalna liczba pasażerów</strong></td>";
  15. echo "</tr>";
  16.  
  17. while($r = mysql_fetch_array($wynik))
  18. {
  19. echo '<tr style="font-size:14px; height:30px; text-align:center" >';
  20. echo "<td>".$r[0]."</td>";
  21. echo "<td>".$r[1]."</td>";
  22. echo "<td>".$r[2]."</td>";
  23. echo "<td>".$r[3]."</td>";
  24. echo "<td>".$r[4]."</td>";
  25. echo "</tr>";
  26. }
  27.  
  28. echo "</table>";
  29. }
  30.  
  31. ?>



Niestety nie wiem jak rozwiązać temat usuwania i edycji rekordów :< Znam składnie sql. Programowałem troche w c#. Niestety co do PHP to 6dzień w tym siedze.
Chciałbym, żeby to jakoś wyglądało i miało ręce i nogi. Musi to być w miarę intuicyjne.

1 ) Czy można np dodać nową kolumnę do tej mojej tabelki z danymi , w której miałbym opcję "usun"?

Coś 'a la' :

Kolumna 1 | Kolumna 2 | Kolumna 3 | Kolumna 4
ID 1 | cos 1 | cos 1 | kasuj
ID 2 | cos 2 | cos 2 | kasuj
ID 3 | cos 3 | cos 3 | kasuj

Jeżeli tak to w jaki sposób to okiełznać?

Powinienem wtedy dodać jakby hiperłącze do podstrony ze skryptem usuwającym ?

  1.  
  2. echo "<td><a href="link z kodem, do którego przypisujemy ID z tego wiersza, w którym jest kasuj">KASUJ</a></td>";
  3.  



2) A jeśli chodzi o edycję

Taki pomysł mam. Wrzucić do ComboBoxa dane. ( to wiem , że się da)
Po wybraniu jakiejś z opcji, automatycznie dane uzupełniły by formularz, w którym można by było dokonać edycji.. (Czy to da się zrobić?)


Go to the top of the page
+Quote Post
sf
post 12.01.2015, 18:57:02
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Cytat(afgan227 @ 12.01.2015, 18:28:14 ) *
  1. echo "<td><a href="link z kodem, do którego przypisujemy ID z tego wiersza, w którym jest kasuj">KASUJ</a></td>";


tak, właśnie w ten sposób, robisz np. <a href="index.php?controller=autokary&action=delete&id=3">usuń</a>

Cytat
2) A jeśli chodzi o edycję

Taki pomysł mam. Wrzucić do ComboBoxa dane. ( to wiem , że się da)
Po wybraniu jakiejś z opcji, automatycznie dane uzupełniły by formularz, w którym można by było dokonać edycji.. (Czy to da się zrobić?)


z edycują są dwa podejścia, jedno z wykorzystaniem ajax, ale to sobie na razie podarujmy, drugie to tworzysz link (podobnie jak przy usuwaniu, tylko dajesz akcje np. edit ) i przechodzisz na podstronę gdzie masz formularz do edycji, dane domyślne uzupełniasz z bazy danych, czyli robisz select * from nazwa_tabeli where id = przekazany_id_przez_get_lub_post

btw. skoro programowałeś w c# i nie są Ci obce obiekty używaj http://php.net/pdo do operacji na bazie danych

Ten post edytował sf 12.01.2015, 18:58:00


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
afgan227
post 13.01.2015, 18:31:23
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.02.2014

Ostrzeżenie: (0%)
-----


Dziękuję za szybką odpowiedź i pomoc.
Biorę się już do roboty smile.gif

Mam jeszcze jednak 2 pytania.

Tak wygląda mój skrypt.

  1. <?php
  2.  
  3. $wynik = mysql_query("SELECT * FROM autokar")
  4. or die('Błąd zapytania');
  5. $ile=mysql_num_rows($wynik);
  6.  
  7. if(mysql_num_rows($wynik) > 0)
  8. {
  9. echo "<table cellpadding=\"10\" cellspacing=\"1\" border=\"1\" width=\"100%\" >";
  10. echo '<tr style="font-size:18px; height:60px; text-align:center" >';
  11. echo "<td><strong>ID</strong></td>";
  12. echo "<td><strong>Marka</strong></td>";
  13. echo "<td><strong>Model</strong></td>";
  14. echo "<td><strong>Numer rejestracyjny</strong></td>";
  15. echo "<td><strong>Maksymalna liczba pasażerów</strong></td>";
  16. echo "<td><strong>Edytuj dane</strong></td>";
  17. echo "<td><strong>Dodaj dane</strong></td>";
  18. echo "</tr>";
  19.  
  20. while($r = mysql_fetch_array($wynik))
  21. {
  22. echo '<tr style="font-size:14px; height:30px; text-align:center" >';
  23. echo "<td>".$r[0]."</td>";
  24. echo "<td>".$r[1]."</td>";
  25. echo "<td>".$r[2]."</td>";
  26. echo "<td>".$r[3]."</td>";
  27. echo "<td>".$r[4]."</td>";
  28. echo '<td><a href="autokary.php?a=del&amp;id='.$r[0].'">Usun</a> <a href="?a=edit&amp;id='.$r[0].'">Zmień</a></td>';
  29. echo '<td rowspan='$ile'><a href="aZarzadzanie.php">Dodaj</a></td>';
  30. echo "</tr>";
  31. }
  32.  
  33. isset($_GET['a']) and $a = $_GET['a'];
  34. isset($_GET['id']) and $id= $_GET['id'];
  35.  
  36. if($a == 'del' and !empty($id))
  37. {
  38. mysql_query("DELETE FROM autokar WHERE ID='$id'")
  39. or die('Błąd zapytania: '.mysql_error());
  40.  
  41. }
  42.  
  43.  
  44.  
  45.  
  46. echo "</table>";
  47. }
  48.  
  49. ?>


1) Chcę aby ostatnia kolumna była scalona w pionie. Zdaje się , że do liczenia linijek służy "mysql_num_rows". A do scalania komórek w tabeli właściwość "rowspan".


Niestety błędu nie wyrzuca, ale też nie scala. Powtarza "Dodaj" w każdej linijce...

2) Generalnie skrypt działa. Aczkolwiek wyrzuca ostrzeżenie :

Notice: Undefined variable: a in C:\xampp\htdocs\Biuro\autokary.php on line 49

Konkretnie chodzi o linię :

  1.  
  2. if($a == 'del' and !empty($id))


Co może być tego przyczyną?
Go to the top of the page
+Quote Post
sf
post 13.01.2015, 20:42:44
Post #4





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


błąd tak jak jest napisane, nie ma zdefiniowanej zmiennej $a

isset($_GET['a']) and $a = $_GET['a']; // ten zapis jest dziwny, może chodziło Ci o coś takiego :

$a = isset($_GET['a']) ? $_GET['a'] : null; // jeśli ustawiona jest zmienna 'a' w adresie url to przypisz do zmiennej $a jej wartość, w innym przypadku ustaw null

co do rowspan, to zadziała to tylko w przypadku gdy użyjesz tego jeden raz, a nie n razy, html wynikowy powinien być taki:

Kod
<table>
    <tr>
        <td>a1</td>
        <td>a2</td>
        <td rowspan="3">dodaj</td>
    </tr>
    <tr>
        <td>b1</td>
        <td>b2</td>
    </tr>
    <tr>
        <td>c1</td>
        <td>c2</td>
    </tr>    
    </table>


u Ciebie jest taki:

Kod
<table>
    <tr>
        <td>a1</td>
        <td>a2</td>
        <td rowspan="3">dodaj</td>
    </tr>
    <tr>
        <td>b1</td>
        <td>b2</td>
        <td rowspan="3">dodaj</td>
    </tr>
    <tr>
        <td>c1</td>
        <td>c2</td>
        <td rowspan="3">dodaj</td>
    </tr>    
    </table>


ponadto w linijce

Kod
echo '<td rowspan='$ile'><a href="aZarzadzanie.php">Dodaj</a></td>';


jest błąd, powinno być:

Kod
echo '<td rowspan="' . $ile . '"><a href="aZarzadzanie.php">Dodaj</a></td>';


dodatkowo sprawdzasz w pętli czy ustawiona jest zmienna $_GET['a'] oraz czy możesz ją usunąć, powinieneś to wyciągnąć poza pętlę while, już nie wspominam o tym, że przekazywanie w ten sposób zmiennych do zapytań jest dziurawe i spowoduje ataki na Twoją stronę wink.gif

Ten post edytował sf 13.01.2015, 20:49:00


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 07:30