Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]pobieranie danych z trzech tabel
Forum PHP.pl > Forum > Przedszkole
sunpietro
witam,
dopiero się uczę PHP i na tą chwilę mam problem z wyświetleniem wyników zapytania na stronie.
kod w pliku php wygląda następująco:

Kod
<?php
      require('connection.php');
  
      $sql = "SELECT r.Nazwa, u.uprawa_powierzchnia, o.ogrodek_powierzchnia, d.login
              FROM Dzialkowcy d
              INNER JOIN Ogrodek o ON d.ID_dzialkowca=o.ID_dzialkowca
              INNER JOIN Uprawy u ON o.ID_ogrodka=u.ID_ogrodka
              INNER JOIN Rosliny r ON u.ID_rosliny=r.ID_rosliny
              WHERE d.login='".$_SESSION['login']."'";
      $wynik=mysql_query($sql);
      echo '<table border=0>';
      echo '<th>Np.</th><th> Nazwa rośliny </th>';
      echo '<th> Powierzchnia uprawy </th>';
  
      for($i=0; $i<mysql_num_rows($wynik);$i++)
      {
          $lista=mysql_fetch_array($wynik);
          
      }
      if (mysql_num_rows($wynik))
      {
             while ($row = mysql_fetch_array($wynik))
          {
                 $j=$i+1;
               echo '<tr>';
      
              echo '<td>'.$j.'</td><td>';
              echo $lista['r.Nazwa'];
              echo '</td>';
      
                echo '<td>';
              echo $lista['u.uprawa_powierzchnia'];
              echo '</td>';
        
              echo '</tr>';
             }
      }
      else
      {
             echo 'Brak danych';
      }
  
      echo '</table>';
      ?>

Pomimo tego, że w tabelach:
Dzialkowcy, Ogrodek, Uprawy, Rosliny - istnieją dane do wyświetlenia dla danego użytkownika, to nie chce tego wyświetlać.
W czym może być problem?? Bardzo proszę o pomoc.
ddiceman
nazwy pol sa unikatowe, wiec MySQL w wyniku nie zwroci dla nich przedrostku nazwy tabeli, wiec:
Kod
<?php
      require('connection.php');
  
      $sql = "SELECT r.Nazwa, u.uprawa_powierzchnia, o.ogrodek_powierzchnia, d.login
              FROM Dzialkowcy d
              INNER JOIN Ogrodek o ON d.ID_dzialkowca=o.ID_dzialkowca
              INNER JOIN Uprawy u ON o.ID_ogrodka=u.ID_ogrodka
              INNER JOIN Rosliny r ON u.ID_rosliny=r.ID_rosliny
              WHERE d.login='".$_SESSION['login']."'";
      $wynik=mysql_query($sql);
      echo '<table border=0>';
      echo '<th>Np.</th><th> Nazwa rośliny </th>';
      echo '<th> Powierzchnia uprawy </th>';

  // <--- tutaj kawalek kodu usuniety, przesunalby Ci uchwyt wyniku na ostatni wiersz i w nastepnym kroku nie dostalbys rezultatow

      if (mysql_num_rows($wynik))
      {
             while ($lista = mysql_fetch_array($wynik))  // <---- tutaj $lista a nie $row, jesli dalej czytasz z $lista
          {
                 $j=$i+1;
               echo '<tr>';
      
              echo '<td>'.$j.'</td><td>';
              echo $lista['Nazwa']; // <---- tu zmiana
              echo '</td>';
      
                echo '<td>';
              echo $lista['uprawa_powierzchnia']; // <---- tu zmiana
              echo '</td>';
        
              echo '</tr>';
             }
      }
      else
      {
             echo 'Brak danych';
      }
  
      echo '</table>';
      ?>

zawsze w takiej sytuacji dodaj echo(mysql_error()), zeby sprawdzic czy masz blad w zapytaniu i var_dump($lista);, zeby wiedziec, czy masz blad w zwracanym wyniku
sunpietro
niestety dalej ten kod nie działa poprawnie sad.gif nie wyświetla mi żadnych danych

nie wiem dlaczego, ale zapytanie mi zwraca wartość NULL :/
ddiceman
wklej tu, co zawiera $sql i wynik mysql_error()
wasyllinio
Kod
      ....
    
            for($i=0; $i<mysql_num_rows($wynik);$i++)
            {
                $lista=mysql_fetch_array($wynik);
                
            }
            if (mysql_num_rows($wynik))
            {
                   while ($row = mysql_fetch_array($wynik))
                {
                       $j=$i+1;
                     echo '<tr>';
            
                    echo '<td>'.$j.'</td><td>';
                    echo $lista['r.Nazwa'];
                    echo '</td>';
            
                      echo '<td>';
                    echo $lista['u.uprawa_powierzchnia'];
                    echo '</td>';
              
                    echo '</tr>';
                   }
            }
            else
            {
                   echo 'Brak danych';
            }
        
            echo '</table>';
            ?>


sproboj tak(tą czesc wstaw w miejsce kropek):

Kod
$num=mysql_numrows($wynik);
     $lista=mysql_fetch_array($wynik, MYSQL_NUM);
     $i=0;
     while ($i < $num)
     {
        echo "<td>$lista[$i]</td>";
    
        $i++;
     }
     if($num==0)
     {
        echo "Brak danych";
     }
    
     echo "</table>";
     ?>


a jesli cchesz, by bylo czytelniej, sproboj tak

Kod
$num=mysql_numrows($wynik);
    
     $i=0;
    
     while ($i < $num)
     {
        $lp=$i+1;
        $nazwa=mysql_result($wynik,$i,"r.Nazwa");
        $uprawa=mysql_result($wynik,$i,"u.uprawa_powierzchnia");
    
        echo "<tr><td>$lp</td><td>$nazwa</td><td>$uprawa</td></tr>";
    
        $i++;
    
     }
    
     if($num==0)
      {
         echo "Brak danych";
      }
      
      echo "</table>";
      ?>
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.