Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wyswietlaniem danych z bazy danych.
Forum PHP.pl > Forum > Przedszkole
jarekjr
skrypt pobiera z bazy danych dane z kolumn 'rzad' i 'miejsce' i wyświetla je na stronie w takiej formie:
Rząd: 1
miejsce: 1

Rząd: 1
miejsce: 2

Rząd: 3
miejsce: 3

Rząd: 3
miejsce: 5

Rząd: 10
miejsce: 9

... itd

A ja chciałbym go przerobić tak, żeby wyświetlało w taki sposób:


Rząd: 1
miejsce: 1, 2

Rząd: 3
miejsce: 3, 5


Rząd: 10
miejsce: 9

W tabeli osoby są pola:
lp(int, auto_increment, primary key), nazwisko(char),rzad(int),miejsce(int), data(date),seans(int)
a cały skrypt wyglada tak:
Kod
<?php
  
  $seans = $_POST['seans'];
  $data =$_POST['data'];
  // te dane sa z formularza
  
  if(!$data)
              {
              echo' Nie podałes daty.';
              echo '<br/><a href="rez.php">szukaj od nowa </a>';
              exit;
              }
              if (!get_magic_quotes_gpc())
                      {
                      $seans=addslashes($seans);
                      $data=addslashes($data);
                      }
  
  $link = mysql_connect("localhost", "root", "*****")
      or die ("Nie można się połączyć");
  
  mysql_select_db ("kino") or die ("Nie mozna wybrać bazy danych");
  
  
  $query = " SELECT rzad, miejsce FROM OSOBY WHERE data like'%".$data."%' and seans like'%".$seans."%' order by rzad";
  $result = mysql_query ($query) or die ("Zapytanie zakończone niepowodzeniem");
  
              $ile_znalezionych=mysql_num_rows($result);
  
              if ($ile_znalezionych<1)
   {
   echo'<p>Nie ma rzadnych rezerwacji. Wszystkie miejsca są wolne. </p>';
   }
  else
   {
          echo '<p>Na wybrany dzień: '.$data.' seans:'.$seans.' zarezerwowane są następujące miejsca:  ';
  $ile_znalezionych=mysql_num_rows($result);
              
              for($i=0;$i<$ile_znalezionych;$i++)
              {
              $wiersz=mysql_fetch_assoc($result);
              $i+1;
              echo '<p><strong> Rząd: ';
       echo stripslashes($wiersz['rzad']);
           echo '</strong>
  miejsce: ';
       echo stripslashes($wiersz['miejsce']);
       echo '</p>';
              }
  
   }
  
  
  mysql_close($link);
  
  
   ?>


Przypuszczam ze to trzeba cos pokombinowac z petlami albo z if else ale nie za bardzo wiem jak to zrobic.
Prosze o pomoc bo to jest dla mnie bardzo wazne.
Z góry wielkie dzięki.
YaQzi
Może tak?

  1. <?php
  2. $query = " SELECT rzad, miejsce
  3.            FROM OSOBY
  4.            WHERE data like'%".$data."%' and seans like'%".$seans."%'
  5.            order by rzad";
  6.  
  7. $result = mysql_query($query) or die ("Zapytanie nieudane!");
  8.  
  9. $rzad = 0;
  10. $tresc = "";
  11.    while($linia = mysql_fetch_row($result)) {
  12.        /*
  13.         linia[0] - rzad
  14.         linia[1] - miejsce
  15.         */
  16.        $miejsce = $linia[1];
  17.  
  18.        if($rzad != $linia[0]){
  19.            $rzad = $linia[0];
  20.            $tresc .= "</br></br><b>Rząd $rzad:</b></br>
  21.                    miejsce: $miejsce";
  22.        }
  23.        else{
  24.            $tresc .= ", $miejsce";
  25.        }
  26.  
  27.    }
  28. echo $tresc;
  29. ?>
jarekjr
Wielkie dzięki - to działa. Nie za bardzo wiem jak, ale działa! smile.gif
Jeszcze tylko jakbyś mi to objaśnił mniej więcej co ty tam zrobiłeś to by było SUPER. a dokładniej ten fragment kodu:
Kod
$rzad = 0;
$tresc = "";
    while($linia = mysql_fetch_row($result)) {
        /*
        linia[0] - rzad
        linia[1] - miejsce
        */
        $miejsce = $linia[1];

        if($rzad != $linia[0]){
            $rzad = $linia[0];
            $tresc .= "</br></br><b>Rząd $rzad:</b></br>
                    miejsce: $miejsce";
        }
        else{
            $tresc .= ", $miejsce";
        }

    }

Z tego co ja się znam (a znam się znam) to $linia[] to są tablice jednowymiarowe - ale mogę się strasznie mylić winksmiley.jpg
Wiec proszę Cię oświeć mnie smile.gif
Lejto
ten fragment kodu formatuje dane z mysql i wyświetla je w pętli while (wszystkie)
ps. dodaj tag to tematu
jarekjr
tyle to i ja wiem ale chodzi mi o te zeminne $linia[0] i $linia[1]
YaQzi
while($linia = mysql_fetch_row($result)) {
}


prosta pętla while smile.gif
każdy wiersz z bazy danych w $result jest zamieniany na tablicę $linia w kolejności podanej w zapytaniu SELECT
czyli:
linia[0] -> rzad
linia[1] -> miejsce

if($rzad != $linia[0])
sprawdza czy rząd w kolejnym wierszu zmienił się.
Jeśli tak, dopisuje do $treści nowy wiersz Rząd: i od razu Miejsce.

else
Jeśli nie, dopisuje do $treści jedynie ", $miejsce"

Cieszę się, że mogłem pomóc. smile.gif
jarekjr
aaa załapałem już.
Oj ja tez się bardzo ciesze ze mogłeś pomóc.
Jeszcze raz DZIEKI:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.