[PHP] Pobieranie danych z tabeli MySQL

Witam

Mam problem z pobraniem danych z tabeli. Tam w ostatniej tabelce powinno pokazywać się Calvin Klein i pod nim Giorgio Armani a pokazuje się 2 razy to samo.

67540246888806192981_thumb.jpg

 

Tutaj zamieszczam screeny tabel z bazy danych

81656712691636787102_thumb.jpg

86814842211378079062_thumb.jpg

55154682107943080458_thumb.jpg

44826090709289168855_thumb.jpg

?php
include "cfg.php";
    $connection = @mysql_connect($db_host, $db_user, $db_password);
    $db = @mysql_select_db($db_name, $connection);


    if(empty($_GET['a'])) {
$wynik = mysql_query("SELECT * FROM orders where id='".$_GET['id']."'");

if(mysql_num_rows($wynik) 0) {

    echo "table cellpadding=\"2\" border=1";
    while($r = mysql_fetch_assoc($wynik)) {
        echo "tr";
        echo "td".$r['id']."/td";

        echo "tda href=\"http://allegro.pl/show_user.php?search={$r['name_buyer']}search_scope=user\"{$r['name_buyer']}/a/td";
        
        $wynik3 = mysql_query("SELECT * FROM shipping where id='{$r['shipping']}'");
        $r3 = mysql_fetch_assoc($wynik3);
        
        
        echo "td".$r3['name']."/td";
        echo "td";
        if($r3['cash_of_delivery'] = 0) {echo "Płatność z góry";}
        if($r3['cash_of_delivery'] = 1) {echo "strongPłatność rzy odbiorze/strong";}
        echo "/td";
        echo "td
       a href=\"orders.php?a=realizationid={$r['id']}\"Zrealizuj/a
       /td";
        echo "/tr";
    }
    echo "/table";
}
    }
    
    if($_GET['a'] = 'realization'){

    echo "table cellpadding=\"2\" border=1";    
    
    $wynik = mysql_query("SELECT * FROM orders");
    $r = mysql_fetch_assoc($wynik);

    echo 'trtdNick kupującego:/tdtdstrong'.$r['name_buyer'].'/strong/td/tr';
    
    $pieces_q = mysql_query("SELECT * FROM orders2 WHERE id_order='".$_GET['id']."'");
    $pieces = mysql_num_rows($pieces_q);
    
    echo 'trtdLiczba zamówionych przedmiotów:/tdtdstrong'.$pieces.' szt./strong/td/tr';
    
    echo "/table";
    
    echo "brbrbr";
    
    echo "table cellpadding=\"2\" border=1";    
    
    $wynik = mysql_query("SELECT * FROM orders");
    $r = mysql_fetch_assoc($wynik);

    echo 'trtdNumer Aukcji/tdtdNazwa/tdtdliczba/tdtdcena/td/tr';

    for ($i = 1; $i = $pieces; $i++) {
        
    $wynik4 = mysql_query("SELECT * FROM orders2 where id_order='".$_GET['id']."'");
    $r4 = mysql_fetch_assoc($wynik4);
        
    echo 'tr
    td'.$r4['id_allegro'].'/td';
    
    $wynik5 = mysql_query("SELECT * FROM items where id_allegro='".$r4['id_allegro']."'");
    $r5 = mysql_fetch_assoc($wynik5);
    
    echo 'td'.$r5['name'].'/td
    td'.$r4['pieces'].' szt./td
    td'.$r5['price'].' zł/szt./td
    /tr';
    
    }
    
    echo "/table";
    
    }
    
?

Kod php wyciągające dane z MySQL powinien być poza pętlą for.

 

W twoim użyciu pętla for powinna służyć wyłącznie do wyświetlania danych.

Zwróciłem więc uwagę na dwa najbardziej rażące błędy: brak architektury i zastosowanie antywzorców. Po ich naprawie, co nie będzie łatwe w kontekście całej aplikacji, najprawdopodobniej zacznie działać.

for ($i = 1; $i <= $pieces; $i++) {
        
    $wynik4 = mysql_query("SELECT * FROM orders2 where id_order='".$_GET['id']."'");

$Get[‘id’] zawsze (dwa razy) jest ten sam.

 

Najwyższy czas na refaktoring tego kodu.

To akurat jest ok że jest ten sam, chodzi przecież o to samo “zamówienie”

Jeśli zrobisz dwa takie same selecty to dostaniesz dwie takie same odpowiedzi. Co widzisz bo tak ci działa.