Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Nieprawidłowe pobieranie danych z php do html

PHP  Założony przez  Varus2.

Witam, posiadam kod w php od użytkownika (Xasara) z mpcforum żeby nie było że to mój kod, ja go tylko trochę przerobiłem, bo ten kod miał własną tabelę, ale ok ten kod tworzy mi ranking na stronie, i wygląda tak, a zaraz pod nim jest tabela w html która pobiera dane z tego kodu w php


<?php
                   $result2 = mysqli_query($mysqli, "SELECT * FROM `island_stats` ORDER BY points DESC LIMIT 30");
                   {
                   $result2_nolimit = mysqli_query($mysqli, "SELECT * FROM `island_stats`");
                   $result2_count = mysqli_num_rows($result2_nolimit);
                   $c = 1;
                   while($d = mysqli_fetch_array ($result1)){
                   $pl = $d["owner"];
                   $po = $d["points"];
                   $c++;
                   }
                   @mysqli_close($sql);
                   }
               ?>
                   <table>
                       <?php
                       
                       if($result2_count > 0) {
                           while($res2 = mysqli_fetch_row($result2)) {
                       ?>
<tr style="width: 100%;">
   <td style="width: 5%;"><img class="playerhead" src="odnośnik do zdjęcia"<?php echo $res2[3]; ?>/32" alt="<?php echo $res2[3]; ?>"></td>
   <td style="width: 25%;"><a href="odnośnik do pliku=<?php echo $c[1] ?>"><?php echo $pl; ?></a></td>
   <td style="width: 40px; text-align: center;"><a href="odnośnik do pliku=<?php echo $res2[2]; ?>"><font color="black"><?php echo $res2[1]; ?></a></td></font>
   <td style="width: 15%; text-align: center;"><span class="label label-primary"><a href="odnośnik do pliku=<?php echo $res2[2]; ?>" style="color: black;"><?php echo strtoupper($res2[2]); ?></a></span></td>
                           </tr>
                       <?php
                          }
                       } else {
                           echo 'BRAK WYSPY!';
                       }
                       ?>
i ten kod działa, ale co należy zrobić w tym kodzie żeby uzyskać taki efekt jak na załączonym zdjęciu
   
bo aktualna tabela jaką przedstawia ten kod wygląda tak
   
niby wszystko pięknie ładnie poza jednym, numerami miejsca w rankingu, opisie danego pola w tabeli, i co najważniejsze tu aktualnie jest tak że we wszystkich pozycjach tabeli nazwa gracza jest ta sama, czyli miejsce 1 test miejsce 2 test, a niema tak że miejsce 1 test miejsce 2 test2. Mam nadzieję że dobry dział, jeśli nie proszę o przeniesienie. Napisałem o tym tu dlatego że no nie mam nikogo żeby mi podpowiedział, albo wprowadził jakąś poprawkę, bo albo ja coś źle robię albo czegoś brakuje w tym kodzie, pisałem na innych forach, ale tam już dawno nikt nie zaglądał, to więc marne szanse że ktoś w ogóle zobaczy że jest nowy temat, a nie mowa o odpisaniu.
Poza pętlą while dodajesz wiersz z miejsce, gracz, punkty. A żeby zrobić numeracje to robisz jakąś zmienna przypisujesz jej poza pętla wartość 0 oraz w pętli iterujesz ją i wyświetlasz. Oczywiście jeżeli ten ranking to np. Top 10 graczy. Inaczej będzie trzeba zastosować inna metodę.
(03.08.2018, 10:26)Qwizi napisał(a): Poza pętlą while dodajesz wiersz z miejsce, gracz, punkty. A żeby zrobić numeracje to robisz jakąś zmienna przypisujesz jej poza pętla wartość 0 oraz w pętli iterujesz ją i wyświetlasz. Oczywiście jeżeli ten ranking to np. Top 10 graczy. Inaczej będzie trzeba zastosować inna metodę.
nie conajmniej to ma być 30graczy czyli będzie trzeba w inny sposób zrobić, ale czemu mi wyświetla we wszystkich pozycjach tego samego gracza :/
(03.08.2018, 12:02)Varus2 napisał(a):
(03.08.2018, 10:26)Qwizi napisał(a): Poza pętlą while dodajesz wiersz z miejsce, gracz, punkty. A żeby zrobić numeracje to robisz jakąś zmienna przypisujesz jej poza pętla wartość 0 oraz w pętli iterujesz ją i wyświetlasz. Oczywiście jeżeli ten ranking to np. Top 10 graczy. Inaczej będzie trzeba zastosować inna metodę.
nie conajmniej to ma być 30graczy czyli będzie trzeba w inny sposób zrobić, ale czemu mi wyświetla we wszystkich pozycjach tego samego gracza :/

Na telefonie średnio skupiłem sie na kodzie. Najlepiej wklej tutaj cały kod, bo nie wiem jak wyglada zapytanie kryjące się w zmiennej $result1.
$c 1;
while(
$d mysqli_fetch_array ($result1)){
    
$pl $d["owner"];
      
$po $d["points"];
    
$c++;

A w drugiej pętli odnosisz się do zmiennej $pl oraz do $c[1] (która nawet nie istneje? Przynajmniej w tej czesci kodu co podałes...)
<td style="width: 25%;"><a href="odnośnik do pliku=<?php echo $c[1] ?>"><?php echo $pl; ?></a></td>
(03.08.2018, 12:44)Qwizi napisał(a): Najlepiej wklej tutaj cały kod, bo nie wiem jak wyglada zapytanie kryjące się w zmiennej $result1
Zapytanie wygląda tak, już daję kod

       <div class="top"><div class="center">RANKING WYSP</div></div>
<div class="atutajsobiewejdegleboko">
<div class="center przej">
<?php
$result1 = mysqli_query($mysqli, "SELECT * FROM `island_stats` ORDER BY points DESC LIMIT 50");
$result1_nolimit = mysqli_query($mysqli,
"SELECT * FROM `island_stats`");
$result1_count = mysqli_num_rows($result1_nolimit);
?>
</div>
   <div class="center przej">
<table style="float: center">
<?php
$result2 = mysqli_query($mysqli, "SELECT * FROM `island_stats` ORDER BY points DESC LIMIT 50");
{
$result2_nolimit = mysqli_query($mysqli, "SELECT * FROM `island_stats`");
$result2_count = mysqli_num_rows($result2_nolimit);
                   $c = 1;
                   while($d = mysqli_fetch_array ($result1)){
                   $pl = $d["owner"];
                   $po = $d["points"];
                   $c++;
                   }
                   @mysqli_close($sql);
                   }
?>
<table>
<tr style="height: 40px;"><td>Miejsce.</td>
<td>Gracz.</td>
                       <td><center>Punkty.</center></td>
<?php
if($result2_count > 0) {
  while($res2 = mysqli_fetch_row($result2)) {
?>
<tr style="width: 100%;">
<td style="width: 5%;"><img class="playerhead" src="odnośnik do pliku/is/tmp/img/Stive.png"<?php echo $res2[3]; ?>/32" alt="<?php echo $res2[3]; ?>"></td>
<td style="width: 25%;"><a href="odnośnik do pliku/top/table.php?gracz=<?php echo $pl; ?>"><?php echo $pl; ?></a></td>
<td style="width: 40px; text-align: center;"><a href="odnośnik do pliku/is/rank.php?wyspa=<?php echo $res2[1]; ?>"><font color="black"><?php echo $res2[1]; ?></a></td></font>
</tr>
<?php
}
} else {
echo 'BRAK WYSPY!';
}
?>
</table>
</div>

tu zastosowałem już lekkie zmiany w kodzie, i tabela wygląda tak
     
a zmienna $pl odnosi się do wyświetlania graczy tylko w tym rzecz, że wyświetla tego samego gracza w całej tabeli. A dokładnie sam cały kod który pobrałem z mpcforum wygląda tak
<?php



if ($sql = mysql_connect("localhost", "uzytkownik", "haslo"))

{

if (mysql_select_db("bazadanych"))

{

$rez = mysql_query("SELECT * FROM island_stats ORDER BY points DESC LIMIT 50");

if($rez)

{

echo "<table width=400 style='font-size: 11px;'>";

echo "<tr><th><b>Nr</b></th><th><b>Gracz</b></th><th><b>Punktów</b></th></tr>";

$c = 1;

while($d = mysql_fetch_array($rez))

{

$pl = $d["owner"];

$po = $d["points"];

echo "<tr><td>{$c}</td><td>{$pl}</td><td>{$po}</td></tr>";

$c++;

}

echo "</table>";

}

}



@mysql_close($sql);

}

?>
tylko on ma już w kodzie wstawioną własną tabelę która działa prawidłowo, ale no niestety ta tabela jest mała i taka normalna nic w niej szczególnego niema.
<?php
//Łączymy z bazą danych
$sql mysqli_connect("localhost""uzytkownik""haslo""bazadanych");

//Wyświetlamy błąd jeżeli nie udało się połączyć z bazą
if(mysqli_connect_errno())
{
 
 echo "Failed to connect to MySQL: " mysqli_connect_error();
} else {
 
//Wyciągamy z bazy dane
 
$result mysqli_query($sql"SELECT * FROM island_stats ORDER BY points DESC LIMIT 30");

 
//Zliczamy wiersze
 
$result_count mysqli_num_rows($result);

 
//Jeżeli są jakieś wiersze wyświetlamy tabele
 
if($result_count 0)
 {
 echo 
'<table>';
 echo 
'
 <tr style="height: 40px;">
 <td>Miejsce.</td> 
 <td>Gracz.</td>
    <td><center>Punkty.</center></td>
    </tr>'
;

 
//Definujemy zmienną do iteracji, posłuży do wyświetlenia miejsca w rankingu
 
$c 1;
 while(
$row mysqli_fetch_row($result))
 {
 
$c++;
 echo 
'<tr style="width: 100%;">
 <td style="width: 5%;"><img class="playerhead" src="odnośnik do pliku/is/tmp/img/Stive.png" alt="'
.$row[3].'">'.$c.'</td>
 <td style="width: 25%;"><a href="odnośnik do pliku/top/table.php?gracz='
.$row[2].'">'$row[2].'></a></td>
 <td style="width: 40px; text-align: center;"><a href="odnośnik do pliku/is/rank.php?wyspa='
.$row[1].'"><font color="black">'.$row[1].'</a></td></font>
 </tr>'
;
 }
 echo 
'</table>';
 } else {
 echo 
'BRAK WYSPY!';
 }

 
//Zamykamy połączenie
 
mysqli_close($sql);
}
?>
(05.08.2018, 12:18)Qwizi napisał(a):
<?php
//Łączymy z bazą danych
$sql mysqli_connect("localhost""uzytkownik""haslo""bazadanych");

//Wyświetlamy błąd jeżeli nie udało się połączyć z bazą
if(mysqli_connect_errno())
{
 
 echo "Failed to connect to MySQL: " mysqli_connect_error();
} else {
 
//Wyciągamy z bazy dane
 
$result mysqli_query($sql"SELECT * FROM island_stats ORDER BY points DESC LIMIT 30");

 
//Zliczamy wiersze
 
$result_count mysqli_num_rows($result);

 
//Jeżeli są jakieś wiersze wyświetlamy tabele
 
if($result_count 0)
 {
 echo 
'<table>';
 echo 
'
 <tr style="height: 40px;">
 <td>Miejsce.</td> 
 <td>Gracz.</td>
    <td><center>Punkty.</center></td>
    </tr>'
;

 
//Definujemy zmienną do iteracji, posłuży do wyświetlenia miejsca w rankingu
 
$c 1;
 while(
$row mysqli_fetch_row($result))
 {
 
$c++;
 echo 
'<tr style="width: 100%;">
 <td style="width: 5%;"><img class="playerhead" src="odnośnik do pliku/is/tmp/img/Stive.png" alt="'
.$row[3].'">'.$c.'</td>
 <td style="width: 25%;"><a href="odnośnik do pliku/top/table.php?gracz='
.$row[2].'">'$row[2].'></a></td>
 <td style="width: 40px; text-align: center;"><a href="odnośnik do pliku/is/rank.php?wyspa='
.$row[1].'"><font color="black">'.$row[1].'</a></td></font>
 </tr>'
;
 }
 echo 
'</table>';
 } else {
 echo 
'BRAK WYSPY!';
 }

 
//Zamykamy połączenie
 
mysqli_close($sql);
}
?>

Omg :O jak to zadziała to jesteś mega :D



Użytkownicy przeglądający ten wątek:

2 gości