Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak wywolac wiecej elementow z bazy danych o zadanym atrybucie?, dodanie kolejnych wierszy z tabeli na polecenie uzytkownika
kunass2
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2011

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


Witam!

Poszukuje rozwiazania do takiego problemu:


Mam kod php za pomoca ktorego z dwoch tabel wyswietlam pojedyncze rekordy, mianowicie:
  1.  
  2. <?php
  3. require "connection.php";
  4. connection();
  5.  
  6. $result = mysql_query("SELECT * FROM wiersz WHERE id = {$_GET['ids']}")
  7. or
  8. $result = mysql_query("SELECT * FROM zlote_mysli WHERE id = {$_GET['zm']}");
  9.  
  10. if (isset($_GET['ids']))
  11. {
  12.  
  13. $wiersz = mysql_fetch_object($result);
  14.  
  15.  
  16. echo $wiersz->autor; //*wyswietlam rekord z pierwszej tabeli(wiersz)
  17. echo $wiersz->tytul;
  18. echo $wiersz->tresc;
  19.  
  20. }
  21.  
  22. elseif (isset($_GET['zm']))
  23. {
  24.  
  25. $zlote_mysli = mysql_fetch_object($result);
  26.  
  27. echo $zlote_mysli->autor;
  28. echo $zlote_mysl->tytul;
  29. echo $zlote_mysl->tresc; //*wyswietlam rekord z drugiej tabeli(zlote_mysli)
  30. }
  31.  
  32. else
  33.  
  34. echo "";
  35. ?>

No wlasnie i teraz w jaki sposob mozna stworzyc taka mozliwosc zeby uzytkownik jak kliknie na przycisk np" wiecej" dostanie ponizej pozostale rekordy o konkretnej wartosci atrybutu. Czyli:

Jest tabela( id, autor, tytul, tresc). Za pomoca get i atrybutu ID wyswietla sie jakis caly wiersz z tabeli. Jak teraz napisac kod zeby wyswietlilo sie ponizej w ten sam sposob wiecej wierszy z tabeli o takim samym autorze jak ten wybrany?

tu jest przyklad o co mi chodzi. Chce zeby z bazy wyswietlilo pod spodem wiecej wierszy z tabeli o tym samym autorze "amelia". Jak to zrobic?

Ten post edytował kunass2 12.03.2011, 00:51:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
kokers
post
Post #2





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

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


yyy. Jeśli chcesz żeby pojawiły się pozostałe wiersze bez przeładowania strony to nie pozostaje nic innego jak AJAX i odpowiednie zapytanie do bazy gdzie sprawdzasz
  1. WHERE autor LIKE 'amelia'

Jeśli z przeładowaniem to tylko warunek odpowiedni.
I tak na wszelki wypadek. Wyświetlanie tych rekordów w pętli.
Go to the top of the page
+Quote Post
kunass2
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2011

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


no wlasnie czyli

  1. $result = mysql_query("SELECT * FROM zlote_mysli WHERE autor LIKE $zlote_mysli->autor");
  2.  


chodzi mi o to zeby on sam wybieral reszte na podstawie autora jaki zostal wybrany. Tyle ze nie moge mu podac wartosci Amelia bo w kazdym przypadku mi wyrzuci amelie, i nie bedzie ona zmienna. Czy tak bedzie dobrze?

I jeszcze jedno. Nie wiem jak podlaczyc pod a href petle ktora ma wykonywac po przycisnieciu, np:


  1. <a href="wiecej rekordow o autorze $zlote_mysli->autor" id="tratata">pokaz wiecej wierszy tego autora</a>
  2.  
  3. <?php
  4. $result = mysql_query("SELECT * FROM zlote_mysli WHERE autor LIKE $zlote_mysli->autor");
  5.  
  6. $zlote_mysli = mysql_fetch_object($result);
  7.  
  8. for($i = 0; $i <= count($zlote_mysli->id); ++$i){ //tu jest kod php ktory teoiretycznie ma dzialac po kliknieciu na hrefa.
  9.  
  10. echo $zlote_mysli->autor;
  11. echo $zlote_mysl->tytul;
  12. echo $zlote_mysl->tresc;
  13.  
  14. ?>


Potrzebuje pomocy zeby zweryfikowac ten drugi kod php i pokazac jak podlaczyc php do hrefa zeby zadzialalo?
Go to the top of the page
+Quote Post
kokers
post
Post #4





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

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


jeśli już to, jak wyświetlisz sobie dany wiersz autora dodaj link na końcu w stylu:

  1. <a href="http://twojadomena/nazwaskryptu.php?autor=<?php echo $zlote_mysli->autor;?>" id="tratata">pokaz wiecej wierszy tego autora</a>


i w pliku do którego się odniesiesz pobierasz autora dla którego chcesz pobrać listę:

  1. $autor = mysql_real_escape_string($_GET['autor']); // poczytaj o zabezpieczeniu prze sqlinjection


i zapytanie:

  1. $result = mysql_query("SELECT * FROM zlote_mysli WHERE autor LIKE '$autor'"); //przy stringach zmienna musi być w apostrofy ujęta.


i potem wyświetlanie z pomocą while. poczytaj o tym tutaj:
http://www.kursy.czestochowaonline.pl/mysql/3.html
Go to the top of the page
+Quote Post
kunass2
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2011

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


czyli moj kod powinien wygladac nastepujaco:
  1.  
  2. <?php
  3. require "connection.php";
  4. connection();
  5.  
  6. $result = mysql_query("SELECT * FROM wiersz WHERE id = {$_GET['ids']}")
  7. or
  8. $result = mysql_query("SELECT * FROM zlote_mysli WHERE id = {$_GET['zm']}");
  9.  
  10. if (isset($_GET['ids']))
  11. {
  12.  
  13. $wiersz = mysql_fetch_object($result);
  14.  
  15.  
  16. echo $wiersz->autor; //*wyswietlam rekord z pierwszej tabeli(wiersz)
  17. echo $wiersz->tytul;
  18. echo $wiersz->tresc;
  19.  
  20. }
  21.  
  22. elseif (isset($_GET['zm']))
  23. {
  24.  
  25. $zlote_mysli = mysql_fetch_object($result);
  26.  
  27. echo $zlote_mysli->autor;
  28. echo $zlote_mysl->tytul;
  29. echo $zlote_mysl->tresc; //*wyswietlam rekord z drugiej tabeli(zlote_mysli)
  30. echo '<a href="http://twojadomena/nazwaskryptu.php?autor=';
  31. echo $zlote_mysli->autor;
  32. echo 'id="tratata">pokaz wiecej wierszy tego autora</a>';
  33.  
  34. require('autor.php');
  35.  
  36. }
  37.  
  38. else
  39.  
  40. echo "";
  41. ?>



a w pliku autor.php:
  1. <?php
  2. // w tym momecie musze sie jeszcze raz laczyc z ta sama baza danych?
  3.  
  4. $result = mysql_query("SELECT * FROM zlote_mysli WHERE autor LIKE '$autor'");
  5.  
  6. if (isset($autor)) {
  7. $autor = mysql_real_escape_string($_GET['autor']);
  8. for($i = 0; $i <= count($zlote_mysli->autor); ++$i)
  9.  
  10. {
  11.  
  12. echo $zlote_mysli->autor;
  13. echo $zlote_mysl->tytul;
  14. echo $zlote_mysl->tresc;
  15.  
  16. }
  17.  
  18.  
  19. }
  20. ?>
  21.  
  22.  


o zabezpieczeniach dopiero poczytam, ale czy tak bedzie wygladal moj kod?
Go to the top of the page
+Quote Post
kokers
post
Post #6





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

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


Ten drugi na pierwszy rzut oka powinien być mniej więcej tak:
  1. <?php
  2. // w tym momecie musze sie jeszcze raz laczyc z ta sama baza danych? <- jeśli jest to osobny, plik nowe wywołanie to tak.
  3.  
  4. if (isset($autor)) {
  5. $autor = mysql_real_escape_string($_GET['autor']);
  6. $result = mysql_query("SELECT * FROM zlote_mysli WHERE autor LIKE '$autor'");
  7.  
  8.  
  9. for($i = 0; $i < mysql_num_rows($result); ++$i)
  10.  
  11. {
  12. $zlote_mysli = mysql_fetch_object($result);
  13. echo $zlote_mysli->autor;
  14. echo $zlote_mysl->tytul;
  15. echo $zlote_mysl->tresc;
  16.  
  17. }
  18.  
  19.  
  20. }else{
  21. //jakis komunikat ze nie wybral autora
  22. }
  23. ?>


Ten post edytował kokers 12.03.2011, 12:45:14
Go to the top of the page
+Quote Post
kunass2
post
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2011

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


zauwazylem ze w tym pierwszym link a href bedzie tylko przekierowywal na strone z wybranymi wierszami danego autora. Aleone beda sie juz wyswietlac wczeniej bez klikania bo wlaczylem przeciez:

  1. require('autor.php');


a w autor.php lacze sie z baza, szukam tych rekordow i je wyswietlam, wiec uzytkownik bez klikania w hrefa juz bedzie mial wszystkie wyswietlone... mam racje?

Bo ja docelowo chcialem zeby to reagowalo dopieropo kliknieciu.

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





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

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


nie zauważyłam, że już tam require wstawiasz. masz rację, w ten sposób to się będzie wyświetlało.

Masz dwie opcje.
- Albo po kliknięciu przekieruje usera na stronę z listą wierszy (czyli autor.php). Wtedy pozostaje wszystko bez zmian, tylko usuwasz tego require i masz wiersz i listę wierszy danego autora jako osobne strony.
- Albo po kliknięciu poprzez AJAX załaduje się wynik pliku autor.php. Ale żeby można było tego dokonać, odsyłam do np. jQuery i funkcji .load() lub prototype i funkcji update().
Go to the top of the page
+Quote Post
kunass2
post
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2011

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


no wlasnie, ja chcialbym zeby to sie zaladowalo na tej samej stronie... po prostu wyswietlilo kolejne wiersze z tabeli... o zadanym atrybucie... w tymprzypadku tego samego autora co wybrany. Dzieki, jeszcze popatrze... i zapytam ponownie.
Go to the top of the page
+Quote Post
AndyPSV
post
Post #10





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


  1. $q = mysql_query(); if(mysql_num_rows($q) > 0) while($_r = mysql_fetch_array($q)) $r[] = $_r;
  2.  
  3. var_export($r);
Go to the top of the page
+Quote Post
kunass2
post
Post #11





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2011

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


w ktorym miejscu powinienem to wstawic? Jakbys mogl pomoc w ten sposob to dziekuje...


glownie chodzi tez o to jak podlaczyc finkcje pod href zeby ona zostala wywolana nie odrazu po zaladowaniu strony tylko po kliknieciu hrefa...
Go to the top of the page
+Quote Post
AndyPSV
post
Post #12





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


musisz zrobic strone z przeladowaniem

  1. <a href='URLtwojskrypt.php'>twoj link</a>

w pliku twojskrypt.php wstawiasz kod, ktory ma wykonac akcje, a nastepnie przekierowujesz na ta sama strone:

  1. <?php
  2.  
  3. // tu akcje
  4. exit(header('Location: httpURL'));
  5.  
  6. ?>


na twoim miejscu znalazlbym sobie kolege co zna php (poznal na forum albo znalazl w swoim otoczeniu)

Ten post edytował AndyPSV 12.03.2011, 15:32:02
Go to the top of the page
+Quote Post
kokers
post
Post #13





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

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


matko.... wystarczy AJAX. naprawdę... Szukaj o load w Jquery lub update w prototype. Poczytaj o tym, spróbuj, a jak będziesz miał jakiś problem pytaj dalej.

Ten post edytował kokers 12.03.2011, 15:33:07
Go to the top of the page
+Quote Post
AndyPSV
post
Post #14





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


chodzi o to, ze kolega nie zna php (podstaw), wiec pominmy gadke o ajax (albo jquery ;>)
jesli chcesz uzyc jquery to musisz i tak najpierw opracowac podstawowy kod
Go to the top of the page
+Quote Post
kokers
post
Post #15





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

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


sorry, ale nie rozumiem takiej postawy. Skoro chłopak pisze na forum i próbuje, to znaczy że chce się nauczyć. Nie widzę żadnego problemu aby przy okazji nauki php poznał jedną czy dwie funckje jakiejś biblioteki js... Każdy kiedyś zaczynał...
Go to the top of the page
+Quote Post
kunass2
post
Post #16





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2011

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


http://www.kursy.czestochowaonline.pl/mysql/3.html dostalem od Was ten link... to fakt nie znam wielu podstaw, ale mam ochote sie dowiedziec. A tam jest duzo na ten temat, tylko ze zanim to przestudiuje minie troche czasu, ale dam rade. Dzieki za pomoc. Ale jakby sie dalo jakos bez Ajax i JQuery to bede wdzieczny bo o tym to ja tylko slyszalem, a php juz analizuje od tygodnia i probuje go wykorzystac...(IMG:style_emoticons/default/wink.gif) wymyslilem cos takiego:


  1. <?php
  2. require "connection.php";
  3. connection();
  4.  
  5. $result = mysql_query("SELECT * FROM zlote_mysli WHERE type = {$_GET['tp']}");
  6.  
  7.  
  8.  
  9. if (isset($_GET['tp']))
  10. {
  11. while($zlote_mysli = mysql_fetch_row($result)){
  12.  
  13.  
  14.  
  15. echo $zlote_mysli->type;
  16. echo $zlote_mysli->tresc;
  17. echo $zlote_mysli->autor;
  18. }
  19. }
  20. else
  21. echo "nie ma nic";
  22. ?>



Chcialem zeby mi wybralo z tabeli zlote_mysli wszystkie wiersze ktore maja okreslona wartosc pola type i je wypisalo. Pozniej ten link ktory mi wygeneruje kod(czyli *.php?tp=costam) chcialem wykorzystac do przekierowania pod hrefy. Polaczylem sie z baza, narzucilem zapytanie, zastosowalem petle while, wypisalem. Ale nie dziala. Moja kolumna type w tabeli ma rodzaj pola longtext. Wazne to jest?
Go to the top of the page
+Quote Post
kokers
post
Post #17





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

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


ważne, bo stringi dajesz w apostrofach. a stringiem jest typ m.in longtext, text, varchar. No i jeśli to są krótkie teksty (jak nazwa autora) to nie ma sensu dawać longtext tylko wystarczy varchar.
spróbuj tak:

  1. $result = mysql_query("SELECT * FROM zlote_mysli WHERE type LIKE '{$_GET['tp']}'");
Go to the top of the page
+Quote Post
kunass2
post
Post #18





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2011

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


nie dziala, a na pewno mam dobrze konstrukcje z while? bo zakladajac ze sql jest juz poprawnie tylko to moze budzic watpliwosci...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.12.2025 - 20:30