Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] wyswietla za duzo ..., problem z zapytaniem
blackneron
post 13.01.2007, 00:33:46
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 5.01.2007
Skąd: Gdańsk

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


  1. <?php
  2. $sql= select a.id, a.xxx, a.yyy, a.zzz, a.rrr, b.id, b.data
  3. from tab1 AS a, tab2 AS b
  4. where a.id=b.id and b.data='$data'
  5. $query = mysql($query);
  6.  
  7. while($wiersz=mysql_fetch_array($query))
  8. {
  9. print "<p>XXX:".$wiersz['xxx']" | ";
  10.  
  11. $aqq="select * from tab2 where data='$data' and id=$wiersz[id]";
  12. $a=mysql_query($aqq);
  13.  
  14.  while($row=mysql_fetch_array($a))
  15.  {
  16. print " ".$row['godzina']." , </p>";
  17.  }
  18. }
  19. ?>


Problem jest taki, że wyświetla tyle xxx ile jest w bazie. A chcem aby mi wyswietlilo tylko raz same 'xxx' i dalej wartości z drugiego zapytania, czyli jak np. godzin mam 3 to wyświeltic ma: xxx | 11:00, 12:00, 14:00.

Ten post edytował blackneron 13.01.2007, 00:34:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
eS...
post 13.01.2007, 01:17:59
Post #2





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

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


  1. <?php
  2. $aqq="select * from tab2 where data='$data' and id=$wiersz[id] LIMIT 3";
  3. ?>


--------------------
Go to the top of the page
+Quote Post
Cienki1980
post 13.01.2007, 09:42:46
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(eS... @ 13.01.2007, 01:17:59 ) *
  1. <?php
  2. $aqq="select * from tab2 where data='$data' and id=$wiersz[id] LIMIT 3";
  3. ?>

To rozwiązanie nic nie da w przypadku gdy będa np 4 godziny albo i więcej.

Musiałbyć przy każdym przejściu przez pętle główna WHILE sprawdzać jaką wartośc miało xxx w poprzednim przejściu. Jeżeli taka samą jak aktualnie pobrana wartość to jej nie wyświetlać, jeżeli inna to wyświetlić.


--------------------
404
Go to the top of the page
+Quote Post
blackneron
post 16.01.2007, 22:32:25
Post #4





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 5.01.2007
Skąd: Gdańsk

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


zupełnie nie mam pomysłu jak to zrobić... koncepcja prosta ale coś cienko z wykonaniem
Go to the top of the page
+Quote Post
Cienki1980
post 16.01.2007, 22:56:46
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Pisane na szybko i bez zbędnego sprawdzania, tak aby tylko pokazać koncepcje:

  1. <?php
  2. $sql= "select a.id, a.xxx, a.yyy, a.zzz, a.rrr, b.id, b.datafrom tab1 AS a, tab2 A
    S bwhere a.id=b.id and b.data='$data'"
    ;
  3. $query = mysql($query);
  4.  
  5. $old_wiersz=array();
  6.  
  7. while($wiersz=mysql_fetch_array($query))
  8. {
  9. /*porownujesz jak ma sie stary wiersz do nowego */
  10.  if(isset($wiersz['xxx']!=$old_wiersz['xxx']) 
  11. print "<p>XXX:".$wiersz['xxx']" | ";
  12.  $aqq="select * from tab2 where data='$data' and id=$wiersz[id]";
  13.  $a=mysql_query($aqq);
  14.  while($row=mysql_fetch_array($a))
  15.  {
  16. print " ".$row['godzina']." , </p>";
  17.  }
  18.  $old_wiersz=$wiersz; // przypisujesz wartość aktualnie czytanego wiersza
  19. }
  20. ?>


Ten post edytował Cienki1980 16.01.2007, 22:58:12


--------------------
404
Go to the top of the page
+Quote Post
blackneron
post 18.01.2007, 20:02:56
Post #6





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 5.01.2007
Skąd: Gdańsk

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


nie działa, może jakieś inne pomysły ?
co to jest ten $old_wiersz, bo nie widze powodów jego wystąpienia.
Go to the top of the page
+Quote Post
Cienki1980
post 18.01.2007, 20:09:49
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


$old_wiersz to tablica w której przechowujesz ostatnio obrabiany rekord.

Tak jak pisałem to był tylko przykład pisany na szybko żeby pokazać koncepcje.

Co Ci nie działa?? Jakieś błędy questionmark.gif


--------------------
404
Go to the top of the page
+Quote Post
blackneron
post 18.01.2007, 21:53:57
Post #8





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 5.01.2007
Skąd: Gdańsk

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


Looknij na to.
  1. <?php
  2. $sql= "select a.id, a.xxx, a.yyy, a.zzz, a.rrr, b.id, b.datafrom tab1 AS a, tab2 A
    S bwhere a.id=b.id and b.data='$data'"
    ;
  3. $query = mysql($query);
  4.  
  5.  $old_wiersz=array();
  6.  
  7. while($wiersz=mysql_fetch_array($query)) // błąd - syntax error, unexpected T_IS_NOT_EQUAL
  8.  {
  9. if(isset($wiersz['xxx']!=$old_wiersz['xxx']) 
  10. print "<p>XXX:".$wiersz['xxx']" | ";
  11. $aqq="select * from tab2 where data='$data' and id=$wiersz[id]";
  12. $a=mysql_query($aqq);
  13.  
  14.  while($row=mysql_fetch_array($a))
  15.  {
  16. print " ".$row[godzina]." ";
  17.  }
  18.  
  19.  
  20. {
  21. print "<p><a href="link.php?xxx=$wiersz[xxx]&id=$wiersz[id]&data=$data">Link</p>"; }
  22. print "<hr />";
  23.  }
  24.  $old_wiersz=$wiersz;
  25.  }
  26. ?>


Ten post edytował blackneron 18.01.2007, 23:52:45
Go to the top of the page
+Quote Post
Cienki1980
post 18.01.2007, 22:18:09
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Na pewno jest błąd w zapytaniu przy where
Po drugie nie ma takiego czegoś jak mysql() a jest mysql_query().

Wiem, że ja to pisałem, ale również napisałem, że pisałem to szybko i bez sprawdzania żebyś tylko załapał klimat.

Ten post edytował Cienki1980 18.01.2007, 22:20:16


--------------------
404
Go to the top of the page
+Quote Post
blackneron
post 18.01.2007, 23:52:25
Post #10





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 5.01.2007
Skąd: Gdańsk

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


zapytanie sql'owe jest spoko, tam w where poprawiłem bo była literówka. I też ten sam komunikat o błędzie.
Tu coś jest pokrzaczone - if(isset($wiersz['xxx']!=$old_wiersz['xxx'])

Error: unexpected T_IS_NOT_EQUAL, expecting ',' or ')' in

Ten post edytował blackneron 18.01.2007, 23:54:07
Go to the top of the page
+Quote Post
maryaan
post 18.01.2007, 23:58:43
Post #11





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


przeciez brakuje drugiego nawiasu zamykajacego ')'

tu tez niezlego miksa zapodales
  1. <?php
  2. print "<p><a href="link.php?xxx=$wiersz[xxx]&id=$wiersz[id]&data=$data">Link</p>"; 
  3. ?>

nie lepiej tak
  1. <?php
  2. print '<p><a href="link.php?xxx='.$wiersz[xxx].'&id='.$wiersz[id].'&data='.$data.'">Link</p>';
  3. ?>


dziala jedno i drugie ale o ile latwiej teraz wylapac bledy

chyba ze u Ciebie nie ma drugiego backslasha to nie zadizlaa, tyle ukosnikow sie dodaje przy edycji ze nie wiem ktore sa ktore :]

Ten post edytował maryaan 19.01.2007, 00:08:43


--------------------
Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
Go to the top of the page
+Quote Post
Cienki1980
post 18.01.2007, 23:59:45
Post #12





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


  1. <?php
  2. if($wiersz['xxx']!=$old_wiersz['xxx'])
  3. ?>


Tak być powinno.


--------------------
404
Go to the top of the page
+Quote Post
blackneron
post 19.01.2007, 00:22:15
Post #13





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 5.01.2007
Skąd: Gdańsk

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


Cytat(Cienki1980 @ 18.01.2007, 23:59:45 ) *
  1. <?php
  2. if($wiersz['xxx']!=$old_wiersz['xxx'])
  3. ?>


Tak być powinno.



Po tej zmianie nie zrobi nic innego jak tylko wyświetli XXX. A mi chodz aby wyświetliło XXX | godzinki | Link .
A jak pod polem XXX nie będzie rzadnej godziny to poprostu nie wyświetli tego XXX.
Go to the top of the page
+Quote Post
Cienki1980
post 19.01.2007, 00:38:36
Post #14





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Patrząc po kolorowaniu kodu masz coś jeszcze nie tak w lini 22 ... gdzieś źle zamknięty "

po $data powinno być \" a nie samo "


--------------------
404
Go to the top of the page
+Quote Post
blackneron
post 19.01.2007, 02:02:22
Post #15





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 5.01.2007
Skąd: Gdańsk

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


Tak sobie myślę, że chyba coś jest nie tak w pierwszym zapytaniu. Może jego modyfikacja rozwiąże problem.
Już sam nie wiem.
Zauważyłem, że wyświetla tyle razy w pętli XXX ile razy zostało wywołanych godzin w pętli:
  1. <?php
  2. while($row=mysql_fetch_array($a))
  3. {
  4. print " ".$row[godzina]." ";
  5. }
  6. ?>


Ten post edytował blackneron 19.01.2007, 02:08:36
Go to the top of the page
+Quote Post

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: 19.07.2025 - 06:48