Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Usuwanie wiersza z tabeli
Forum PHP.pl > Forum > Przedszkole
rokasny
Witam wszystkich, z góry przepraszam, że odpalam n-ty temat o usuwaniu wierszy, ale chciałbym poprosić o pomoc w sprawdzeniu mojego przypadku.
Robię projekt na studiach i bardzo przyda mi się wasza pomoc.

  1. echo "<p>";
  2. //echo "<form action='' method='post'>";
  3. echo "<table id ='tab-a' boder='1'><tr>";
  4. echo "<td><strong>Lp.</strong></td>";
  5. echo "<td><strong>Nazwa produktu</strong></td>";
  6. echo "<td><strong>Ilość</strong></td>";
  7. echo "<td><strong>Klient</strong></td>";
  8. echo "<td><strong>Termin</strong></td>";
  9. echo "<td><strong>Usuń</strong></td>";
  10. echo "</tr>";
  11.  
  12. while ( $row = mysql_fetch_row($wynik) ) {
  13. echo "</tr>";
  14. echo "<td>" . $i++ .'.'. "</td>";
  15. echo "<td>" . $row[1] . "</td>";
  16. echo "<td>" . $row[2] . "</td>";
  17. echo "<td>" . $row[3] . "</td>";
  18. echo "<td>" . $row[4] . "</td>";
  19. echo "<td><a href=\"menu.php?menu=3?usun=".$row[0]."\"><span style='color:#000'>USUN</span></a></td>";
  20. echo "</tr>";
  21. }
  22. echo "</table>";
  23.  

wysyła mi do linku usun - odpowiednie ID, ale nie reaguje na zapytanie i wiersz nie chcę się usunąć. Co jest nie tak z tym kodem?
  1. if (isset($_GET['usun'])) {
  2. $usuwanie = $_GET['usun'];
  3. $sql = "DELETE * FROM zamowienia WHERE IDzamowienia='$usuwanie'";
  4.  
  5. if (mysql_query($sql)) {
  6. echo '<p> Wiersz został usunięty</p>';
  7. } else {
  8. echo '<p> Błąd: '. mysql_error() .'</p>';
  9. }
  10. }


W tabeli mam IDzamowienia, NazwaProduktu, Ilosc, klient, termin.
Bardzo proszę o podpowiedzi.
rad11
Napewno uzywasz method = get ?
com
@up gdzie ty masz tu jakiś form?

Cytat
  1. echo "<td><a href=\"menu.php?menu=3?usun=".$row[0]."\"><span style='color:#000'>USUN</span></a></td>";

Jak już to menu.php?menu=3&usun= a wgl to najlepiej &amp; wink.gif
rokasny
i przy GET i przy POST, zapytanie nie chce działać

edit:
Po zmianie na & wyświetla mi taki błąd
  1. Błąd: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM zamowienia WHERE IDzamowienia='1'' at line 1


usunąłem * - zadziałało
czy jest możliwość żeby jednocześnie z wiadomością o poprawnym usunięciu wiersza zaaktualizowało mi automatycznie tabele (już bez usuniętego wiersza)?
com
Powiedz nam w takim razie jaki jest efekt jak dasz te usuń? masz włączone raportowanie błędów? spróbuj zrobić var_dump($_GET['usun']); smile.gif

Tak jest możliwe służy do tego AJAX smile.gif

http://it.dth.pl/delete-kurs-jezyka-sql-mysql-cz-6/ wink.gif

Btw filtruj tego geta bo ktoś Ci tak coś tam wstrzyknie smile.gif
rokasny
ajax hm smile.gif jak sobie z tym poradzić? czy taki kod jest bardzo skomplikowany? mógłbym prosić o pomoc przy takim rozwiązaniu?
com
W JQuery się to robi w miarę łatwo smile.gif Link do dokumentacji http://api.jquery.com/jQuery.ajax/, kiedy to przestudiujesz i bd problemy to przyjdź z swoim kodem na pewno pomożemy, jednakże gotowca nie piszemy w postach, co najwyżej podpowiadamy.. gotowe od a do z możesz komuś zlecić wink.gif
rokasny
  1. <script type="text/javascript">
  2. $(".loadlink").click( function(event) {
  3. event.preventDefault();
  4. $("#result").load($(this).attr("href"));
  5. });
  6. </script>


i nadanie odpowiednie id do odnośnika pomoże?
com
hmm nie bardzo rozumiem co w ten sposób zamierzasz uzyskać wink.gif
rokasny
Chciałbym automatycznie odświeżyć stronę pozostawiając echo 'wiersz został usunięty pomyślnie'
Mam kilka rozwiązań, które najlepsze (ewentualnie do zmodyfikowania)?:

1.
  1. $('#PageRefresh').click(function() {
  2. location.reload();
  3. });

2.
  1. $(".loadlink").click( function(event) {
  2. event.preventDefault();
  3. $("#result").load($(this).attr("href"));
  4. });

3.
  1. echo '<meta http-equiv="refresh" content="1; url=menu.php?menu=3">';
com
przecież napisałem Ci że do tego musisz użyć AJAX, w ten sposób za wiele Ci to nie da bo po usunięciu jeśli zastosujesz jedno z tych rozwiązań strona się przeładuje wiec wtedy zamiast robić to w jquery wystarczyło by dodać header

Być może wcześnie Cie nie zrozumiałem, ponadto 3 rozwiązanie nie przejdzie bo strona będzie odświeżana w nieskończoność co jest bez sensu...
rokasny
Przystałem na 3 rozwiązaniu jednak, bo odświeża mi po chwili do strony menu=3 (gdzie nie mamy już echo z odświeżaniem) - póki co wystarczy mi takie rozwiązanie smile.gif

Mam natomiast inne pytanie, prośbę, z języka sql, jaką funkcję zastosować, żeby zamiast zamiany wartości w tabeli dodawało do nich.
Może na przykładzie:
Mamy w tabeli kolumne Ilość (o wartości 5), w formularzu dodaj, wpisuję w Ilość 10 i zamiast zamierzonego efektu: 15 otrzymuje zastąpienie wartości: 10.

  1. UPDATE bom SET ZapasMagazynu='$ilosc', NazwaMagazynu='$magazyn' WHERE NazwaProduktu='$produkt'

Zatem jak poprawić na INSERT INTO albo inne zapytanie żeby otrzymać zamierzony efekt? bardzo proszę o pomoc.
edit: coś z COUNT?
Turson
  1. UPDATE tabela SET kolumna=kolumna+10
rokasny
A ja kombinuje jak koń pod górkę smile.gif) dziękuje

Siemka, mógłbym prosić o pomoc raz jeszcze?

Mając buttona w wierszu chciałbym się odwołać do odpowiedniego ID w bazie czyli dla .$row[0]. (podobną rzecz mam usuwając konkretne wiersze czy to na tej samej zasadzie zadziała?) i jednocześnie wykonać dla tej zmiennej(buttona) funkcje oblicz($row[0](tak??)); a w funkcji: zapytania UPDATE żeby mi dla konkretnego ID uaktualniało konkretne wartości w tabelach w bazie(gdzie umieścić zapytania?), do tego po wykonaniu takiej funkcji musiałby się button zmienić w tekst [obliczono] (jak taki efekt?).
Mam nadzieję, że wyjaśniłem problem, proszę ogromnie o porady i pomoc, od czego zacząć, co zrobić.
Turson
W ukrytym inpucie (type="hidden") umieszczasz id wiersza i dzięki temu odwołujesz się do konkretnego
rokasny
button mam w 5 kolumnie tabeli (którą wyswietlam dzięki while .. echo $row[]), button nie musi byc ukryty, mamy obliczyć coś dla konkretnego wiersza (np. zamówienie id=1). Chyba, że źle zrozumiałem poradę smile.gif
Turson
  1. <form action.....>
  2. Produkt 1
  3. <input type="hidden" name="id" value="id z bazy">
  4. <input type="submit">
  5. </form>
  6.  
  7. <form action.....>
  8. Produkt 2
  9. <input type="hidden" name="id" value="id z bazy">
  10. <input type="submit">
  11. </form>

i tak dalej
rokasny
Czy takie rozwiązanie buttona będzie poprawne?

  1. <form method="post" action="index.php" enctype="multipart/form-data"> <input type="submit" name="oblicz" value="oblicz" /> </form> <?php IF (isset($_POST['oblicz'])){ $query = mysql_query('UPDATE... [czy zaktualizuje mi wartościami obliczonymi z funkcji dla tego konkretnego id wiersza?]]'); while($rekord = mysql_fetch_array($query)){ oblicz($row["0"]; } kolejne zapytania sql? } ?>
Turson
Podałem odpowiedź. Każde id jest unikalne, ponadto tylko jeden submit jest wysyłany, więc w zapytaniu $_POST["id"] załatwi sprawę

Ale forma też wrzuć do pętli i powinno być git smile.gif
rokasny
Męczę się jak głupi z tym :/ doszedłem do takiej postaci i nie wiem czy jest poprawna i co z zapytaniem?

  1. echo "<table id ='tab-a' boder='1'><tr>";
  2. echo "<td><strong>Lp.</strong></td>";
  3. echo "<td><strong>Nazwa produktu</strong></td>";
  4. echo "<td><strong>Ilość</strong></td>";
  5. echo "<td><strong>Klient</strong></td>";
  6. echo "<td><strong>Termin</strong></td>";
  7. echo "<td><strong>Algorytm</strong></td>";
  8. echo "<td><strong>Usuń</strong></td>";
  9. echo "</tr>";
  10.  
  11. while ( $row = mysql_fetch_row($wynik) ) {
  12. echo "</tr>";
  13. echo "<td>" . $i++ .'.'. "</td>";
  14. echo "<td>" . $row[1] . "</td>";
  15. echo "<td>" . $row[2] . "</td>";
  16. echo "<td>" . $row[3] . "</td>";
  17. echo "<td>" . $row[4] . "</td>";
  18. echo "<td><input type='submit' name='oblicz' value='oblicz' />";
  19. IF (isset($_POST['oblicz']))
  20. {
  21. $query = mysql_query('UPDATE zamowienia SET konkretne ID mam w skrypcie.php jest to $rowzam['ID'] i ma sie równać z row[0]?');
  22. while($rekord = mysql_fetch_array($query))
  23. {
  24. echo "<form method='post' action='skrypt.php'>";
  25. oblicz($row["0"]);
  26. echo "</form>";
  27. }
  28. };
  29. echo "</td>";
Turson
  1. <?PHP
  2. while ( $row = mysql_fetch_row($wynik) ) {
  3. echo "<tr>";
  4. echo "<td>" . $i++ .'.'. "</td>";
  5. echo "<td>" . $row[1] . "</td>";
  6. echo "<td>" . $row[2] . "</td>";
  7. echo "<td>" . $row[3] . "</td>";
  8. echo "<td>" . $row[4] . "</td>";
  9. echo '<form action="skrypt.php" method="post"';
  10. echo '<input type="hidden" name="id" value="'.$row[0].'">';
  11. echo '<td><input type="submit" name="oblicz" value="oblicz" />';
  12. echo "</form>";
  13. echo "</tr>";
  14. }
  15.  
  16.  
  17. if(isset($_POST['oblicz'])){
  18. //Nie mam pojęcia co chcesz tutaj zrobić
  19. }
rokasny
Poradziłem, dziękuje bardzo smile.gif
doszedłem do momentu gdzie mój input ma value=$zmiennej[0] a chciałbym, żeby miał wartość $zmiennej[0] ale nazwę na nim np. "Oblicz"?

//EDIT

Czy możecie mnie jakoś nakierować jak zrobić w ajax(prawdopodobnie) funkcje, która dezaktywuje przycisk/zmienia obrazek/ który został już kliknięty/wywołana została jego funkcja?
Turson
Cytat(rokasny @ 27.11.2013, 21:21:13 ) *
doszedłem do momentu gdzie mój input ma value=$zmiennej[0] a chciałbym, żeby miał wartość $zmiennej[0] ale nazwę na nim np. "Oblicz"?

Przecież ukryty input jest niewidoczny, to po co ma mieć jakąś widoczną nazwę?

Cytat(rokasny @ 27.11.2013, 21:21:13 ) *
z input hidden zmienna w value zwraca ostatnią z tablicy a nie konkretną dla wiersza (więc odpada)..

Doprawdy ciekawe
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.