Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] Usuwanie poprzez pola typu "checkbox"
mysql_php
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


Witam,

Wykonałem skrypt php usuwania rekordów, chciałby teraz go ulepszyć i postawiłem sobie za zadanie
zrobić to za pomocą pól "checkbox". Otóż chodzi mi o to, że:

Mamy na stronie WWW listę rekordów z tabeli a w ostatniej kolumnie znajdują się "checkboxy" które zaznaczam jeśli chcę zaznaczyć jakiś rekord do usunięcia. Po zaznaczeniu kilku - wciskam jakiś submit
i usuwam zaznaczone.


Powiedzcie mi proszę jak powinien wyglągać przykładowy kod bo nie mogę nigdzie znaleźć a bardzo mi na tym zależy.

Dziękuję bardzo! Pozdrawiam.
Go to the top of the page
+Quote Post
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


Tu masz jak dobrać się do tablicy zaznaczonych elementów: link

Łukasz


--------------------
Go to the top of the page
+Quote Post
mysql_php
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


...kurcze a może znacie jakiś prostrzy przykład bo pamiętam, że kiedyś to widziałem i dodawało się oprócz checkboxa jeszcze "hidden". Ale nie jestem pewien...
Go to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







ja to robię w ten sposób

  1. <?php
  2.  
  3. $wynik = ...;
  4.  
  5. $ile = $wynik->num_rows;
  6.  
  7. <table>
  8. for ($i=0; $i <$ile; $i++)
  9. {
  10. $wiersz = $wynik->fetch_assoc();
  11. echo '<tr><td>';
  12. echo $wiersz['dana'];
  13. echo '<td>';
  14. echo '<form method=post>
  15. echo '<input type="checkbox" name="opcja'.($i+1).'" value="'.$wiersz['id'],'">';
  16. echo '<input type='hidden' name='ile' value='".$ile."'>';
  17. echo '</form>';
  18. }
  19. </table>
  20.  
  21. for ($i=0; $i <$ile; $i++)
  22. {
  23.  $sql =" delete from nazwa_tabeli where id = '".$_POST['opcja'.($i+1)]."'";
  24.  $usun = $db->query($sql);
  25. }
  26.  
  27. if($usun)
  28. {
  29.  echo 'Zaznaczone elementy zostały usunięte';
  30. }
  31. ?>


pisałem w locie więc mogłem gdzieś popełnić jakiś błąd

pozdrawiam
Go to the top of the page
+Quote Post
-Gość-
post
Post #5





Goście







Poprawka.
  1. <?php
  2.  
  3. $wynik = ...;
  4.  
  5. $ile = $wynik->num_rows;
  6.  
  7. <table>
  8. for ($i=0; $i <$ile; $i++)
  9. {
  10. $wiersz = $wynik->fetch_assoc();
  11. echo '<tr><td>';
  12. echo $wiersz['dana'];
  13. echo '<td>';
  14. echo '<form method=post>';
  15. echo '<input type="checkbox" name="opcja'.($i+1).'" value="'.$wiersz['id'],'">';
  16. echo "<input type='hidden' name='ile' value='".$ile."'>";
  17. echo '<input type="submit" name="usun" value="Usuń"';
  18. echo '</form>';
  19. }
  20. </table>
  21.  
  22. if($_POST['usun'] == 'Usuń') {
  23. for ($i=0; $i <$ile; $i++)
  24. {
  25.  $sql =" delete from nazwa_tabeli where id = '".$_POST['opcja'.($i+1)]."'";
  26.  $usun = $db->query($sql);
  27. }
  28. echo 'Zaznaczone elementy zostały usunięte';
  29. }
  30. else {}
  31. ?>
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




A nie prosciej tak?

  1. <input type="checkbox" name="inputy[]" value="<?=$id; ?>">


a potem

  1. <?php
  2. $tablica=$_POST['inputy'];
  3.  
  4. //tutaj foreach
  5. ?>


Ten post edytował Cysiaczek 6.08.2006, 21:20:54


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
MagnuM
post
Post #7





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


Tylko że ten kod który podałeś nie zadziała. Musiałbyć to dać w pętli i dalej $input[$i]. Wtedy owszem ale..

EDIT: Pozatym - w obronie początkujących - nie '<?=' tylko '<?php'.

Ten post edytował MagnuM 6.08.2006, 21:24:35


--------------------
Go to the top of the page
+Quote Post
mysql_php
post
Post #8





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


Panowie, próbowałem stosować ten kod powyżej (ten dłuższy) i nic.
może podam Wam jak u mnie wygląda kod, podpowiedzcie mi co gdzie mam dodać bo już mi ręce powoli zaczynają opadać z sił sad.gif

Tak wyświetlam tabelę "filmy"

  1. <HTML>
  2. <HEAD>
  3. <LINK REL="stylesheet" TYPE="text/css" HREF="ogolny.css">
  4. <TITLE>[ SOWW - Filmy ]</TITLE>
  5. </HEAD>
  6.  <BODY>
  7.  
  8. <P CLASS="h1"> FILMY </P>
  9.  
  10. <?php
  11. $polacz = mysql_connect('localhost', 'root', 'XXXX');
  12. $wybierz = mysql_select_db('wypozyczalnia');
  13.  
  14. $zapytanie = "SELECT * FROM filmy";
  15. $wynik = mysql_query($zapytanie);
  16. ?>
  17. <TABLE WIDTH="100%">
  18.  <TR CLASS="trg">
  19.  <td>ID Filmu</td>
  20.  <td>Tytul</td>
  21.  <td>Tytul PL</td>
  22.  <td>ID Gatunku</td>
  23.  <td>Czas trwania [min]</td>
  24.  <td>Rok produkcji</td>
  25.  <td>Kraj</td>
  26.  <td>Cena [PLN]</td>
  27.  <td>Status</td>
  28.  <td>Checkbox</td>
  29. </TR>
  30. <?php
  31. while ($row = mysql_fetch_array($wynik))
  32. {
  33. printf ("<tr>
  34.  <td>$row[ID_filmu]</td>
  35.  <td>$row[f_nazwa]</td>
  36.  <td>$row[f_nazwa_pl]</td>
  37.  <td>$row[ID_gatunku]</td>
  38.  <td>$row[f_czas_trwania]</td>
  39.  <td>$row[f_rok_prod]</td>
  40.  <td>$row[f_kraj]</td>
  41.  <td>$row[f_cena]</td>
  42.  <td>$row[f_status]</td>
  43. </tr>");
  44. }
  45. ?>
  46. </FORM>
  47. </TABLE>
  48.  </BODY>
  49. </HTML>


Gdzie mam wstawić ten kod ewentualnie i jaki?
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #9





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




W momencie, gdy użyjesz konstrukcji, którą podałem dostaniesz tablicę (array) indeksowaną liczbami.
Nazwa cię nie obchodzi. Ciebie interesuje tylko to, że ktoś zaznaczył jakiś checkbox. Chcesz kasowac wszystkie zaznaczone elementy - rób to po ich wartości.
  1. <?php
  2. //niech liczby to np. id rekordów
  3. $checkboxy[]=32;
  4. $checkboxy[]=34;
  5. $checkboxy[]=43;
  6.  
  7. print '<pre>';
  8. print_r($checkboxy);
  9. print '</pre>';
  10.  
  11. foreach ($checkboxy as $value){
  12. //np
  13. mysql_query("DELETE * FROM nazwa_tabeli WHERE id=$value");
  14. }
  15. ?>


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
-Gość-
post
Post #10





Goście







Plik1

  1. <?php
  2.  
  3. $zapytanie = "SELECT * FROM filmy";
  4. $wynik = mysql_query($zapytanie);
  5.  
  6. $ile = mysql_num_rows($wynik);
  7.  
  8. echo '<table><tr>
  9. <td>ID Filmu</td>
  10. <td>Tytuł</td>
  11.  .
  12.  .
  13.  .
  14. <td>checkbox</td>';
  15.  
  16. for ($i=0; $i <$ile; $i++)
  17. {
  18. $wiersz = $wynik->fetch_assoc();
  19. echo '<tr><td>';
  20. echo $wiersz['ID_filmu'];
  21. echo '<td>';
  22. echo $wiersz['f_nazwa'];
  23. echo '<td>';
  24. .
  25. .
  26. .
  27. echo '<td>';
  28. echo '<form action='usun.php' method=post>';
  29. echo '<input type="checkbox" name="opcja'.($i+1).'" value="'.$wiersz['ID_filmu'],'">';
  30. }
  31. echo '</table>';
  32. echo "<input type='hidden' name='ile' value='".$ile."'>";
  33. echo '<input type="submit" name="usun" value="Usuń">';
  34. echo '</form>';
  35. ?>


Plik usun.php

  1. <?php
  2. if($_POST['usun'] == 'Usuń') {
  3. for ($i=0; $i <$ile; $i++)
  4. {
  5.  $sql ="DELETE FROM nazwa_tabeli WHWRE id = '".$_POST['opcja'.($i+1)]."'";
  6.  $usun = $db->query($sql);
  7. }
  8.  
  9. if($usun)
  10. {
  11. echo 'Zaznaczone elementy zostały usunięte';
  12.  
  13. //Lub
  14.  
  15. header('Location: adres_do_plik1');
  16. }
  17. }
  18. else {}
  19. ?>
Go to the top of the page
+Quote Post
-Gość-
post
Post #11





Goście







i w tej linijce jest błąd jeszcze:/

echo '<input type="checkbox" name="opcja'.($i+1).'" value="'.$wiersz['ID_filmu'],'">';

zamień na

echo '<input type="checkbox" name="opcja'.($i+1).'" value="'.$wiersz['ID_filmu'].'">';
Go to the top of the page
+Quote Post
dawhol
post
Post #12





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


Pytanie do goscia nie sprawdzałem ale chwilowo niemam na to czasu, jednak wydaje mi sie ze
  1. <?php
  2. echo '<form action='usun.php' method=post>';
  3. ?>

nie powinno sie dawac w kazdej linijce tabelki <form action ..... bo z tego co rozumiem skrypcik to tak wyjdzie winksmiley.jpg nie szlo by tego dac jakos inaczej zeby skrypt nie zwariował smile.gif np. dac to przez wyswietleniem smile.gif calosci tabeli smile.gif

Ten post edytował dawhol 7.08.2006, 07:06:52


--------------------
Go to the top of the page
+Quote Post
mysql_php
post
Post #13





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


Bardzo wszystkim dziękuję za zainteresowanie się tematem snitch.gif
Teraz coprawda siędzę w pracy i nie moge sprawdzic jak to wszystko działa ale
jak wrócę to siadam i się do tego zabieram.

A linijkę:
  1. <?php
  2. '<form action='usun.php' method=post>';
  3. ?>

można dac przed pętlą FOR np.?

Powiedzcie mi proszę czy ten kod co podał Kolega wcześniej, działa smile.gif
Tak z czystej ciekawosci pytam bo zanim wrocę do domu to trochje minie guitar.gif
Może ktoś próbował?

Powiedzcie mi też czym różni się wstawianie do pliku php znaczników HTMTL po
  1. <?php
  2. echo '
  3. ?>

a czym po
  1. <?php
  2. printf ("
  3. ?>
Go to the top of the page
+Quote Post
-Gość-
post
Post #14





Goście







Tak, <form> można dać przed pętlą, też teraz siedzę w pracy i nie mogę sprawdzić czy on działa na 100%, ale używałem tego skryptu u siebie i działał (tylko, że teraz go pisałem z pamięci więc nie daje 100% pewności) znalazłem jeszcze błąd w pliku usun.php, mianowicie powinna być przed pętlą for jedna zmienna;)

  1. <?php
  2. $ile = $_POST['ile'];
  3. ?>
Go to the top of the page
+Quote Post
mysql_php
post
Post #15





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


Rozumiem, czyli wstawic tą zmienną od razu na początku, poprostu zrobic podstawienie?
Czy może po "IF" a przed "FOR"em ?
Go to the top of the page
+Quote Post
=kokos=
post
Post #16





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 6.08.2006

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


daj ją na samym początku, przed if'em jeszcze

Ten post edytował =kokos= 7.08.2006, 13:30:28


--------------------
Początkujący
Go to the top of the page
+Quote Post
mysql_php
post
Post #17





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


OK! Wczoraj sprawdziłem w domu i hula należycie smile.gif

Miałbym taką prośbę jeszcze,
ponieważ lubię wiedziec jak dziala kod który stosuje, mógłby mi ktoś przeanalizowac
dzialanie tego kodu (wiekszosc oczywiscie rozumiem, ale chodzi mi konkretnie o fragment w ktorym zaczyna sie praca z polem checkbox....)
Go to the top of the page
+Quote Post
=kokos=
post
Post #18





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 6.08.2006

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


Do pętli for wrzucasz pole checbox.

  1. <?php
  2. name="opcja'.($i+1).'"
  3. ?>


Ta linijka zmienia nazwą checboxa. Kiedy pętla wykona się przykładowo 3 razy to powstanie tak jakby formularz z trzema różnymi polami checbox. Będą one miały nazwę kolejno: opcja1, opcja2, opcja3. Później do każdego pola checbox przypisujesz nr. ID_filmu.
Do pola hidden przypisujesz liczbę wszystkich filmów z tabeli i wysyłasz formularz.

w pliku usun.php

skracasz nazwę zmiennej $ile = $_POST['ile']. Później jest warunek (wszystko jasne) i kolejna pętla for, która już usuwa wpisy. Pętla wykonuje się tyle razy ile jest wpisów, ale usuwa tylko te zaznaczone wpisy
Linijka za to odpowiadająca

  1. <?php
  2. $sql ="DELETE FROM nazwa_tabeli WHERE id = '".$_POST['opcja'.($i+1)]."'";
  3. ?>


Czyli, usuń z "nazwa_tabeli" wpisy gdzie id jest równe (kolejno j.w.) opcja1 (którego wartość value = 1), opcja2 (którego wartość value = 2), opcja6 (którego wartość value = 6).

Do pliku usun.php z formularza wysyłane są tylko te pola checbox, ktróre są zaznaczone, reszta jest pomijana, dlatego usuwa tylko zaznaczone wpisy.

Ten post edytował =kokos= 8.08.2006, 11:47:51


--------------------
Początkujący
Go to the top of the page
+Quote Post
artur81
post
Post #19





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

Ostrzeżenie: (10%)
X----


Cytat(Cysiaczek @ 6.08.2006, 20:20 ) *
A nie prosciej tak?
  1. <input type="checkbox" name="inputy[]" value="<?=$id; ?>">

a potem
  1. <?php
  2. $tablica=$_POST['inputy'];
  3. //tutaj foreach
  4. ?>


Niby dobre rozwiązanie ale co w przypadku gdy będzie miał do usunięcia 1000000 rekordów??
Tym foreach zarąbie bazę, bo będzie 1000000 zapytań.
Dużo lepiej, jest zrobić to jak poniżej
  1. <?php
  2. $strDel = implode( ',', $_POST['inputy']);
  3. mysql_query ("DELETE FROM `tutaj_wstaw_nazwe_tabeli` WHERE id IN( $strDel )");
  4. ?>

wtedy będzie tylko jedno zapytanie bez znaczenie ile rekordów chce usunąć
PS. usuń sobie ten backslash pomiędzy WHERE id IN( $strDel ) a " bo samoczynnie forum go dodaje


--------------------
Go to the top of the page
+Quote Post
mysql_php
post
Post #20





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


Super! Dzięki za szczegółowe wytłumaczenie.

Jeszcze o coś Was pomęczę smile.gif

Pierwsza sprawa:

Atrybuty "checkbox": Name i Value - rozumiem, że to co po "Name" wykożysywane jest później po wysłaniu formularza jako $_POST('Name') ale nie do końca wiem po co przypisuje się do atrybutu "Value" zmienną '.$wiersz['ID_filmu'],' questionmark.gif

Drugie pytanko:

Po co się stosuje w skrypcie usun.php takie sprawdzenie:

  1. <?php
  2. if($_POST['usun'] == 'Usuń')
  3. ?>


To chyba sprawdza czy wciśnięto "submit" tak?
Jeśli tak, to nie wiem w jakim celu. Przecież skoro wywołany został ten skrypt, to
znaczy, że użytkownik już wcisnął ten przycisk, prawda ?
Go to the top of the page
+Quote Post
artur81
post
Post #21





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

Ostrzeżenie: (10%)
X----


w tym celu że jeżeli by nie było sprawdzania czy jest wciśnięty to skrypt byłby wykonywany za każdym wywołaniem strony niezależnie czy ktoś wcisnął submit czy nie


--------------------
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #22





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




To zależy od budowy aplikacji. Rzadko kto stosuje fizyczne odwzorowanie w postaci: dodaj.php, usun.php. Sprawdzenie zatem staje się koniecznością.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
free
post
Post #23





Grupa: Zarejestrowani
Postów: 269
Pomógł: 0
Dołączył: 6.02.2006

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


  1. <?php
  2. "Value" zmienn&#261; '.$wiersz['ID_filmu'],'
  3. ?>
value odpowiada za tekst na przycisku dla typu"Checkbox"
lub "radio" okresla wartosc przesylana do serwera jezeli pole jest zaznaczone
Co do II pytania
skrypt moze byc wywolany prze nipowolana sosbe bez opcji np usun.php?page=usun by temu zap[obiec asekurujemy sie w skrypcie i nie dopuszczamy by cokolwiek robic gdy nie ma wcisnietego przycisku submit z opcja usun

Ten post edytował free 8.08.2006, 12:52:30
Go to the top of the page
+Quote Post
-Gość-
post
Post #24





Goście







Cytat
Atrybuty "checkbox": Name i Value - rozumiem, że to co po "Name" wykożysywane jest później po wysłaniu formularza jako $_POST('Name') ale nie do końca wiem po co przypisuje się do atrybutu "Value" zmienną '.$wiersz['ID_filmu'],' questionmark.gif


Oprę się na prostym przykładzie. Załóżmy, że wstawiasz do bazy obrazek. W formularzu robisz pole
<input type='file' name='obrazek'> i np. chcesz określić z której strony ma się ona znajdować (chodzi mi tu o wartość align). Wtedy dodajesz do formularza 2 kolejne pole radio

<input type='radio' name='strona' value='left'>
<input type='radio' name='strona' value='right'>

Jeśli w zapytaniu zrobisz tak
  1. <?php
  2. $ins = mysql_query("INSERT INTO tabela VALUES (...., $_POST['strona'];");
  3. ?>


do bazy zostanie dopisane nie name pole input tylko jego value, czyli left lub right w zależności od tego, które pole radio zaznaczysz.

Na pytanie o sprawdzenie już odpowiedział artur81. Ale też oprę się na przykładzie.

Do formularza możesz dodać np. 3 pola

<input type='submit' name='modyfikacja' value='dodaj'>
<input type='submit' name='modyfikacja' value='usuń'>
<input type='submit' name='modyfikacja' value='edytuj'>

wtedy po wysłaniu formularza sprawdzasz który przycisk został pacnięty

  1. <?php
  2. if($_POST['modyfikacja'] == 'usuń')
  3. {
  4. //usuwaj
  5. }
  6. elseif($_POST['modyfikacja'] == 'dodaj')
  7. {
  8. //dodawaj
  9. }
  10. elseif($_POST['modyfikacja'] == 'edytuj')
  11. {
  12. //edytuj
  13. }
  14. else {}
  15. ?>
Go to the top of the page
+Quote Post
=kokos=
post
Post #25





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 6.08.2006

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


ten post wyżej to ja winksmiley.jpg


--------------------
Początkujący
Go to the top of the page
+Quote Post
mysql_php
post
Post #26





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


...właśnie tak patrzę, że raz Gosc a raz Kokos guitar.gif

Wieczorem wszystko przeanalizuje bo wytlumaczone terazz mam elegancko! smile.gif
Go to the top of the page
+Quote Post
dawhol
post
Post #27





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


Ja postanowiłem sobie to sprawdzic i takze wykorzystac i wszystko było by pieknie ale ...

Przy wyseitlaniu z bazy liczy ile jest wierszy ale wyswietla tylko ostatni wpis tyle razy ile jest wpisów tzn powtarza jeden wpis, po drugie jak zaznaczam kasowanie dwóch teoretycznie takich samych wpisów to kasuje jeden al jest to spowodowane tym ze sa takie same winksmiley.jpg pozatym musiałem tam pare zeczy poprawic smile.gif bo u mnie nie działały smile.gif np w pliku usun nie dzialalo mi $usun = $db => czy jakos tak smile.gif to zmienilem na mysql_query smile.gif i w tym pierwszym pliku tez cos tam musiałem zmienic winksmiley.jpg

EDIT:
W tym pierwszym pliku dałem $wiersz = mysql_fetch_array($wynik); zamiast cos tam smile.gif

bo wyskakiwało mi


Fatal error: Call to a member function on a non-object jak mialem tak jak bylo w orginale winksmiley.jpg

Ten post edytował dawhol 8.08.2006, 21:05:22


--------------------
Go to the top of the page
+Quote Post
=kokos=
post
Post #28





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 6.08.2006

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


Cytat
pliku usun nie dzialalo mi $usun = $db => czy jakos tak


Nie działało bo w zmiennej $db powinno się znajdować coś takiego :-)

  1. <?php
  2. $db = new mysqli('localhost', 'user', 'haslo', 'baza_danych');
  3. ?>


W PHP5 znajduje się nowa biblioteka łączenia się z serverem MySQL. Ta biblioteka nazywa sie mysqli i mozna jej używac z serverem MySQL w wersji 4 i wyzej.

2. Taki zapis
  1. <?php
  2. $wiersz = $wynik->fetch_assoc();
  3. ?>


równie dobrze można zapisać w ten sposób

  1. <?php
  2. $wiersz = mysql_fetch_assoc($wynik)
  3. ?>


Tyle, że ten wyżej działa w wersji php5 o ile się nie myle winksmiley.jpg


--------------------
Początkujący
Go to the top of the page
+Quote Post
dawhol
post
Post #29





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


pierwszy zapis mi nie działa drugi natomiast tak ale nie wprowadza to zadnej róznicy wyswietla mi x razy ten sam wiersz z bazy zamiast x róznych ;/

x - liczba wersów w bazie

Ten post edytował dawhol 8.08.2006, 22:11:49


--------------------
Go to the top of the page
+Quote Post
=kokos=
post
Post #30





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 6.08.2006

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


Nie wiem dlaczego Ci nie działa. Przed chwilką też sprawdziłem skrypt w takiej wersji i wszystko działa tak jak trzeba.

plik.php

  1. <?php
  2.  
  3. require('polacz.php');
  4.  
  5. $zapytanie = "SELECT * FROM filmy";
  6. $wynik = mysql_query($zapytanie);
  7.  
  8. $ile = mysql_num_rows($wynik);
  9.  
  10. echo '<table><tr>
  11. <td>ID Filmu</td>
  12. <td>Tytuł</td>
  13. <td>checkbox</td>';
  14.  
  15. echo '<form action="usun.php" method=post>';
  16.  
  17. for ($i=0; $i <$ile; $i++)
  18. {
  19. $wiersz = mysql_fetch_assoc($wynik);
  20. echo '<tr><td>';
  21. echo $wiersz['ID_filmu'];
  22. echo '<td>';
  23. echo $wiersz['f_nazwa'];
  24. echo '<td>';
  25. echo '<input type="checkbox" name="opcja'.($i+1).'" value="'.$wiersz['ID_filmu'],'">';
  26. }
  27. echo '</table>';
  28. echo "<input type='hidden' name='ile' value='".$ile."'>";
  29. echo '<input type="submit" name="usun" value="Usuń">';
  30. echo '</form>';
  31. ?>


usun.php

  1. <?php
  2.  
  3. require('polacz.php');
  4.  
  5. $ile = $_POST['ile'];
  6.  
  7. if($_POST['usun'] == 'Usuń') {
  8. for ($i=0; $i <$ile; $i++)
  9. {
  10.  $sql ="DELETE FROM filmy WHERE ID_filmu = '".$_POST['opcja'.($i+1)]."'";
  11.  $usun = mysql_query($sql);
  12. }
  13.  
  14. if($usun)
  15. {
  16. //echo 'Zaznaczone elementy zostały usunięte';
  17.  
  18. //Lub
  19.  
  20. //header('Location: adres_do_plik.php');
  21. else {}
  22. ?>


Ten post edytował =kokos= 8.08.2006, 22:42:09


--------------------
Początkujący
Go to the top of the page
+Quote Post
dawhol
post
Post #31





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


moj blad sorka przestawiłem jedna zmienana po za funkcje for smile.gif przez przypadek smile.gif ale juz działą smile.gif


--------------------
Go to the top of the page
+Quote Post
mysql_php
post
Post #32





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


Hej wszystkim,

jako, że jestem autorem tego posta - żeby nie zaśmiecać forum nowymi - napiszę tutaj swój kolejny problem, otóż nie działa mi takie banalne dodawanie do bazy. Nie robiłem wcześniej tego tak jak tutaj, tzn.
u mnie zawsze po pacnięciu submita wywoływała się inna strone ze skryptem który dodawał do bazy trkord.
Tu chciałem aby wsztstko się odbywało w 1 pliku. Powiedzcie co zchrzaniłem...

  1. <?php
  2.  
  3.  echo '<TABLE>';
  4.  echo '<form method="post">';
  5.  
  6.  echo '<TR>';
  7.  echo '<TD>ID Filmu</TD> <TD><INPUT TYPE="TEXT" NAME="ID_filmu"></TD>';
  8.  echo '</TR>';
  9.  echo '<TR>';
  10.  echo '<TD>ID Klienta</TD> <TD><INPUT TYPE="TEXT" NAME="ID_osoby"></TD>';
  11.  echo '</TR>';
  12.  echo '<TR>';
  13.  echo '<TD>Data planowanego zwrotu</TD><TD><INPUT TYPE="TEXT" NAME="w_data_plan"></TD>';
  14.  echo '</TR>';
  15.  echo '<TR>';
  16.  echo '<TD><INPUT TYPE="submit" NAME="dodaj" VALUE="Dodaj"></TD>';
  17.  echo '</TR>';
  18.  echo '</FORM>';
  19.  echo '</TABLE>';
  20.  
  21. if($_post['dodaj'] == 'Dodaj')
  22. {
  23.  
  24. $polacz = mysql_connect('localhost', 'root', 'XXXXX');
  25. $wybierz = mysql_select_db('wypozyczalnia');
  26.  
  27. $zapytanie = "INSERT INTO `wypozycz` VALUES ('".$_post['ID_filmu']."', '".$_post['ID_osoby']."', 'CURDATE()', 'Wypozyczona', '".$_post['w_data_plan']."', NULL, NULL, NULL)";
  28. $wynik = mysql_query($zapytanie);
  29. };
  30.  
  31. ?>


Halo Panowie... pomożecie?

Ten post edytował mysql_php 14.08.2006, 08:48:34
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #33





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Jaki dostajesz komunikat?
Bo $_post wygląda podejrzanie...
Powinno być chyba $_POST

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 21.08.2025 - 21:00