Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML][CSS]Podział wyników z zapytania
lukko
post 24.02.2010, 09:16:45
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 12.03.2009

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


Witam,


Kod
print '<div style="float: left; height: 25px;">';
print '<a href="index.php?id='. $numer .'">'. $nazwa .'</a>.' "><br>';
print '</div>';


Ten wycinek kodu wyświetla mi zbiór linków pobranych z bazy.

Ale paskudnie się to wyświetla. Jak zrobić by wyświetliło się 10 linków w jednej tabeli czy tam divie, kolejne 10 w tabeli obok itd.

Ten post edytował lukko 24.02.2010, 09:18:11
Go to the top of the page
+Quote Post
thek
post 24.02.2010, 09:26:15
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Choćby tak, że określisz szerokość tego diva i co X rekordów go zamkniesz otwierając nowy. Oczywiście divy też będą mieć float nadany. By to zobrazować:
  1. <div style="width:250px; float:left">
  2. <a href="link">link</a>
  3. <a href="link">link</a>
  4. <a href="link">link</a>
  5. <a href="link">link</a>
  6. <a href="link">link</a>
  7. </div>
  8. <div style="width:250px; float:left">
  9. <a href="link">link</a>
  10. <a href="link">link</a>
  11. <a href="link">link</a>
  12. <a href="link">link</a>
  13. <a href="link">link</a>
  14. </div>


Ten post edytował thek 24.02.2010, 09:28:11


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
grassmen
post 24.02.2010, 09:28:27
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 2
Dołączył: 4.04.2006
Skąd: Karpacz

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


A ja bym to wziął w pętle (for lub dowolną) zapiął tabelę wyświetlił i co i=10 czy ile tam chcesz zamknął <tr> lub całą <table>
Go to the top of the page
+Quote Post
lukko
post 24.02.2010, 09:51:37
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 12.03.2009

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


thet tak to nie bo te linki mi z bazy lecą:
  1. while ($rekord = mysql_fetch_assoc ($wynik)) {
  2. $numer = $rekord['id_numer'];
  3. $nazwa = $rekord['nazwa'];
  4.  
  5.  
  6. print '<div style="float: left; height: 25px;">';
  7. print '<a href="index.php?id='. $numer .'">'. $nazwa .'</a><br>';
  8. print '</div>';
  9. }
  10.  


grassmen zgadza się jakąś pętlą, tylko nie mogę tego ogarnąć do końca snitch.gif

Ma ktoś jakiś przykład?

Ten post edytował lukko 24.02.2010, 09:52:14
Go to the top of the page
+Quote Post
exood
post 24.02.2010, 10:24:52
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

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


Cytat
  1. while ($rekord = mysql_fetch_assoc ($wynik)) {
  2. $numer = $rekord['id_numer'];
  3. $nazwa = $rekord['nazwa'];
  4.  
  5.  
  6. print '<div style="float: left; height: 25px;">';
  7. print '<a href="index.php?id='. $numer .'">'. $nazwa .'</a><br>';
  8. print '</div>';
  9. }
  10.  


  1. $i = 0;
  2. $ile = ceil(count($wynik));
  3. //$ile = ceil(mysql_num_rows($wynik));
  4. while ($rekord = mysql_fetch_assoc ($wynik)) {
  5. $i++;
  6. $numer = $rekord['id_numer'];
  7. $nazwa = $rekord['nazwa'];
  8.  
  9.  
  10. print '<div style="float: left; height: 25px; width: 50%;">';
  11. print '<a href="index.php?id='. $numer .'">'. $nazwa .'</a><br>';
  12. if($i == $ile){
  13. print '</div><div style="float: left; height: 25px; width: 50%;">';
  14. }
  15. print '</div>';
  16. }
  17.  


wyświetlanie w dwóch kolumnach.

Ten post edytował exood 24.02.2010, 10:26:30
Go to the top of the page
+Quote Post
lukko
post 24.02.2010, 10:32:05
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 12.03.2009

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


OK super a jak bym chciał na warunek: max 10 linków w jednej kolumnie i jak przekroczy to tworzy nową kolumnę z max10 linkami itd...
Go to the top of the page
+Quote Post
thek
post 24.02.2010, 10:51:00
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A co to za problem, by całość leciała w pętli? Ja Ci tylko zaprezentowałem jak ma wyglądać kod html w źródle strony, nie że tak ma być na sztywno w pliku php. To jak zrealizujesz te operacje zależy od wyobraźni i stopnia separacji kodu od prezentacji. Albo w pętli while robisz generowanie kodu, albo pakujesz to do 2 wymiarowej tablicy pokroju:
  1. $podzial = array( [0] => array(tutaj_10_linków), [1] => array(tutaj_10_linków), [2] => array(tutaj_10_linków) )

i dopiero w widoku całość wrzucasz w html wedle upodobań. Zwracając uwagę na fakt, że te 10 dla ostatniego elementu tablicy to tylko wartość maksymalna i może być wyników 5 choćby. tak więc widok zrobi Ci wtedy count( $podzial ) floatowanych divów, które w pętli while wyświetlą wszystkie linki zawarte w $podzial[0], $podzial[1] itd.

Zauważ, że exood zaproponował Ci rozwiązanie, które podałem jako pierwsze, czyli z mieszaniem kodu php i html.
Noż ludzie. Trochę własnego myślenia, a nie czekanie na podanie kodu na tacy mad.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
exood
post 24.02.2010, 10:58:33
Post #8





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

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


Cytat(lukko @ 24.02.2010, 10:32:05 ) *
OK super a jak bym chciał na warunek: max 10 linków w jednej kolumnie i jak przekroczy to tworzy nową kolumnę z max10 linkami itd...


  1. $i = 1;
  2. while ($rekord = mysql_fetch_assoc ($wynik)) {
  3. $i++;
  4. $numer = $rekord['id_numer'];
  5. $nazwa = $rekord['nazwa'];
  6.  
  7.  
  8. print '<div style="float: left; height: 25px;">';
  9. print '<a href="index.php?id='. $numer .'">'. $nazwa .'</a><br>';
  10. if($i == 10){
  11. $i = 1;
  12. print '</div><div style="float: left; height: 25px;">';
  13. }
  14. print '</div>';
  15. }
  16.  


z tym że jak chcesz wyświetlać obok siebie jak ci się trafi długa lista to ci się nie zmieści wszystko...

Ten post edytował exood 24.02.2010, 11:33:15
Go to the top of the page
+Quote Post
thek
post 24.02.2010, 11:25:39
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




No to niech nada temu floatowanemu divowi zawierającemu linki szerokość jak ja zrobiłem na 250px w przykładzie + skracanie anchor textu linka by się w 250px mieścił, a na bank kilka kolumn wejdzie. No i pamiętaj exood, że linków może być 56, a Ty dzielisz tylko po 10 linkach. Tu trzeba użyć modulo, które po 10 zrobi tę nową kolumnę smile.gif Inna sprawa, że zrobienie tego na końcu pętli przy pełnych dziesiątkach w stylu 30, 60, 110 zrobi jedna kolumnę kompletnie pustą. Tworzenie nowej kolumny musi być na samym początku while i w przypadku liczby w stylu limit+1, czyli 41, 111, 241 tworzyło by nową kolumnę, zamykając jednocześnie starą. Jak?
  1. <div style="float:left; width:250px">
  2. <?php
  3. $limit = 10;
  4. $i = 1;
  5. while( $wyniki ) {
  6. if($i > $limit AND $i%10 == 1) {
  7. echo '</div><div style="float:left; width:250px">';
  8. }
  9. echo 'tutaj robisz te linki swoje';
  10. $i++;
  11. }
  12. ?>
  13. </div>
Tylko nie pisz, że nie działa. Specjalnie tak zrobiłem byś dostosował mój przykład do swoich potrzeb, a nie kopiuj-wklej. I warunek if MUSI tak być, by nie zamknęło pierwszego div od razu, bo usunięcie sprawdzenia $limit w stosunku do $i zrobi Ci pierwszą kolumnę pustą. Stąd $i musi być większe niż $limit, czyli pierwszy if wykona się przy wierszu limit + 1 a nie od razu pierwszym smile.gif Po prostu programuj więcej i myśl trochę.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
exood
post 24.02.2010, 11:32:01
Post #10





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

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


Cytat(thek @ 24.02.2010, 11:25:39 ) *
No i pamiętaj exood, że linków może być 56, a Ty dzielisz tylko po 10 linkach.


pisałem na szybko i mi umknęła jedna linijka winksmiley.jpg już poprawione
Go to the top of the page
+Quote Post
lukko
post 24.02.2010, 11:33:18
Post #11





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 12.03.2009

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


Podziękować:
  1. print '<div style="float:left; width:250px">';
  2. $limit = 10;
  3. $i = 1;
  4. while( $rekord = mysql_fetch_assoc ($wynik1)) {
  5. $numer = $rekord['id_numer'];
  6. $nazwa = $rekord['nazwa'];
  7. if($i > $limit AND $i%10 == 1) {
  8. echo '</div><div style="float:left; width:250px">';
  9. }
  10. echo '<a href="index.php?id='. $numer .'">'. $nazwa .'</a><br>';
  11. $i++;
  12. }
  13. print '</div>';


Go to the top of the page
+Quote Post
thek
post 24.02.2010, 11:41:58
Post #12





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tylko pamiętaj o jednym... Następny element ZA tymi divami niech ma clear:both bo inaczej trochę więcej na stronie zacznie Ci "pływać" biggrin.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
lukko
post 24.02.2010, 11:47:00
Post #13





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 12.03.2009

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


Nie no spoko linków jest 85, jeszcze numeracje tych linków potrzebuje tongue.gif ale już se włączę tą myślącą biggrin.gif i pętelkę pomęczę smile.gif
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: 21.06.2025 - 04:35