Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]wyszukiwanie z bazy mysql
Kamil90
post 22.01.2009, 20:14:06
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


mam taki kod który wyszukuje mi kategorie z pliku tele.php:
  1. <?php
  2. foreach ($tele as $k => $w)
  3. {
  4.  echo '<div>' . str_replace('<', '&lt;', str_replace('>', '&gt;', $w)) . ' <a href="index.php?page=teledyski&amp;x=delete&amp;id=' . $k . '" title="Kasuj kategorię tyledysków" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . str_replace('<', '&lt;', str_replace('>', '&gt;', str_replace('"', '&quot;', $w))) . '?');">[Kasuj kategorię]</a></div>';
  5. }
  6. ?>


Chciałbym go zmienić tak żeby wyszukiwał i wypisał mi kategorie z bazy mysql z tabeli "tele" ale tylko tam gdzie jest w polu segment nazwa "teledyski".
oto zrzut mojej tabeli:



Jak będzie wygłądał kod php? sad.gif


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
EarthCitizen
post 22.01.2009, 20:24:42
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


  1. <?php
  2. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  3. $wynik = mysql_query($sql);
  4.  
  5. if (mysql_num_rows($wynik)) {
  6.    while ($row = mysql_fetch_array($wynik)) {
  7.        echo $row['nazwa'] . '<br />';
  8.    }
  9. } else {
  10.    echo 'Brak danych';
  11. }
  12. ?>
Go to the top of the page
+Quote Post
Kamil90
post 22.01.2009, 21:07:54
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


dzięki EarthCitizen smile.gif kod działa ale wyświetla mi tylko to co znajduje się w dziale "nazwa" anie ma obok opcji "[Kasuj kategorię]", tak jak to się działo w tym fragmencie pętli foreach:
  1. <?php
  2. echo '<div>' . str_replace('<', '&lt;', str_replace('>', '&gt;', $w)) . ' <a href="index.php?page=teledyski&amp;x=delete&amp;id=' . $k . '" title="Kasuj kategorię tyledysków" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . str_replace('<', '&lt;', str_replace('>', '&gt;', str_replace('"', '&quot;', $w))) . '?');">[Kasuj kategorię]</a></div>';
  3. ?>


ps. a tak apropo... Zna ktoś może dobrą książkę która opisuje wszystkie funkcje powiązane PHP z MySql?

Ten post edytował Kamil90 22.01.2009, 21:20:28


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
EarthCitizen
post 22.01.2009, 21:13:29
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


No wysil się trochę smile.gif Naprawdę nie widzisz jak połączyć Twój skrypt z moim? Spróbuj przynajmniej smile.gif
Go to the top of the page
+Quote Post
Kamil90
post 22.01.2009, 22:21:07
Post #5





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


połączyłem to w taki sposób:
  1. <?php
  2. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  3. $wynik = mysql_query($sql);
  4. $idwynik = mysql_query($sql);
  5. $id = mysql_fetch_array($idwynik);
  6.  
  7. if (mysql_num_rows($wynik))
  8. {
  9.   while ($row = mysql_fetch_array($wynik))
  10. {      
  11. echo '<div>' . $row['nazwa'] . ' <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $id['id'] . '" title="Kasuj kategorię tyledysków" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . str_replace('<', '&lt;', str_replace('>', '&gt;', str_replace('"', '&quot;', $w))) . '?');">[Kasuj kategorię]</a></div>';
  12. '<br>';
  13. }
  14. }
  15. else
  16. {
  17.   echo 'Brak danych';
  18. }
  19. ?>

mam nadzieje że dobrze smile.gif
dołożyłem $idwynik i $id bo będę usuwał po id


nie rozumiem tego kodu który ma $w:
  1. <?php
  2. str_replace('<', '&lt;', str_replace('>', '&gt;', str_replace('"', '&quot;', $w)))
  3. ?>


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
EarthCitizen
post 22.01.2009, 22:29:12
Post #6





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


No i dobrze, że nie rozumiesz, bo teraz już nie masz zmiennej $w i ten kod nie jest Ci prawdopodobnie potrzebny...

więc zamień
  1. <?php
  2. str_replace('<', '&lt;', str_replace('>', '&gt;', str_replace('"', '&quot;', $w)))
  3. ?>

na
  1. <?php
  2. $row['nazwa']
  3. ?>
Go to the top of the page
+Quote Post
Kamil90
post 22.01.2009, 22:41:28
Post #7





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


ok, dokonam zmiany smile.gif
teraz się kłania zmiana "delete" z wyboru 'switch':
  1. case 'delete':
  2.  $h = fopen('../tele.php', 'wb');
  3.  unset($filmiki[$_GET['id']]);
  4.  fwrite($h, "<?phpr&#092;n$filmiki = " . parse_array($filmiki) . ";r\n?>");
  5.  fclose($h);
  6.  
  7.  mysql_query('delete from `stuff` where `category`='' . $_GET['id'] . ''');
  8.  
  9.  echo '<div style="margin-bottom: 20px;">Kategoria usunięta.</div>';
  10.  break;


ta linijka usuwa filmiki z tej kategorii która została usunieta więc myśle ze powinna zostać:
  1. <?php
  2. mysql_query('delete from `stuff` where `category`='' . $_GET['id'] . ''');
  3. ?>


i teraz za co się zabrać? hmmm...

Ten post edytował Kamil90 22.01.2009, 22:42:04


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
EarthCitizen
post 22.01.2009, 22:43:50
Post #8





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Skoro operujesz teraz na bazie, a nie na pliku to chyba już widzisz 4 linijki, które tam nie pasują? Zapytanie zostaje...
Go to the top of the page
+Quote Post
Kamil90
post 22.01.2009, 22:54:15
Post #9





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


zaraz coś zdziałam, a zapytanie sobie wezme z phpmyadmin smile.gif ciekawe czy mi się uda... Uczę się w Technikum Informatycznym i działamy na Pascalu i c++. Tutaj pojęcia są zupełnie inne, zdarza sie jednak że niektóre sa podobne np. petla while, warunek if... else.. itp


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
EarthCitizen
post 22.01.2009, 22:55:22
Post #10





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Hehe, tylko nie wyskocz tu z jakąś procedurą w PHP winksmiley.jpg
Go to the top of the page
+Quote Post
Kamil90
post 22.01.2009, 23:08:38
Post #11





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


ułożyłem więc taki kod i w sumie to wszystko wygląda tak:
  1. <?php
  2. ..........
  3. case 'delete':
  4.  
  5.  
  6.  unset([$id['id']]);
  7.  mysql_query(DELETE FROM `tele` WHERE `id` = &#092;'' . $id['id'] . ''');
  8.  mysql_query('delete from `stuff` where `category`='' . $_GET['id'] . ''');
  9.  
  10.  echo '<div style="margin-bottom: 20px;">Kategoria usunięta.</div>';
  11.  break;
  12. }
  13.  
  14.  
  15. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  16. $wynik = mysql_query($sql);
  17. $idwynik = mysql_query($sql);
  18. $id = mysql_fetch_array($idwynik);
  19.  
  20. if (mysql_num_rows($wynik))
  21. {
  22.   while ($row = mysql_fetch_array($wynik))
  23. {      
  24. echo '<div>' . $row['nazwa'] . ' <a href="index.php?page=teledyski&amp;x=delete&amp;id=' . $id['id'] . '" title="Kasuj kategorię tyledysków" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  25. '<br>';
  26. }
  27. }
  28. else
  29. {
  30.   echo 'Brak danych';
  31. }
  32. ?>


i w sumie teraz wogole nie działa... sad.gif gdzieś zrobiłem błąd tutaj:
  1. <?php
  2. unset([$id['id']]);
  3.   mysql_query(DELETE FROM `tele` WHERE `id` = &#092;'' . $id['id'] . ''');
  4.   mysql_query('delete from `stuff` where `category`='' . $_GET['id'] . ''');
  5. ?>


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
EarthCitizen
post 22.01.2009, 23:12:12
Post #12





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


usuń linijkę z unset... usuwasz zmienną, której później chcesz użyć a już jej nie ma smile.gif

i jeszcze:

  1. <?php
  2. // tu brakuje ' przed DELETE
  3. mysql_query(DELETE FROM `tele` WHERE `id` = "' . $id['id'] . '");
  4. ?>


Ten post edytował EarthCitizen 22.01.2009, 23:12:36
Go to the top of the page
+Quote Post
Kamil90
post 22.01.2009, 23:21:03
Post #13





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


niestety nie działa:( ale juz sie wyświetla:), spróbowałem też tak:
  1. <?php
  2. case 'delete':
  3.  
  4.  
  5.  mysql_query('DELETE FROM `tele` WHERE `id` ='' . $id['id'] . ''');
  6.  mysql_query('delete from `stuff` where `category`='' . $id['id'] . ''');
  7.  
  8.  echo '<div style="margin-bottom: 20px;">Kategoria usunięta.</div>';
  9.  break;
  10. }
  11.  
  12.  
  13. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  14. $wynik = mysql_query($sql);
  15. $idwynik = mysql_query($sql);
  16. $id = mysql_fetch_array($idwynik);
  17.  
  18. if (mysql_num_rows($wynik))
  19. {
  20.   while ($row = mysql_fetch_array($wynik))
  21. {      
  22. echo '<div>' . $row['nazwa'] . ' <a href="index.php?page=teledyski&amp;x=delete&amp;id=' . $id['id'] . '" title="Kasuj kategorię tyledysków" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  23. '<br>';
  24. }
  25. }
  26. else
  27. {
  28.   echo 'Brak danych';
  29. }
  30. ?>

i efekt podobny... A może coś jest nie tak z "$id['id']" ?


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
EarthCitizen
post 22.01.2009, 23:27:23
Post #14





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Wklej cały kod do linii
  1. <?php
  2. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  3. ?>
Go to the top of the page
+Quote Post
Kamil90
post 22.01.2009, 23:33:09
Post #15





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


wkleiłem w tym miejscu i dalej to samo sad.gif , Klikam "Kasuj Kategorię" i nie usuwa:
  1. <?php
  2. case 'delete':
  3.  
  4. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  5.  mysql_query('DELETE FROM `tele` WHERE `id` ='' . $id['id'] . ''');
  6.  mysql_query('delete from `stuff` where `category`='' . $id['id'] . ''');
  7.  
  8.  echo '<div style="margin-bottom: 20px;">Kategoria usunięta.</div>';
  9.  break;
  10. }
  11.  
  12.  
  13. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  14. $wynik = mysql_query($sql);
  15. $idwynik = mysql_query($sql);
  16. $id = mysql_fetch_array($idwynik);
  17.  
  18. if (mysql_num_rows($wynik))
  19. {
  20.   while ($row = mysql_fetch_array($wynik))
  21. {      
  22. echo '<div>' . $row['nazwa'] . ' <a href="index.php?page=teledyski&amp;x=delete&amp;id=' . $id['id'] . '" title="Kasuj kategorię tyledysków" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  23. '<br>';
  24. }
  25. }
  26. else
  27. {
  28.   echo 'Brak danych';
  29. }
  30. ?>



edit: ale $id['id'] musi być akurat tej kategorii którą wybierze się do usunięcia więc może lepiej by było wybrać $row['id']? Chociaż nie wiem czy to ma sens...

Ten post edytował Kamil90 22.01.2009, 23:40:09


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
EarthCitizen
post 22.01.2009, 23:39:33
Post #16





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Z tym kodem to chciałem abyś na forum to dałwinksmiley.jpg ale spoks, mi ta pora już też nie służy smile.gif

Co do skryptu, to myślałem, że nad tym case masz coś jeszcze ale chyba nie, więc:

  1. <?php
  2. // poniżej dopisz
  3. if (isset($_GET['x']) {
  4.    switch ($_GET['x']) {
  5.        case 'delete':
  6.            // poniższe zapytanie do wywalenia
  7.            // $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  8.            // i zostaje Ci to co niżej
  9.            // id rekordu do usunięcia musisz odczytać z tablicy $_GET + rzutowanie na inta tak dla bezpieczeństwa ;)
  10.            mysql_query('DELETE FROM `tele` WHERE `id` ='' . (int)$_GET['id'] . ''');
  11.            mysql_query('DELETE FROM `stuff` WHERE `category`='' . (int)$_GET['id'] . ''');
  12.  
  13.            echo '<div style="margin-bottom: 20px;">Kategoria usunięta.</div>';
  14.        break;
  15.    }
  16. }
  17. ?>
Go to the top of the page
+Quote Post
Kamil90
post 22.01.2009, 23:50:33
Post #17





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


aha smile.gif , ogólnie cały skrypt wygląda następująco:
  1. <?php
  2. $segment = "teledyski";
  3. switch ($_GET['x'])
  4. {
  5. case 'new':
  6. if ($_POST['category'])
  7. {
  8. mysql_query('insert into `tele` (`nazwa`, `segment`) values ("' . mysql_value($_POST['category']) . '", "' . $segment . '")');
  9. echo '<div style="margin-bottom: 20px;">Kategoria dodana.</div>';
  10. }
  11. else
  12. {
  13. ?>
  14.  
  15.  
  16.  
  17. <form action="index.php?page=teledyski&amp;x=new" method="post">
  18. <div style="margin-bottom: 20px;">Nazwa kategorii: <input type="text" name="category" size="30" /> <br>
  19. <input type="submit" value="Dodaj"></div>
  20. </form>
  21.  
  22. <?php
  23.  }
  24.  break;
  25.  
  26. case 'delete':
  27.  
  28. mysql_query('DELETE FROM `tele` WHERE `id` ='' . (int)$_GET['id'] . ''');
  29. mysql_query('DELETE FROM `stuff` WHERE `category`='' . (int)$_GET['id'] . ''');
  30.  
  31.  echo '<div style="margin-bottom: 20px;">Kategoria usunięta.</div>';
  32.  break;
  33. }
  34.  
  35.  
  36. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  37. $wynik = mysql_query($sql);
  38. $idwynik = mysql_query($sql);
  39. $id = mysql_fetch_array($idwynik);
  40.  
  41. if (mysql_num_rows($wynik))
  42. {
  43.   while ($row = mysql_fetch_array($wynik))
  44. {      
  45. echo '<div>' . $row['nazwa'] . ' <a href="index.php?page=teledyski&amp;x=delete&amp;id=' . $id['id'] . '" title="Kasuj kategorię tyledysków" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  46. '<br>';
  47. }
  48. }
  49. else
  50. {
  51.   echo 'Brak danych';
  52. }
  53. ?>


i działa!! smile.gif jesteś wielki EarthCitizen!!
zastanawia mnie jeszcze fakt czy w tej linicje musi być $id['id']?:
  1. <?php
  2. echo '<div>' . $row['nazwa'] . ' <a href="index.php?page=teledyski&amp;x=delete&amp;id=' . $id['id'] . '" title="Kasuj kategorię tyledysków" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  3. ?>


heh... dla mnie napisanie takie kodu to pół dnia roboty i jeszcze na koniec nie działa.... będzie trzeba zainwestować w jakąś książkę smile.gif

edit: oczywiscie WIELKIE podziekowanie dla EarthCitizen, a ja pewnie jeszcze nie raz będę potrzebował pomocy...

Ten post edytował Kamil90 22.01.2009, 23:59:48


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
Go to the top of the page
+Quote Post
EarthCitizen
post 23.01.2009, 00:02:32
Post #18





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Jak tam masz $id['id'] zamiast $row['id'] i Ci działa, to Ty jesteś wielki biggrin.gif
Go to the top of the page
+Quote Post
nospor
post 23.01.2009, 00:06:44
Post #19





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jak tam masz $id['id'] zamiast $row['id'] i Ci działa, to Ty jesteś wielki

to spojrz na jego kod wczesniej:
  1. <?php
  2. $sql = 'SELECT * FROM tele WHERE segment = "teledyski"';
  3. $wynik = mysql_query($sql);
  4. $idwynik = mysql_query($sql);
  5. $id = mysql_fetch_array($idwynik);
  6.  
  7. if (mysql_num_rows($wynik))
  8. {
  9.  while ($row = mysql_fetch_array($wynik))
  10. ?>

Dzialac to to dziala, ale w petli kasuje zawsze pierwszy rekord winksmiley.jpg


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kamil90
post 23.01.2009, 00:11:27
Post #20





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Toruń

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


Cytat(EarthCitizen @ 23.01.2009, 00:02:32 ) *
Jak tam masz $id['id'] zamiast $row['id'] i Ci działa, to Ty jesteś wielki biggrin.gif

nie... nie... to nieprawda smile.gif zmieniłem to na $row['id'] ale nie widze żeby robiło to jakąś różnice...

nospor zaraz to sprawdze bo mnie ciekawi smile.gif

edit:
nospor zgadza się smile.gif jak miałem $id['id'] to mi usuwało pierwszy rekord(nawet tego nie zauważyłem...) a jak mam $row['id'] to mi usuwa zawsze to co chcę smile.gif, także dla Ciebie także należy się nagroda smile.gif wczoeśniej właśnie nie mogłem dostrzec różnicy pomiędzy $id['id'] a $row['id'] smile.gif

TERAZ JEST GITARA i za to lubie to forum thumbsupsmileyanim.gif

Ten post edytował Kamil90 23.01.2009, 00:17:58


--------------------
Jak dobrze, że ktoś pomyślał i stworzył takie forum :)
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:27