Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]
Forum PHP.pl > Forum > Przedszkole
convicted
Hej.
2 petle while, sciaganie rekordow z bazy danych, i co wazne, stosunek pól jeden do wielu (jeden serwis, wiele obsługiwanych marek, poprzez łączącą tabele grupas). Ma to wygladac mw. w taki sposob:

serwis1 (miasto adres) auto1
auto2
auto3
serwis2 (miasto adres) auto1
auto4

Generalnie chodzi o to, zeby samochody byly wyswietlane, a nazwy serwisow i ich adresy sie nie powtarzaly. Ściągam id_grupys z tabeli serwis, na tej podstawie drukuje nazwy aut, za pomocą łączącej tabeli grupas.

Niestety wewnetrzna petla przechodzi sobie raz, drukując samochody z pierwszego serwisu, a jak pojawia się nowa wartosc id_grupys, pasująca do nowego serwisu, wewnetrzna petla już nie chce się włączyć. $wiersz moze już przyjęło maksymalną wartość? Nie mam pojęcia, czemu tak sie dzieje. Oto kod:

Kod
$zapytanie = "SELECT * FROM serwis AS a JOIN miasto AS b ON a.id_miasta = b.id_miasta
   LEFT JOIN grupas AS c ON a.id_grupys = c.id_grupys LEFT JOIN auta AS d ON c.id_auta = d.id_auta";
  
   $idzapytania = mysql_query($zapytanie);
  
   $zapytanies = "SELECT * FROM `serwis` AS a LEFT JOIN `grupas` AS c ON a.id_grupys = c.id_grupys LEFT JOIN `auta` AS d ON  c.id_auta = d.id_auta ORDER BY `a`.`id_grupys`";
   $idzapytanias = mysql_query($zapytanies);
  
   echo (
        "<TABLE border=0><TR>
        <td width=200><b><left><font color=#000099>Nazwa:</b></td>
        <td width=90><b><left><font color=#000099>miasto:</b></td>
        <td width=120><b><left><font color=#000099>Adres:</b></td>
        <td width=120><b><left><font color=#000099 align=left> Auta:</b></td></tr>  
        ");
  
   while ($wiersz = mysql_fetch_assoc($idzapytania))
  
    {
  
   if ($wiersz["nazwa"] <> $nazwastara) { aby nie powtarzaly sie komorki z danymi serwisu
  
   echo( "<tr><td><left> ".$wiersz["nazwa"]."</td>");
   echo( "<td><left> ".$wiersz["city"]."</td>");
   echo( "<td><left> ".$wiersz["adres"]."</td>");
  
   $idgrupys = $wiersz["id_grupys"]; // tu wlasnie przypisuje wartosc id grupy samochodow, na ktorej podstawie w petli ponizej wydrukuja mi sie auta
   $nazwastara = $wiersz["nazwa"];
  
   while ($wiersz = mysql_fetch_array($idzapytanias)) //ta petla co chodzi tylko raz, a powinna za kazdym razem jak skonczy petle u gory
   {
   echo " < ".$wiersz["id_grupys"]." i ".$idgrupys." > "; // drukuje sobie czy sie zgadza wartosc wyznaczona wczesniej z ta w tabeli
  
   if ($wiersz["id_grupys"] == $idgrupys) {
   echo( "<td><left> ".$wiersz["auto"]."</td></tr> ");
   echo( "<td></td> <td></td> <td></td> ");
   }
   }
   }
   }


Wyglada to tak:
http://gdzieserwisowac.pl/problem.jpg niestety auta powinny sie drukowac dla kazdego serwisu, a nie tylko dla pierwszego. Pomoze mi ktos?
mariusdeath
ponieważ już raz pobrałeś wszystko co zwróciła ci baza.
Spróbuj tak zrobić
Kod
$zapytanie = "SELECT * FROM serwis AS a JOIN miasto AS b ON a.id_miasta = b.id_miasta
   LEFT JOIN grupas AS c ON a.id_grupys = c.id_grupys LEFT JOIN auta AS d ON c.id_auta = d.id_auta";
  
   $idzapytania = mysql_query($zapytanie);
  
   $zapytanies = "SELECT * FROM `serwis` AS a LEFT JOIN `grupas` AS c ON a.id_grupys = c.id_grupys LEFT JOIN `auta` AS d ON  c.id_auta = d.id_auta ORDER BY `a`.`id_grupys`";
   $idzapytanias = mysql_query($zapytanies);

     $arrayTmp = array();
while ($wiersz = mysql_fetch_array($idzapytanias)){
     $arrayTmp[] = $wiersz;
}

  
   echo (
        "<TABLE border=0><TR>
        <td width=200><b><left><font color=#000099>Nazwa:</b></td>
        <td width=90><b><left><font color=#000099>miasto:</b></td>
        <td width=120><b><left><font color=#000099>Adres:</b></td>
        <td width=120><b><left><font color=#000099 align=left> Auta:</b></td></tr>  
        ");
  
   while ($wiersz = mysql_fetch_assoc($idzapytania)){
  
   if ($wiersz["nazwa"] <> $nazwastara) { aby nie powtarzaly sie komorki z danymi serwisu
  
   echo( "<tr><td><left> ".$wiersz["nazwa"]."</td>");
   echo( "<td><left> ".$wiersz["city"]."</td>");
   echo( "<td><left> ".$wiersz["adres"]."</td>");
  
   $idgrupys = $wiersz["id_grupys"]; // tu wlasnie przypisuje wartosc id grupy samochodow, na ktorej podstawie w petli ponizej wydrukuja mi sie auta
   $nazwastara = $wiersz["nazwa"];
  
   //while ($wiersz = mysql_fetch_array($idzapytanias)){
     foreach($arrayTmp as $wiersz){
   echo " < ".$wiersz["id_grupys"]." i ".$idgrupys." > "; // drukuje sobie czy sie zgadza wartosc wyznaczona wczesniej z ta w tabeli
  
   if ($wiersz["id_grupys"] == $idgrupys) {
   echo( "<td><left> ".$wiersz["auto"]."</td></tr> ");
   echo( "<td></td> <td></td> <td></td> ");
   }
   }
   }
   }
convicted
Dzięki wielkie wodzu. Mam jeszcze ostatnie pytanko w sprawie mojego kodu. Otóż tabelka już całkiem całkiem - wygląda to tak .
Więc niesie to ze sobą kolejne pytanie: czy można tak pokazać wyniki, aby wiersze zapisane w ostatnich 2 kolumnach były obok siebie, a nie jedne po drugich?
Kod obecny:

Kod
$zapytanie = "SELECT * FROM serwis AS a JOIN miasto AS b ON a.id_miasta = b.id_miasta LEFT JOIN grupas AS c ON a.id_grupys =

c.id_grupys LEFT JOIN auta AS d ON c.id_auta = d.id_auta LEFT JOIN grupau AS e ON a.id_grupyu = e.id_grupyu
LEFT JOIN ubezpieczyciel AS f ON e.id_ubezp = f.id_ubezp";
  
$idzapytania = mysql_query($zapytanie);
  
$zapytanies = "SELECT * FROM `serwis` AS a LEFT JOIN `grupas` AS c ON a.id_grupys = c.id_grupys LEFT JOIN `auta` AS d ON  

c.id_auta = d.id_auta ORDER BY `a`.`id_grupys`";

$idzapytanias = mysql_query($zapytanies);

$zapytanieu = "SELECT * FROM `serwis` AS a LEFT JOIN `grupau` AS c ON a.id_grupyu = c.id_grupyu LEFT JOIN `ubezpieczyciel` AS

d ON c.id_ubezp = d.id_ubezp ORDER BY `a`.`id_grupyu`";

$idzapytaniau = mysql_query($zapytanieu);


      
$arrayTmp = array();
while ($wiersz = mysql_fetch_array($idzapytanias)){
$arrayTmp[] = $wiersz;
}

$arrayTmp2 = array();
while ($wiersz = mysql_fetch_array($idzapytaniau)){
$arrayTmp2[] = $wiersz;
}

?>
         <TABLE border=1 rules="all"><TR>
         <td width=200><b><left><font color=#000099>Nazwa:</b></td>
         <td width=90><b><left><font color=#000099>miasto:</b></td>
         <td width=120><b><left><font color=#000099>Adres:</b></td>
         <td width=60><b><left><font color=#000099 align=left> Auta:</b></td>
         <td width=100><b><left><font color=#000099 align=left> Ubezpieczyciel:</b></td></tr>
        
<?  
    while ($wiersz = mysql_fetch_assoc($idzapytania)){
  
    if ($wiersz["nazwa"] <> $nazwastara) {
  
    echo( "<tr><td><left> ".$wiersz["nazwa"]."</td>");
    echo( "<td><left> ".$wiersz["city"]."</td>");
    echo( "<td><left> ".$wiersz["adres"]."</td>");
  
    $idgrupys = $wiersz["id_grupys"];
    $idgrupyu = $wiersz["id_grupyu"];
    $nazwastara = $wiersz["nazwa"];
  
    foreach($arrayTmp2 as $wiersz){
  
    if ($wiersz["id_grupyu"] == $idgrupyu) {
    echo( "<td></td><td><left> ".$wiersz["ubezp"]."</td></tr> ");
    echo( "<td></td><td></td> <td></td> ");
    }
    }

    foreach($arrayTmp as $wiersz){
  
    if ($wiersz["id_grupys"] == $idgrupys) {
    echo( "<td><left> ".$wiersz["auto"]."</td></tr> ");
    echo( "<td></td> <td></td> <td></td> ");
    }
    }
}
    }


pozdrawiam

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
  2. <html>
  3. <head>
  4.    <title>Twoje serwisy samochodowe</title>
  5.     <meta http-equiv="Content-type" content="text/html; charset=windows-1250">
  6.     <link rel="stylesheet" href="style.css" type="text/css">
  7.  
  8.    <meta name="author" content="Adam Pukocz, adam.pukocz@gmail.com">
  9.    <meta name="content-language" content="pl" >
  10.    <meta name="Keywords" content="serwis serwisować gdzie samochód naprawa auto naprawiać">
  11.  
  12.    <meta name="description" content="Strona poświęcona serwisom samochodowym. Znajdź najlepszy serwis i podziel się opinią!">
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20. </head>
  21. <body>
  22.  
  23.  
  24.  
  25. <table border="0" style="border-spacing: inherit; border-style: none; border-top-width:inherit; border-top-style: inherit;" cellpadding="0" cellspacing="0" width="100%" align="center">
  26. <TR><TD></td><TD width="1200" colspan="2"><BR><table width="1200" border="0" cellpadding="0" cellspacing="-10" align="center">
  27. <TR><TD class="log"><div class="logo">Znajdź najlepszy serwis w mieście!</div></td></tr>
  28. <TR><TD class="pod">
  29.  
  30.  
  31.  
  32.  
  33. <table width="1200" border="0" cellpadding="0" cellspacing="0" align="center">
  34. <TR><TD>
  35.  
  36.  
  37.  
  38. <div class="nav">
  39. <div class="table">
  40.  
  41. <ul class="select"><li><a href="http://gdzieserwisowac.pl"><b>Home</b>
  42. </a></li></ul>
  43.  
  44. <ul class="select"><li><a href="http://gdzieserwisowac.pl/formularz.php"> <b>Dodaj serwis</b></a></li></ul>
  45.  
  46.  
  47. <ul class="select"><li><a href="http://gdzieserwisowac.pl/smiasto.php"> <b>Szukaj serwisu</b></a>
  48. </li></ul>
  49.  
  50.  
  51.  
  52.  
  53.  
  54. <ul class="select"><li><a href="#nogo"><b>Inne</b><!--[if IE 7]><!--></a><!--<![endif]-->
  55. <!--[if lte IE 6]><table><tr><td><![endif]-->
  56. <div class="select_sub">
  57.    <ul class="sub">
  58.        <li><a href="http://gdzieserwisowac.pl/kom.php">Komentarze</a></li>
  59.        <li><a href="http://gdzieserwisowac.pl/omnie.php">o twórcy</a></li>
  60.  
  61.    </ul>
  62. </div>
  63. <!--[if lte IE 6]></td></tr></table></a><![endif]-->
  64. </li>
  65. </ul>
  66.  
  67. </div>
  68. </div>
  69. </td></tr>
  70.  
  71.  
  72.  
  73.  
  74. <TR><TD class="tloo">
  75.  
  76. <table width="1150" border="0" cellpadding="0" cellspacing="0" align="center">
  77.  
  78. <TD valign="top">
  79.  
  80.  
  81. <div class="b3"><BR>
  82.  
  83.  
  84. <?php
  85.  
  86. $indeksn = $_POST['xxn'];
  87. $blokn = $_POST['blokn'];
  88.  
  89.  
  90.  
  91. $indeksm = $_POST['xxm'];
  92. $blokm = $_POST['blokm'];
  93.  
  94.  
  95. $indeksa = $_POST['xxa'];
  96. $bloka = $_POST['bloka'];
  97.  
  98.  
  99.  
  100. $indeksz = $_POST['xxz'];
  101. $blokz = $_POST['blokz'];
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110. $nazwastara = '';
  111. $licznik = 0;
  112.  
  113. $db_user='pukocz';//user
  114. $db_password='w11w11';//haslo
  115. $database='pukocz_serwis';//nazwa bazy
  116. $sql_conn = mysql_connect('gdzieserwisowac.pl',$db_user,$db_password);
  117. mysql_select_db($database) or die('Blad wyboru bazy danych.');
  118. mysql_query("SET NAMES latin2");
  119.  
  120.  
  121. $zapytanie = "SELECT * FROM serwis AS a JOIN miasto AS b ON a.id_miasta = b.id_miasta";
  122. $idzapytania = mysql_query($zapytanie);
  123.  
  124.  
  125. $zapytanie2 = "SELECT * FROM serwis";
  126. $idzapytania2 = mysql_query($zapytanie2);
  127.  
  128.  
  129. $arrayTmp_G = array();  
  130.  
  131. while ($wiersz = mysql_fetch_array($idzapytania2)){
  132. $arrayTmp_G[] = $wiersz;
  133. }
  134.  
  135. foreach($arrayTmp_G as $wiersz){
  136.  
  137.   $licznik++;
  138. }
  139.  
  140.  
  141.  
  142. $zapytaniez = "SELECT * FROM `serwis` AS a JOIN `grupaz` AS c ON a.id_grupyz = c.id_grupyz JOIN `zakres` AS d ON c.id_zakresu = d.id_zakresu ORDER BY `a`.`id_grupyz`";
  143. $idzapytaniaz = mysql_query($zapytaniez);
  144.  
  145.  
  146. $zapytanies = "SELECT * FROM `serwis` AS a JOIN `grupas` AS c ON a.id_grupys = c.id_grupys JOIN `auta` AS d ON  c.id_auta = d.id_auta ORDER BY `a`.`id_grupys`";
  147. $idzapytanias = mysql_query($zapytanies);
  148.  
  149.  
  150.  
  151. $arrayTmp2 = array();
  152. while ($wiersz = mysql_fetch_array($idzapytanias)){
  153. $arrayTmp2[] = $wiersz;
  154. }
  155.  
  156.  
  157. $arrayTmp = array();
  158. while ($wiersz = mysql_fetch_array($idzapytaniaz)){
  159. $arrayTmp[] = $wiersz;
  160. }
  161.  
  162.  
  163.  
  164.  
  165.  
  166. ?><div class = "b_sm"><?
  167.  
  168.  
  169. echo '<br> ';
  170.  
  171. $wszystkie_strony = array();
  172. $url = 'target.php';
  173.  
  174. $id_grupy_all = 'nic';
  175. $nazwa_next = '';
  176.  
  177. if (($blokn != 'on') && ($blokm != 'on') && ($bloka != 'on') && ($blokz != 'on')) {
  178. echo 'ŁĄCZNA ILOŚĆ WSZYSTKICH REKORDÓW W BAZIE: '.$licznik.'.';
  179. echo '<br> ';
  180. echo '<br> ';
  181. }
  182.  
  183.  
  184. while ($wiersz = mysql_fetch_assoc($idzapytania)){
  185.  
  186.  
  187. $idgrupys = $wiersz["id_grupys"];
  188. $idgrupyz = $wiersz["id_grupyz"];
  189.  
  190.  
  191.  
  192. if ( ($blokn == 'on') && (eregi($indeksn, $wiersz['nazwa'])) ) {
  193.  
  194. $nazwy[] = $wiersz['id'];
  195.  
  196. }
  197.  
  198. if ( ($blokm == 'on') && ($indeksm == $wiersz['id_miasta']) ){
  199.  
  200. $miasta[] = $wiersz['id'];
  201. }
  202.  
  203.  
  204. foreach($arrayTmp2 as $wiersz){
  205.  
  206.   if ($wiersz["id_grupys"] == $idgrupys) {
  207.  
  208.   if ($indeksa == $wiersz['id_auta']){
  209.  
  210. $auta[] = $wiersz['id'];
  211.       }
  212.   }
  213.  
  214.  
  215. }
  216.  
  217.  
  218. foreach($arrayTmp as $wiersz){
  219.  
  220.   if ($wiersz["id_grupyz"] == $idgrupyz) {
  221.  
  222.      if ($indeksz == $wiersz['id_zakresu']){
  223.  
  224. $zakres[] = $wiersz['id'];
  225.  
  226.     }
  227.  
  228.  }
  229.  
  230.  
  231. }
  232.  
  233.  
  234. }
  235.  
  236. if ($nazwy[0] != '') {
  237. foreach ($nazwy as $nazwy2)
  238. {
  239. echo $nazwy2.', ';
  240. $wskaznik = 1;
  241. }
  242.  
  243. } else echo ' Tablica NAZWA jest pusta! ';
  244.  
  245. echo '<br>';
  246.  
  247.  
  248. if ($miasta[0] != '') {
  249. foreach ($miasta as $miasta2)
  250. {
  251. echo $miasta2.', ';
  252. }
  253.  
  254. } else echo ' Tablica MIASTA jest pusta! ';
  255.  
  256. echo '<br>';
  257.  
  258.  
  259. if ($auta[0] != '') {
  260. foreach ($auta as $auta2)
  261. {
  262. echo $auta2.', ';
  263. }
  264.  
  265. } else echo ' Tablica AUTA jest pusta! ';
  266.  
  267. echo '<br>';
  268.  
  269.  
  270. if ($zakres[0] != '') {
  271. foreach ($zakres as $zakres2)
  272. {
  273. echo $zakres2.', ';
  274. }
  275.  
  276. } else echo ' Tablica ZAKRES jest pusta! ';
  277.  
  278. echo '<br>';
  279. echo '<br>';
  280.  
  281.  
  282.  
  283. if ( ($nazwy[0] != '') && ($miasta[0] != '') )
  284. {
  285. foreach ($nazwy as $nazwy2)
  286. {
  287.     foreach ($miasta as $miasta2)
  288.        if ( $nazwy2 == $miasta2 ) {
  289.        
  290.           $nm[] = $wiersz['id'];
  291. }
  292.  
  293. }
  294.  
  295.  
  296. if ($nm[0] != '') {
  297. foreach ($nm as $nm2)
  298. {
  299. echo $nm2.', ';
  300. }
  301. echo '<br>';
  302.  
  303.  
  304. if ($miasta[0] != '') {
  305. foreach ($miasta as $miasta2)
  306. {
  307. echo $miasta2.', ';
  308. }
  309.  
  310. } else echo ' Tablica MIASTA jest pusta! ';
  311.  
  312.  
  313.  
  314.  
  315. if ($nazwa_next == $wiersz['nazwa']) {
  316. } else
  317.  
  318. {
  319.  
  320. }
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328. if (1==0) {
  329. ?>
  330.  
  331. <table border = "0" height = "84" width = "603" ><tr style="background: url(/images/ramka.jpg)"><td valign = "top">
  332. <div class = "bind1">
  333. <?
  334.  
  335. ?><div class="link1"><?
  336.    $wszystkie_strony[] = $wiersz['nazwa'];
  337. echo "&nbsp;";
  338.  
  339.  
  340.  
  341. echo '<a href=" '.$url. '?wybierz='.$wiersz["id"].' ">'.$wiersz["nazwa"].'</a>';
  342.  
  343. echo ", ";
  344.  
  345. $nazwa_next = $wiersz["nazwa"];
  346.  
  347. $idgrupyz = $wiersz["id_grupyz"];
  348. $idgrupys = $wiersz["id_grupys"];
  349.  
  350.  
  351. $wybierz = $_GET['wybierz'];
  352.  
  353. echo "" .$wiersz['city']. ", ";
  354. echo "ul. " .$wiersz['adres']. " ";
  355. ?></div><?
  356.  
  357.  
  358.  
  359. $id_grupy_all = $wiersz["id_grupys"];
  360.  
  361.  
  362. echo '</div><div class = "bind2">';
  363. echo '<br>';
  364.  
  365.  
  366. foreach($arrayTmp as $wiersz){
  367.  
  368.   if ($wiersz["id_grupyz"] == $idgrupyz) {
  369.  
  370.      echo( " ".$wiersz["zakres"].", ");
  371.  
  372.     }
  373.  
  374.  }
  375.    
  376.       echo "<br> ";
  377.            echo '</div><div class = "bind3">';  
  378. echo "<br> ";
  379.      
  380.  
  381. foreach($arrayTmp2 as $wiersz){
  382.  
  383.   if ($wiersz["id_grupys"] == $idgrupys) {
  384.   echo( " ".$wiersz["auto"].", ");
  385.  
  386.       }
  387.   }
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.