Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> specyficzne wyświetlanie wierszy z mysql
PaKoS
post 10.05.2006, 21:48:04
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


Witam,
przejdę od razu do pytania:
(na php się w miarę znam ale tego jeszcze nie robiłem)

Mam tabele o nazwie powiedzmy tabela i ma ona wiele kolumn i wierszy z danymi ale chcę wyświetlić konkretnie weirsze z kolumny NAME.
(do moderatora: czytać dalej a nie przenosić winksmiley.jpg )
Mam kod:

  1. <?php
  2. //łacze sie z baza i wybieram a potem
  3. $query = 'SELECT name FROM tabela WHERE nazwa = php';
  4. $result = mysql_query($query, $sqlconnect);
  5. echo '<table>';
  6. while($row = mysql_fetch_row($result)){
  7. echo '<tr><td>$row[0]</td></tr>';
  8. }
  9. echo '</table>';
  10. ?>


i teraz wyswietla mi to w ten sposob:

<tr><td>wartosc 1</td></tr>
<tr><td>wartosc 2</td></tr>
<tr><td>wartosc 3</td></tr>
...

a ja chce to wyswietlic tak:

<tr><td>wartosc 1</td><td>wartosc 2</td></tr>
<tr><td>wartosc 3</td><td>wartosc 4</td></tr>
<tr><td>wartosc 5</td><td>wartosc 6</td></tr>
...

jak to zrobić? :roll2:
Go to the top of the page
+Quote Post
ave
post 10.05.2006, 21:56:29
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 2
Dołączył: 29.01.2004
Skąd: Rz-ów

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


  1. <?php
  2. $a=0;
  3. while($row = mysql_fetch_row($result))
  4. {
  5. echo (($a % 2==0) ? '<tr>' : '').'<td>'.$row[0].'</td>'.(($a++ % 2==0) ? '</tr>' : '');
  6. }
  7. ?>


dajesz jaka zmienna ktora powiekszacz co przejscie petli o 1, i sprawdzacz czy reszta z z dzielenia przez 2 jest rowna 0 jesli tak to dajesz <tr> i </tr>

Ten post edytował ave 10.05.2006, 21:57:52
Go to the top of the page
+Quote Post
PaKoS
post 10.05.2006, 22:05:48
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


hmm ok doszedłem już do tego (ale mimo to - dzięki ~ave)
ale mam inny problem:
1. oto mój kod
  1. <?php
  2.  
  3. $php_query = 'SELECT * FROM ws_sub_categories WHERE in_cat = "php" ORDER BY name';
  4. $php_result = mysql_query($php_query, $sqlconnect);
  5. opentable("Skrypty :: php");//moja funkcja, niewazne
  6. echo '<table cellpadding="0" cellspacing="0" border="0" width="100%">';
  7. echo '<tr><td colspan="2">&nbsp;</td></tr>';
  8. $i = 0;
  9.   while ($php_row = mysql_fetch_assoc($php_result)) {
  10.    if ($i == 2)
  11.     {
  12.        echo "</tr>";
  13.        $i = 0;
  14.     }
  15.      if ($i == 0)
  16.         echo "<tr>";
  17.     $i++;
  18.     echo "<td>".$php_row[name]."</td>";
  19.   }
  20. if ($i != 0)
  21.   echo "</tr>";
  22.  
  23. echo '<tr><td  colspan="2">&nbsp;</td></tr>';
  24. echo '</table>';
  25. closetable();//moja funkcja, niewazne
  26.  
  27. ?>


2. oto moje pytanie:
tablele są układane w taki sposób:
(np. w kolumnie name mamy wiersze: Cccc, Dddd, Aaaa, Bbbb)

z poleceniem ORDER BY name sortuje owszem alfabetycznie ALE układa to tak:

<tr><td>Aaaa</td><td>Bbbb</td></tr>
<tr><td>Cccc</td><td>Dddd</td></tr>

a mi chodzi o to żeby ułożył to tak:

<tr><td>Aaaa</td><td>Cccc</td></tr>
<tr><td>Bbbb</td><td>Dddd</td></tr>

(chodzi o ułożenie alfabetyczne ale nie wierszami tylko kolumnami)

Ten post edytował PaKoS 10.05.2006, 22:17:59
Go to the top of the page
+Quote Post
ave
post 10.05.2006, 22:21:30
Post #4





Grupa: Zarejestrowani
Postów: 117
Pomógł: 2
Dołączył: 29.01.2004
Skąd: Rz-ów

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


sqlowym pytaniem raczej takiego czegos nie zrobisz,
pewnie zostaje przy wyciaganiu wrzucac do 2 roznych tabel
  1. <?php
  2.  
  3. $a=0;
  4. while ($php_row = mysql_fetch_assoc($php_result)) {
  5.  if($a % 2==0) $tablica_a[]=$php_row[name];
  6. else $tablica_b[]=$php_row[name];
  7. }
  8. ?>


a potem to wyrzucac
  1. <?php
  2.  
  3. foreach($tablica_a as $aa)
  4. {
  5. echo $tablca_a[$aa].' / '.$tablca_b[$aa];
  6.  
  7. }
  8. ?>


Ten post edytował ave 10.05.2006, 22:21:43
Go to the top of the page
+Quote Post
PaKoS
post 10.05.2006, 22:28:11
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


hmmm dosyć skomplikowany sposób
oczywiście zawsze można go zastosować ale myślałem że istnieje prostsze rozwiązanie snitch.gif
dzięki za podpowiedzi

Ten post edytował PaKoS 10.05.2006, 22:28:58
Go to the top of the page
+Quote Post
Ludvik
post 10.05.2006, 22:32:00
Post #6





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Jeżeli pobierzesz posortowane już dane, możesz podzielić otrzymaną tablicę na dwie mniejsze (lewa i prawa strona). Jeżeli masz parzystą liczbę elementów, to dzielisz w stosunku 1:1, jeżeli nie, to dzielisz tak, aby po lewej stronie znalazł się o 1 element więcej niż po prawej. Potem korzystając ze znajomości liczby wierszy z lewej strony możesz przejść przez obie tablice pętlą for, wyświetlając je mniej więcej tak:
  1. <?php
  2. echo '<tr><td>' . $lewa[$i] . '</td><td>' . isset($prawa[$i]) ? $prawa[$i] : '' . </td></tr>';
  3. ?>

Sprawdzanie prawej wartości można pominąć, jeżeli lewa strona będzie zawsze równoliczna z prawą.


--------------------
Go to the top of the page
+Quote Post
PaKoS
post 11.05.2006, 10:22:12
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


hmm no tak
ale jak to podzielić na dwie mniejsze tablice tak żeby nie wyszło mi coś takiego:
(to inne wartości ale podzielił każdą kolumnę od a do z)

<tr><td>Aaaa</td><td>Dddd</td></tr>
<tr><td>Bbbb</td><td>Oooo</td></tr>
<tr><td>Xxxx</td><td>Zzzz</td></tr>

jakieś propozycje?
Go to the top of the page
+Quote Post
nospor
post 11.05.2006, 10:28:24
Post #8





Grupa: Moderatorzy
Postów: 36 478
Pomógł: 6302
Dołączył: 27.12.2004




podzial na tablice dostales od ~ave, aczkolwiek zapomnial on o jednej bardzo waznej sprawie smile.gif: $a++

  1. <?php
  2. $a=0;
  3. while ($php_row = mysql_fetch_assoc($php_result)) {
  4.  if($a % 2==0) $tablica_a[]=$php_row['name'];
  5. else $tablica_b[]=$php_row['name'];
  6. $a++;
  7. }
  8.  
  9. ?>
NIe stosuj natomiast jego kodu do wyswietlania, bo "troche" mu nie wyszedl. Do wyswietlania nadaje sie kod ~Ludvik'a


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

"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
PaKoS
post 11.05.2006, 10:41:09
Post #9





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


no nie powiedziałbym że to wszystko po złożeniu działa
chyba że coś robię źle
konkretnie mam problemy z wyświetleniem po skorzystaniu z kodu ~Ludvik-a

Ten post edytował PaKoS 11.05.2006, 10:43:15
Go to the top of the page
+Quote Post
nospor
post 11.05.2006, 10:44:56
Post #10





Grupa: Moderatorzy
Postów: 36 478
Pomógł: 6302
Dołączył: 27.12.2004




Cytat
że to wszystko po złożeniu działa
oj, zalezy co rozumiesz przez "po zlozeniu". ja mowilem o inteligentnym zlozeniu winksmiley.jpg zauważ ze w kodzie ~ave tablica nazywa sie: $tablica_a, $tablica_b
a w drugim kodzie jest to $lewa i $prawa. Mam nadzieje ze wzioles to pod uwage. ale najlepiej bys zrobil, jakbys podal kod po zlozeniu. Na przyszlosc jak piszesz ze cos nie dziala, to pamietaj o podaniu kodu


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

"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
PaKoS
post 11.05.2006, 10:56:57
Post #11





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


*nospor, wiem że musiałeś przywyknąć do głupków ale bez przesady blink.gif

przy takim kodzie
  1. <?php
  2. $a = 0;
  3. while($php_row = mysql_fetch_assoc($php_result)){
  4. if($a % 2 == 0){$tablica_a[$a] = $php_row['name'];}
  5. else{$tablica_b[$a] = $php_row['name'];}
  6. $a++;
  7. }
  8. for($i=0; $i < $php_num_rows; $i++){
  9. echo '<tr><td>'.$tablica_a[$i].'</td><td>'.$tablica_b[$i].'</td></tr>';
  10. }
  11. ?>


wyświetla tabele w taki sposób:


(nie liczmy pierwszej <tr> i ostatniej - sam je dodałem poza tym kodem)

czyli tak "schodkowo":
<tr><td>WARTOSC 1</td><td></td></tr>
<tr><td></td><td>WARTOSC 3</td></tr>
<tr><td>WARTOSC 2</td><td></td></tr>

...
Go to the top of the page
+Quote Post
nospor
post 11.05.2006, 11:00:23
Post #12





Grupa: Moderatorzy
Postów: 36 478
Pomógł: 6302
Dołączył: 27.12.2004




Cytat
*nospor, wiem że musiałeś przywyknąć do głupków ale bez przesady
Ja ci tylko mowilem o jakim ja zlozeniu mowilem. NIe podajac kodu moglem jedynie gdybac i miec nadzieje ze zrobiles go poprawnie. Ale jednak widze ze sie mylilem.
$tablica_a[$a] czy widziales gdzie w kodzie aby tak bylo? nie, bylo o tak:$tablica_a[]. to jest zasadanicza roznica. Jesli nie wiesz co to oznacza to proponuje manuala by sie dowiedziec smile.gif

$php_num_rows - co to za zmienna? ona zawiere liczby wszystkich rekordów? źle. ona ma zawierac liczbe elemntów w pierwszej tabeli.

ps: i nie mowilem ze jestes glupi. A na forum nie przywykam do glupków bo ich nie ma. sa za to ludzie co zamiast zrobic to co mam w podpisie, to pisza bez namyslu a potem kwiatki wychodzą smile.gif


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

"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
PaKoS
post 11.05.2006, 11:17:36
Post #13





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


  1. <?php
  2. $php_query = 'SELECT * FROM ws_sub_categories WHERE in_cat = "php" ORDER BY name';
  3. $php_result = mysql_query($php_query, $sqlconnect);
  4. $php_num_rows = mysql_num_rows($php_result);
  5. opentable("Skrypty :: php");
  6. echo '<table cellpadding="0" cellspacing="0" border="1" width="100%">';
  7. echo '<tr><td colspan="2">&nbsp;</td></tr>';
  8.  
  9. $a = 0;
  10. while($php_row = mysql_fetch_assoc($php_result)){
  11. if($a % 2 == 0){$tablica_a[] = $php_row['name'];}
  12. else{$tablica_b[] = $php_row['name'];}
  13. $a++;
  14. }
  15.  
  16. for($i=0; $i < count($tablica_a); $i++){
  17. echo '<tr><td>'.$tablica_a[$i].'</td><td>'.$tablica_b[$i].'</td></tr>';
  18. }
  19. ?>


wyśwetla ok, ale nie działa już kiedy mamy nieparzystą liczbę rekordów,
czyli nie działa to co podał ~Ludvik, więc jak robie tak:
  1. <?php
  2.  
  3. for($i=0; $i < $php_num_rows; $i++){
  4. echo '<tr><td>'.$tablica_a[$i].'</td><td>'.isset($tablica_b[$i]) ? $tablica_b[$i] : ''.'</td></tr>';
  5. }
  6.  
  7. ?>
Go to the top of the page
+Quote Post
nospor
post 11.05.2006, 11:21:30
Post #14





Grupa: Moderatorzy
Postów: 36 478
Pomógł: 6302
Dołączył: 27.12.2004




  1. <?php
  2. for($i=0; $i < $php_num_rows; $i++){
  3. echo '<tr><td>'.$tablica_a[$i].'</td><td>'.isset($tablica_b[$i]) ? $tablica_b[$i] : ''.'</td></tr>';
  4. }
  5. ?>
Juz ci mowilem, ze nie moze tam byc $php_num_rows.

  1. <?php
  2. $ilosc = count($tablica_a);
  3. for($i=0; $i < $ilosc; $i++){
  4. echo '<tr><td>'.$tablica_a[$i].'</td><td>'.(isset($tablica_b[$i]) ? $tablica_b[$i] : '').'</td></tr>';
  5. }
  6. ?>


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

"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
PaKoS
post 11.05.2006, 11:30:09
Post #15





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


ahh sorry nie wiem skąd tam sie wzielo to na wpisie w forum bo w kodzie mialem ok, ale to nadal nie dziala, zebyc byla jasnosc podaje caly kod, taki jaki jest teraz:
  1. <?php
  2.  
  3. $php_query = 'SELECT * FROM ws_sub_categories WHERE in_cat = "php" ORDER BY name';
  4. $php_result = mysql_query($php_query, $sqlconnect);
  5. $php_num_rows = mysql_num_rows($php_result);
  6. opentable("Skrypty :: php");
  7. echo '<table cellpadding="0" cellspacing="0" border="1" width="100%">';
  8. echo '<tr><td colspan="2">&nbsp;</td></tr>';
  9.  
  10. $a = 0;
  11. while($php_row = mysql_fetch_assoc($php_result)){
  12. if($a % 2 == 0){$tablica_a[] = $php_row['name'];}
  13. else{$tablica_b[] = $php_row['name'];}
  14. $a++;
  15. }
  16.  
  17. for($i=0; $i < count($tablica_a); $i++){
  18. echo '<tr><td>'.$tablica_a[$i].'</td><td>'.(isset($tablica_b[$i]) ? $tablica_b[$i] : '').'</td></tr>';
  19. }
  20.  
  21. echo '<tr><td colspan="2">&nbsp;</td></tr>';
  22. echo '</table>';
  23. closetable();
  24.  
  25. ?>


i on daje cos takiego:
Go to the top of the page
+Quote Post
nospor
post 11.05.2006, 11:39:13
Post #16





Grupa: Moderatorzy
Postów: 36 478
Pomógł: 6302
Dołączył: 27.12.2004




no to teraz ja dalem ciala smile.gif nie wiem czemu ubzduralo mi sie ze kod ~ave jest ok blink.gif Kod do dzielenia jest zly. poprawka:
  1. <?php
  2. $a = 0;
  3. $half = round($php_num_rows / 2);
  4. while($php_row = mysql_fetch_assoc($php_result)){
  5. if($a < $half){$tablica_a[] = $php_row['name'];}
  6. else{$tablica_b[] = $php_row['name'];}
  7. $a++;
  8. }
  9.  
  10. ?>


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

"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
PaKoS
post 11.05.2006, 12:22:47
Post #17





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.03.2006

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


teraz wszystko działa super .. ale będzie serwis aaevil.gif
dzięki wielkie za pomoc ~nospor
Go to the top of the page
+Quote Post
matrach
post 11.05.2006, 18:10:41
Post #18





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 17.04.2006

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


Ja bym proponował bardziej dynamiczne rozwiązanie.
W moim skrypcie jest zmienna ilośc kolumn.
Oto on:
  1. <?php
  2. while($php_row = mysql_fetch_assoc($php_result)){
  3. $tabela[] = $php_row['name'];
  4. }
  5. // ilość kolumn
  6. $kolumny = 2;
  7. //ilość wierszy na kolumne
  8. $per = ceil(count($tabela) / $kolumny);
  9. $tabela = array_chunk($tabela, $per);
  10. echo '<table>';
  11. //wiersz
  12. for($i=0;$i<$per;$i++)
  13. {
  14.  echo '<tr>';
  15.  //kolumna
  16.  for($j = 0; $j < $kolumny; $j++)
  17. echo '<td>'.$tabela[$j][$i].'</td>';
  18.  
  19.  echo '</tr>';
  20. }
  21. echo '</table>';
  22. ?>

$kolumny odpowiadają za ilość kolumn.
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: 11.06.2024 - 22:23