Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] - Kasowanie + Aktualizacja danych
Forum PHP.pl > Forum > Przedszkole
sentinell
Witam.

Raz kolejny zapytanie, wierzę, że Wasze lepsze doświadczenie więcej wskóra, niż moja 5-ta godzina ślęczenia nad kodem.

1.) Mam listowanie produktów w bazie (to działa) dodawanie działa, kasowanie działa, lecz po skasowaniu przechodzi mi do pustej strony skryptu usun.php, a nie do tej samej strony co poniżej.
A chciałbym tak, że naciskam KASUJ i znika mi rekord i mam znowu tą samą stronę ale bez rekordu

W adresie jest : http://192.168.0.100/include/usun_produkt.php?id=7
A chciałbym aby wracało pod adres: http://192.168.0.100/indeks.php?go=lista_produktow.php



2.) Aktualizacja, wygląd jak powyżej, naciskam EDYCJA i nic się nie dzieje.
A chciałbym tak: naciskam EDYCJA i rekord leci do formularza DODAJ PRODUKT (ten sam którym dodaje produkt), tam są wczytywane rekordy na podstawie ID który jest podawany, rekordy wczytywane są do formularza, edytuję i naciskam ZAPISZ, robi się UPDATE.

Załączniki:

Indeks.php
  1. <?php
  2. $add_site = true;
  3. include "include/function.php";
  4. ?>
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  6. <html>
  7. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  8. <meta http-equiv="Reply-to" content="piotr@piotr.pl" />
  9. <meta name="Author" content="Piotr" />
  10. <head>
  11. <title><?php echo Title($_GET['go']); ?></title>
  12. <style type="text/css">
  13. <!--
  14.  
  15. body {
  16. font-family: Verdana, Arial;
  17. font-size: 12px;
  18. }
  19.  
  20. -->
  21. </style>
  22. </head>
  23. <body>
  24. <?php
  25. include("config/config.php");
  26.  
  27.  
  28. $dz_tyg = array("Sun"=>"niedziela","Mon"=>"poniedziałek","Tue"=>"wtorek","Wed"=>"środa","Thu"=>"czwartek","Fri"=>"piątek","Sat"=> "sobota");
  29. if($dz = gmdate("D")) $dz_tyg = "$dz_tyg[$dz]";
  30. $dzien = date("d");
  31. $miesiac = array(1=>"stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia");
  32. if($m = gmdate("n")) $miesiac = "$miesiac[$m]";
  33. $rok = gmdate("Y");
  34. $dz_roku = gmdate("z");
  35. $dz_roku = $dz_roku+1;
  36.  
  37. $nick = $_SESSION['nick'];
  38. $haslo = $_SESSION['haslo'];
  39. if ((empty($nick)) AND (empty($haslo))) {
  40. echo '<br>Nie byłeś zalogowany albo zostałeś wylogowany<br><a href="index.php">Strona Główna</a><br>';
  41. }
  42. $user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));
  43. if (empty($user[id]) OR !isset($user[id])) {
  44. echo '<br>Nieprawidłowe logowanie.<br>';
  45. }
  46. ?>
  47. <br>
  48. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  49. <tr>
  50. <td width="100%" colspan="3"><?php include "include/naglowek.php"; ?></td>
  51. </tr>
  52. <tr>
  53. <td width="15%" valign="top"><?php include "include/menu_lewe.php"; ?></td>
  54. <td width="70%" valign="top">
  55. <?php
  56. $go = $_GET['go'];
  57. if(!empty($go)) {
  58. if(is_file("include/$go")) include "include/$go";
  59. else echo "<br />Nie ma takiej strony :-(";
  60. }
  61. else include "include/start.php";
  62.  
  63. ?>
  64. </td>
  65.  
  66. </tr>
  67. <tr>
  68. <td width="100%" colspan="3"><?php include "include/stopka.php"; ?></td>
  69. </tr>
  70. </table>
  71. </body>
  72. </html>



Plik Usun.php
  1. <?php
  2.  
  3. include( 'config/config.php' );
  4.  
  5. $id = isSet( $_GET['id'] ) ? intval( $_GET['id'] ) : 0;
  6.  
  7. if( $id > 0 ) {
  8.  
  9.  
  10. $sth = $pdo->prepare( 'DELETE FROM hale WHERE id = :id' );
  11. $sth->bindParam( ':id', $id );
  12. $sth->execute();
  13.  
  14.  
  15. header( 'indeks.php?go=nowa_lokalizacja2.php' );
  16.  
  17. } else {
  18. header( 'indeks.php?go=nowa_lokalizacja2.php' );
  19. }
  20. ?>


Plik wyswietlający lokalizacje lista_lokalizacji.php
  1. <?php
  2. include( 'include/config/config.php' );
  3. echo '<br>';
  4. echo'<center>';
  5. echo 'Lista lokalizacji: <br>';
  6. $tbl = $pdo->query( 'SELECT * FROM `hale`' );
  7. echo '<a href="indeks.php?go=nowa_lokalizacja2.php"><input type="button" style="width: 160px" value="Nowa lokalizacja" /></a><br>';
  8. echo '<br><br>';
  9.  
  10. echo '<table border="1">';
  11.  
  12. echo '<tr>';
  13. echo '<th><center>Nazwa hali</center></th>';
  14. echo '<th><center>Miasto</center></th>';
  15. echo '<th><center>Adres</center></th>';
  16. echo '<th><center>Opcje</center></th>';
  17. echo '</tr>';
  18.  
  19. foreach( $tbl->fetchAll() as $value ) {
  20.  
  21. echo '<tr>';
  22. echo '<td>'. $value['nazwa_hali']. '</td>';
  23. echo '<td>'. $value['miasto']. '</td>';
  24. echo '<td>'. $value['adres']. '</td>';
  25. echo '<td><a href="include/usun.php?id=' . $value['id'] . '">Usun</a> | <a href="include/nowa_lokalizacja2.php?id=' . $value['id'] . '">Edytuj</a></td>';
  26.  
  27. echo '</tr>';
  28.  
  29. }
  30. echo '</table>';
  31. echo '</center>';
  32.  
  33. ?>



Formularz do którego chciałbym aby podczas aktualizowania zasysane był dane
Nowa_lokalizacja.php
  1. <?php
  2. include( 'include/config/config.php' );
  3.  
  4. if( isSet( $_POST['nazwa_hali'] ) ) {
  5. $sth = $pdo->prepare( 'INSERT INTO `hale`(`nazwa_hali`,`miasto`,`adres`) VALUES ( :nazwa_hali, :miasto, :adres)' );
  6. $sth->bindParam( ':nazwa_hali', $_POST['nazwa_hali'] );
  7. $sth->bindParam( ':miasto', $_POST['miasto'] );
  8. $sth->bindParam( ':adres', $_POST['adres'] );
  9.  
  10. $sth->execute();
  11. }
  12. $id = isSet( $_GET['id'] ) ? intval( $_GET['id'] ) : 0;
  13.  
  14. if( $id > 0 ) {
  15.  
  16.  
  17. $sth = $pdo->prepare( 'SELECT * FROM hale WHERE id = :id' );
  18. $sth->bindParam( ':id', $id );
  19. $sth->execute();
  20.  
  21. $result = $sth->fetch();
  22. }
  23. ?>
  24.  
  25.  
  26. <center>
  27. <br/>
  28. Wpisz dane nowej lokalizacji poniżej:
  29. <br/>
  30. <br/>
  31. <form method="post" action="indeks.php?go=nowa_lokalizacja2.php">
  32. <?php
  33. if( $id > 0) {
  34. echo '<input type="hidden" name="id" value="' .$id . '">';
  35. }
  36.  
  37. ?>
  38.  
  39. Nazwa hali:<br/> <input type="text" name="nazwa_hali" <?php if( isSet( $result['nazwa_hali'] )) { echo 'value="' . $result['nazwa_hali'] . '"'; } ?>><br><br>
  40. Miasto:<br/> <input type="text" name="miasto" <?php if( isSet( $result['miasto'] )) { echo 'value="' . $result['miasto'] . '"'; } ?> ><br><br>
  41. Adres:<br/> <input type="text" name="adres" <?php if( isSet( $result['adres'] )) { echo 'value="' . $result['adres'] . '"'; } ?> ><br><br>
  42.  
  43. <br>
  44. <input type="submit" value="Dodaj lokalizację" />
  45. </form>
  46. </center>
Rysh
  1. header('Location: index.php');
sentinell
Już tak próbowałem i skutek ten sam:

  1. <?php
  2.  
  3. include( 'config/config.php' );
  4.  
  5. $id = isSet( $_GET['id'] ) ? intval( $_GET['id'] ) : 0;
  6.  
  7. if( $id > 0 ) {
  8.  
  9.  
  10. $sth = $pdo->prepare( 'DELETE FROM hale WHERE id = :id' );
  11. $sth->bindParam( ':id', $id );
  12. $sth->execute();
  13.  
  14.  
  15. header('Location: indeks.php?go=nowa_lokalizacja2.php');
  16.  
  17. } else {
  18. header('Location: indeks.php?go=nowa_lokalizacja2.php');
  19. }
  20. ?>
Rysh
  1. <?php
  2. include( 'config/config.php' );
  3.  
  4. $id = isSet( $_GET['id'] ) ? intval( $_GET['id'] ) : 0;
  5.  
  6. if($id > 0) {
  7. $sth = $pdo->prepare( 'DELETE FROM hale WHERE id = :id' );
  8. $sth->bindParam( ':id', $id );
  9. $sth->execute();
  10. }
  11. header('Location: indeks.php?go=nowa_lokalizacja2.php');
  12. ?>

Co wyświetla Ci się po wykonaniu tego kodu?
sentinell
W adresie: http://192.168.0.100/include/indeks.php?go...okalizacja2.php
Sorry, the page you are looking for is not found.

Wiem gdzie jest juz błąd...
http://192.168.0.100/include/indeks.php?go=nowa_lokalizacja2.php
Tego zaznaczonego nie powinno być... bo plik USUN.php jest w katalogu INCLUDE.

ZROBIONE.

Pozostaje tylko kwestia drugiego podpunktu, z którym już ciężko mi idzie.
Rysh
A gdzie jest plik nowa_lokalizacja2.php ?
Ucz się dobrych praktyk nazywając pliki jakoś bardziej intuicyjnie edytuj.php dodaj.php
sentinell
Nowa_lokalizacja2.php jest w folderze INCLUDES -> kasowanie jest już zrobione i działa.


Pozostaje mi tylko kwestia drugie punktu, czyli UPDATE, gdzie juz wysiadam...
2.) Aktualizacja, wygląd jak powyżej, naciskam EDYCJA i nic się nie dzieje.
A chciałbym tak: naciskam EDYCJA i rekord leci do formularza NOWA_LOKALIZACJA (ten sam którym dodaje lokalizację/produkt...), tam są wczytywane rekordy na podstawie ID który jest podawany, rekordy wczytywane są do formularza, edytuję i naciskam ZAPISZ, robi się UPDATE.


Bo naciskam EDYCJA i pokazuje się:

Adres WWW: http://192.168.0.100/include/nowa_lokalizacja2.php?id=12
Warning: include(include/config/config.php): failed to open stream: No such file or directory in /volume1/web/include/nowa_lokalizacja2.php on line 2 Warning: include(): Failed opening 'include/config/config.php' for inclusion (include_path='.') in /volume1/web/include/nowa_lokalizacja2.php on line 2 Fatal error: Call to a member function prepare() on a non-object in /volume1/web/include/nowa_lokalizacja2.php on line 17

ID podaje...
W pliku niby jest sprawdzanie że jak rekord juz istnieje, to ma wpisać dane.
Oczywiście UPDATE jeszcze nie ma, ale narazie chciałem po prostu wczytać do formularza.


Cytat(Rysh @ 9.03.2016, 21:39:11 ) *
A gdzie jest plik nowa_lokalizacja2.php ?
Ucz się dobrych praktyk nazywając pliki jakoś bardziej intuicyjnie edytuj.php dodaj.php


Wiem, zrobię porządek na koniec, bo mam tu tysiące plików.
Wiesz, uczę się, jestem samoukiem, cenna uwaga!

- - - - - - - - - -

Idąc za tropem tego co ostatnio, czyli poprawiłem adres w linku:
Ale teraz pokazuje mi jakby stronę startową po zalogowaniu, a nie formularz NOWA_LOKALIZACJA2.php, tam gdzie miały być wstrzyknięte dane.

Plik LISTA_LOKALIZACJI.php
  1. <?php
  2. include( 'include/config/config.php' );
  3. echo '<br>';
  4. echo'<center>';
  5. echo 'Lista lokalizacji: <br>';
  6. $tbl = $pdo->query( 'SELECT * FROM `hale`' );
  7. echo '<a href="indeks.php?go=nowa_lokalizacja2.php"><input type="button" style="width: 160px" value="Nowa lokalizacja" /></a><br>';
  8. echo '<br><br>';
  9.  
  10. echo '<table border="1">';
  11.  
  12. echo '<tr>';
  13. echo '<th><center>Nazwa hali</center></th>';
  14. echo '<th><center>Miasto</center></th>';
  15. echo '<th><center>Adres</center></th>';
  16. echo '<th><center>Opcje</center></th>';
  17. echo '</tr>';
  18.  
  19. foreach( $tbl->fetchAll() as $value ) {
  20.  
  21. echo '<tr>';
  22. echo '<td>'. $value['nazwa_hali']. '</td>';
  23. echo '<td>'. $value['miasto']. '</td>';
  24. echo '<td>'. $value['adres']. '</td>';
  25. echo '<td><a href="include/usun.php?id=' . $value['id'] . '">Usun</a> | <a href="../indeks.php/nowa_lokalizacja2.php?id=' . $value['id'] . '">Edytuj</a></td>';
  26.  
  27. echo '</tr>';
  28.  
  29. }
  30. echo '</table>';
  31. echo '</center>';
  32.  
  33. ?>
[u]</u>
Rysh
Cytat(sentinell @ 9.03.2016, 21:55:21 ) *
  1. echo '<td><a href="include/usun.php?id=' . $value['id'] . '">Usun</a> | <a href="../indeks.php/nowa_lokalizacja2.php?id=' . $value['id'] . '">Edytuj</a></td>';

Czy na pewno indeks.php/nowa_lokalizacja2.php ?
sentinell
Wystarczyło poprawić nie listę_lokalizacji w kółko i tam szukać błędu, tylko poprawić ścieżkę do bazy w NOWA_LOKALIZACJA

- - - - - - - - - - - - - - --- - -


To zostało tylko jedno.
Nie wiem o co kaman, dane są zassane do formularza. Poprawiam np ulicę, ale dodaje rekord, a nie UPDATUJE...

  1. <?php
  2. include( 'include/config/config.php' );
  3.  
  4. if( isSet( $_POST['nazwa_hali'] ) ) {
  5.  
  6. $id = isSet( $_POST['id'] ) ? intval( $POST['id'] ) : 0;
  7.  
  8. if( $id > 0 ) {
  9. $sth = $pdo->prepare( 'UPDATE `hale` SET `nazwa_hali`=:nazwa_hali,`miasto`=:miasto,`adres`=:adres WHERE id = :id' );
  10. $sth->bindParam( ':id', $id );
  11. }else {
  12. $sth = $pdo->prepare( 'INSERT INTO `hale`(`nazwa_hali`,`miasto`,`adres`) VALUES ( :nazwa_hali, :miasto, :adres)' );
  13. }
  14.  
  15. $sth->bindParam( ':nazwa_hali', $_POST['nazwa_hali'] );
  16. $sth->bindParam( ':miasto', $_POST['miasto'] );
  17. $sth->bindParam( ':adres', $_POST['adres'] );
  18. $sth->execute();
  19. }
  20.  
  21. $idGet = isSet( $_GET['id'] ) ? intval( $_GET['id'] ) : 0;
  22.  
  23. if( $idGet > 0 ) {
  24. $sth = $pdo->prepare( 'SELECT * FROM hale WHERE id = :id' );
  25. $sth->bindParam( ':id', $idGet );
  26. $sth->execute();
  27. $result = $sth->fetch();
  28. }
  29. ?>
  30.  
  31.  
  32. <center>
  33. <br/>
  34. Wpisz dane nowej lokalizacji poniżej:
  35. <br/>
  36. <br/>
  37. <form method="post" action="indeks.php?go=nowa_lokalizacja2.php">
  38. <?php
  39. if( $idGet > 0) {
  40. echo '<input type="hidden" name="id" value="' .$idGet . '">';
  41. }
  42.  
  43. ?>
  44.  
  45. Nazwa hali:<br/> <input type="text" name="nazwa_hali" <?php if( isSet( $result['nazwa_hali'] )) { echo 'value="' . $result['nazwa_hali'] . '"'; } ?>><br><br>
  46. Miasto:<br/> <input type="text" name="miasto" <?php if( isSet( $result['miasto'] )) { echo 'value="' . $result['miasto'] . '"'; } ?> ><br><br>
  47. Adres:<br/> <input type="text" name="adres" <?php if( isSet( $result['adres'] )) { echo 'value="' . $result['adres'] . '"'; } ?> ><br><br>
  48. <br>
  49. <input type="submit" value="Zapisz" />
  50. </form>
  51. </center>



Przecież jest kod
  1. if( $id > 0 ) {
  2. $sth = $pdo->prepare( 'UPDATE `hale` SET `nazwa_hali`=:nazwa_hali,`miasto`=:miasto,`adres`=:adres WHERE id = :id' );
  3. $sth->bindParam( ':id', $id );


Podaje też prawidłowo ID: http://192.168.0.100/indeks.php?go=nowa_lo...2.php&id=21

Ktoś pomoże?

Bo zrobiłem wszystko co mi się wydaje najlepiej, ale widać coś nie działa...
Rysh
Przed sprawdzeniem daj sobie var_dump($id); i zobacz dlaczego Ci idzie do insertu a nie update, na tym polega programowanie - szukaj przyczyny takiego działania.
sentinell
I tu jest szkopół. Id = 0 , czyli link przekazuje, ale kod nie zczytuje...

  1. if( isSet( $_POST['nazwa_hali'] ) ) {
  2.  
  3. $id = isSet( $_POST['id'] ) ? intval( $POST['id'] ) : 0;
  4. var_dump($id);
  5. if( $id > 0 ) {


- - - - -

Problem znaleziony smile.gif ---> trzeba być konsekwentnym smile.gif

Było:
$id = isSet( $_POST['id'] ) ? intval( $POST['id'] ) : 0;

Jest:
$id = isSet( $_POST['id'] ) ? intval( $_POST['id'] ) : 0;
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.