Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Segregacja danych z mysql
charlie-cherry
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 15.12.2007

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


Witam.

Mam taki problem - pobieram z bazy danych wpisy dotyczącego danego tytuły gry (który wpisuję w wyszukiwarce). Dostaję kilka wpisów, jednakże chcę je posegregować na "tipsy i kody" oraz "solucje" - dodam, że w bazie danych każdy wpis ma już dopisaną odpowiednią kategorię w dodatkowym polu.
Mam taki kod:

Kod
  
   <b>$test = trim($_GET['tytulgry']);
    mysql_connect(localhost, xxxx, xxxx) or die(mysql_error());
    mysql_select_db("wilq") or die(mysql_error());
    mysql_query('SET CHARACTER SET utf8');
    mysql_query('SET NAMES utf8');
    $query = "select * from tnt where tytul='$test';";
    $result = mysql_query($query);
    $num_result = mysql_num_rows($result);
       if (!($test)) { echo 'Nie wpisałeś tytułu gry!';}
    elseif ($num_result == 0)
    {echo "<p>Niestety, nie ma takiej gry w bazie danych.
    Możesz spróbować wyszukać raz jeszcze.
    Upewnij się, że wspisałeś poprawny tytuł gry.</p>";}
    else { echo "<h6>Liczba znalezionych wpisów: $num_result </h6>";}
          
   while ( $rekord = mysql_fetch_assoc ($result)) {
   $numer = $rekord['numer'];
   $tytul = stripslashes($rekord['tytul']);
   $rodzaj = stripslashes($rekord['rodzaj']);
   $komputer = ucwords($rekord['komputer']);
   $tresc= stripslashes($rekord['tresc']);
   $autor = stripslashes($rekord['autor']);
   $zrodlo = stripslashes($rekord['zrodlo']);
  
  
   if ($rodzaj == "solucja") {echo "Solucje <br> ";
     echo "<strong>$tytul</strong>"." - "."$komputer"."<br> ";
     echo '<h6 class="extra">'.$autor.", "."$zrodlo".'</h6>';
     echo nl2br($tresc)."<br> ";}
   else { echo "Tipsy i Kody <br> ";
     echo "<strong>$tytul</strong>"." - "."$komputer"."<br> ";
     echo '<h6 class="extra">'.$autor.", "."$zrodlo".'</h6>';
     echo nl2br($tresc)."<br> ";}
   }


Nie wiem jak zrobić aby tekst "Tipsy i kody" oraz "Solucje" pojawiały się tylko raz, niezależnie od liczby rekordów (chyba, że jest ich zero, wtedy nie powinny się pojawiać w ogóle). Czyli jak sprawić, aby ta linijka kodu wykonała się tylko raz, a reszta do oporu.

Wiem, że teoretycznie mógłbym zrobić dwa zapytania do bazy danych, każde z innym "where", ale chyba musi być jakiś inny, prostszy sposób?

Ten post edytował charlie-cherry 25.01.2008, 00:14:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
arecki
post
Post #2





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

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


Na szybko możesz zrobić "ORDER BY rodzaj" w zapytaniu SQL'owym no i stworzyć zmienną w której będziesz trzymał ostatnio wyświetlony rodzaj. W każdej pętli sprawdzasz czy aktualny rodzaj jest taki sam z poprzednim. Jeżeli tak - to nie wyświetlasz go. Jeżeli nie - to wyświetlasz go przed rekordem i zastępujesz w zmiennej tymczasowej ostatni rodzaj. Proste ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
charlie-cherry
post
Post #3





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 15.12.2007

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


Pomysł dobry, ale nie wiem jak go wykonać w praktyce. Można prosić o pomoc?
Go to the top of the page
+Quote Post
arecki
post
Post #4





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

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


Oj ludzie... to coś pomiędzy uszami należy do myślenia. Proszę. I żeby mi to było przed ostatni raz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. $query = "SELECT * FROM tnt WHERE tytul='$test' ORDER BY rodzaj";
  3.  
  4. $ostatniRodzaj = '';
  5.  
  6. while ($rekord = mysql_fetch_assoc ($result)) {
  7. $numer = $rekord['numer'];
  8. $tytul = stripslashes($rekord['tytul']);
  9. $rodzaj = stripslashes($rekord['rodzaj']);
  10. $komputer = ucwords($rekord['komputer']);
  11. $tresc= stripslashes($rekord['tresc']);
  12. $autor = stripslashes($rekord['autor']);
  13. $zrodlo = stripslashes($rekord['zrodlo']);
  14.  
  15. if(strcasecmp($ostatniRodzaj, $rodzaj) != 0) {
  16. echo '<h3>';
  17. switch ($rodzaj) {
  18. case 'solucja': echo 'Solucje'; break;
  19. case 'tipsy': echo 'Tipsy i Kody'; break;
  20. }
  21. echo '</h3>';
  22. $ostatniRodzaj = $rodzaj;
  23. }
  24. echo "<strong>$tytul</strong>"." - "."$komputer"."<br> ";
  25. echo '<h6 class="extra">'.$autor.", "."$zrodlo".'</h6>';
  26. echo nl2br($tresc)."<br> ";
  27. }
  28. ?>
Go to the top of the page
+Quote Post
charlie-cherry
post
Post #5





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 15.12.2007

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


Wielkie dzięki, dokładnie o to mi chodziło. Teraz tylko muszę zrozumieć jak to działa i dodac własne modyfikacje.
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: 23.08.2025 - 14:51