Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System dla studenta
Forum PHP.pl > Forum > PHP
Stron: 1, 2
sapit
Cytat(nospor @ 5.10.2021, 12:49:23 ) *
no to ci pisalem: pokaz kod jak kombinujesz z moim artem


  1. <table class="table table-bordered table-striped">
  2. <tr>
  3. <th>Imie</th>
  4. <th>Nazwisko</th>
  5. <th>Produkt</th>
  6. </tr>
  7. </thead>
  8. <?php
  9. $sql = "SELECT * FROM client_product INNER JOIN clients ON client_product.id_client = clients.id INNER JOIN product ON client_product.id_product = product.id ORDER BY clients.firstname, clients.lastname ASC, product.list ASC";
  10. $result = $conn->query($sql);
  11.  
  12. while ($row = mysqli_fetch_assoc($result)) {
  13.  
  14. ?>
  15. <tr>
  16. <td><?php echo $row['firstname']; ?></td>
  17. <td><?php echo $row['lastname']; ?></td>
  18. <td><?php echo $row['list']; ?></td>
  19. </tr>
  20. <?php } ?>
  21. </tbody>
  22. </table>


Cytat(sapit @ 5.10.2021, 12:50:26 ) *
  1. <table class="table table-bordered table-striped">
  2. <tr>
  3. <th>Imie</th>
  4. <th>Nazwisko</th>
  5. <th>Produkt</th>
  6. </tr>
  7. </thead>
  8. <?php
  9. $sql = "SELECT * FROM client_product INNER JOIN clients ON client_product.id_client = clients.id INNER JOIN product ON client_product.id_product = product.id ORDER BY clients.firstname, clients.lastname ASC, product.list ASC";
  10. $result = $conn->query($sql);
  11. $client = array();
  12. while ($row = mysqli_fetch_assoc($result)) {
  13. $id = $row['id_clientyy'];
  14. //jeśli nie było jeszcze danej kategorii, to ją tworzymy
  15. if (!isset($client[$id]))
  16. $client[$id] = array('firstaname' => $row['firstname'], 'product' => array());
  17.  
  18. //dodajemy do kategorii kolejne produkty
  19. if (!empty($row['list'])) //jeśli istnieje produkt
  20. $client[$id]['product'][] = array('firstname' => $row['list'], 'id' => $row['id_product']);
  21.  
  22. ?>
  23. <tr>
  24. <td><?php echo $row['firstname']; ?></td>
  25. <td><?php echo $row['lastname']; ?></td>
  26. <td><?php echo $row['list']; ?></td>
  27. </tr>
  28. <?php } ?>
  29. </tbody>
  30. </table>


i taki mam efekt teraz po tym
nospor
No iteraz zobacz co zaweira tablica $client

print_r($client);
gino
ok, bo myślałem, że wprowadzasz klienta razem z produktami, a Ty masz już klientów wprowadzonych wcześniej, dlatego chciałem zobaczyć cały formularz. To co napisałem jest zbędne. Przynajmniej na razie.
nospor
I wywal to z budowania tablicy

<tr>
<td><?php echo $row['firstname']; ?></td>
<td><?php echo $row['lastname']; ?></td>
<td><?php echo $row['list']; ?></td>
</tr>


pierwszym etapem jest budowa tablicy, a dopiero potem wyswietlanie jej. wyraznie to bylo pokazane w arcie
sapit
Cytat(nospor @ 5.10.2021, 12:54:14 ) *
I wywal to z budowania tablicy

<tr>
<td><?php echo $row['firstname']; ?></td>
<td><?php echo $row['lastname']; ?></td>
<td><?php echo $row['list']; ?></td>
</tr>


pierwszym etapem jest budowa tablicy, a dopiero potem wyswietlanie jej. wyraznie to bylo pokazane w arcie


Ok wywaliłem
nospor
Kurcze, czytaj prosze wszystko.... miales pokazac tez co zawieratablic $client po zbudowaniu. Ja nie mam czasu na to ze ty polowe moich postow przegapiasz
sapit
Cytat(nospor @ 5.10.2021, 12:59:01 ) *
Kurcze, czytaj prosze wszystko.... miales pokazac tez co zawieratablic $client po zbudowaniu. Ja nie mam czasu na to ze ty polowe moich postow przegapiasz



Zrobilem to tak

  1. <?php
  2. $sql = "SELECT * FROM client_product INNER JOIN clients ON client_product.id_client = clients.id INNER JOIN product ON client_product.id_product = product.id ORDER BY clients.firstname, clients.lastname ASC, product.list ASC";
  3. $result = mysqli_query($conn, $sql);
  4. $client = array();
  5. while ($row = mysqli_fetch_array($result)) {
  6. //najpierw pozyskamy niezbędne dane
  7.  
  8. $id = $row['id'];
  9.  
  10. //jeśli nie było jeszcze danej kategorii, to ją tworzymy
  11. if (!isset($client[$id]))
  12. $client[$id] = array('firstname' => $row['firstname'], 'products' => array());
  13.  
  14. //dodajemy do kategorii kolejne produkty
  15. if (!empty($row['list'])) //jeśli istnieje produkt
  16. $client[$id]['products'][] = array('list' => $row['list'], 'id' => $row['id']);
  17. //print_r($categories); //do obejrzenia jak wygląda wygenerowana tablica
  18. ?>
  19. <?php
  20. echo '<ul>';
  21. foreach ($client as $idCat => $cli){ //petla, która leci po kategoriach
  22. echo '<li>'.$cli['firstname'].' (liczba produktow: '.count($cli['products']).')<ul>';
  23. foreach ($cli['products'] as $product){ //pętla, która leci po produktach w kategorii
  24. echo '<li>Produkt o nazwie <b>'.$product['list'].'</b> i id <b>'.$product['id'].'</b></li>';
  25. }
  26. echo '</ul>
  27. </li>';
  28. }
  29. echo '</ul>';
  30. ?>
  31. <?php } ?>


Efekt taki
gornik
Chodziło o to żeby wyprinotwać dokładnie co Ci zwróciła baza goatee.gif

  1. echo "<PRE>";
  2. print_r($client);
  3. echo "</PRE>";
nospor
I popatrz na ID ktorych uzywasz, bo raz ze uzywasz nie tego co trzeba a dwa ze uzywasz za kazdym razem tego samego... W moim arcie bylo wyraznie napisane kiedy jakie ID ma isc a nei ty sobie radosnie strzelasz jak leci
sapit
Cytat(gornik @ 5.10.2021, 14:22:54 ) *
Chodziło o to żeby wyprinotwać dokładnie co Ci zwróciła baza goatee.gif

  1. echo "<PRE>";
  2. print_r($client);
  3. echo "</PRE>";


To wiem jak wyprostować tylko jak teraz ułożyć tak aby sie poprawnie wyświetlało
com
chodziło nam żebyśmy mogli zobaczyć jaki masz wynik twojego zapytania i dzięki temu pomóc znaleźć błąd nie e tak masz zostawić potem w kodzie wink.gif a teraz patrz wpis nospor smile.gif
sapit
Cytat(nospor @ 5.10.2021, 14:30:09 ) *
I popatrz na ID ktorych uzywasz, bo raz ze uzywasz nie tego co trzeba a dwa ze uzywasz za kazdym razem tego samego... W moim arcie bylo wyraznie napisane kiedy jakie ID ma isc a nei ty sobie radosnie strzelasz jak leci



Ok jeszcze raz uważnie przypatrze się temu , może masz racje zbyt chyba szybko chce uzyskać już efekt :/

Cytat(com @ 5.10.2021, 14:31:58 ) *
chodziło nam żebyśmy mogli zobaczyć jaki masz wynik twojego zapytania i dzięki temu pomóc znaleźć błąd nie e tak masz zostawić potem w kodzie wink.gif a teraz patrz wpis nospor smile.gif


Ok jak będę przy kompie to puszczę wynik



  1. <tbody>
  2. <?php
  3. $sql = "SELECT * FROM client_product INNER JOIN clients ON client_product.id_client = clients.id INNER JOIN product ON client_product.id_product = product.id ORDER BY clients.firstname, clients.lastname ASC, product.list ASC";
  4. $result = mysqli_query($conn, $sql);
  5. $clients = array();
  6. while ($row = mysqli_fetch_array($result)) {
  7.  
  8.  
  9. $id_client = $row['id_client'];
  10.  
  11.  
  12. if (!isset($clients[$id_client]))
  13. $clients[$id_client] = array('firstname' => $row['firstname'], 'products' => array());
  14.  
  15.  
  16. if (!empty($row['list']))
  17. $clients[$id_client]['products'][] = array('list' => $row['list'], 'id' => $row['id']);
  18. print_r($clients);
  19. ?>
  20. <?php
  21. echo '<tr>';
  22. foreach ($clients as $cli){
  23. echo '<th>'.$cli['firstname'].'<th>';
  24. foreach ($cli['products'] as $product){
  25. echo '<th>'.$product['list'].'</th>';
  26. }
  27. echo '</th>
  28. </th>';
  29. }
  30. echo '</tr>';
  31. ?>
  32. <?php } ?>
  33. </tbody>
nospor
Print_r robi sie po petli a nie w petli tongue.gif

No i dobra, tablica jest teraz ok. Tylko jej wyswietlanie to schrzaniles koncertowo. TR TD to nie to samo so UL LI. To sa dwa rozne mechanizmy i nie mozesz ich stosowac tak samo. Co zreszta widac po efekcie ktory uzyskales wink.gif
Pomysl teraz troche jak to poprawinie wyswietlic w TR TD

No i wyswietlac tez ma po PETLI generujaca tablice a nie w trakcje facepalmxd.gif
Skup sie troche na tym co robisz bo to zadna frajda ci pomagac w takim stanie
sapit
Cytat(nospor @ 5.10.2021, 15:54:27 ) *
Print_r robi sie po petli a nie w petli tongue.gif

No i dobra, tablica jest teraz ok. Tylko jej wyswietlanie to schrzaniles koncertowo. TR TD to nie to samo so UL LI. To sa dwa rozne mechanizmy i nie mozesz ich stosowac tak samo. Co zreszta widac po efekcie ktory uzyskales wink.gif
Pomysl teraz troche jak to poprawinie wyswietlic w TR TD

No i wyswietlac tez ma po PETLI generujaca tablice a nie w trakcje facepalmxd.gif
Skup sie troche na tym co robisz bo to zadna frajda ci pomagac w takim stanie


Narazie to jest taki efekt ale pewnie jeszcze jest cos do zrobienia bo na tą chwile z 3 klientów pokazuje to samo



nospor
Pokaz kod po zmianach, bo jakos nie ufam zmianom co zrobiles
sapit
Cytat(nospor @ 5.10.2021, 16:32:10 ) *
Pokaz kod po zmianach, bo jakos nie ufam zmianom co zrobiles


  1. <?php
  2. $sql = "SELECT * FROM client_product INNER JOIN clients ON client_product.id_client = clients.id INNER JOIN product ON client_product.id_product = product.id ORDER BY clients.firstname, clients.lastname ASC, product.list ASC";
  3. $result = mysqli_query($conn, $sql);
  4. $client = array();
  5. while ($row = mysqli_fetch_array($result)) {
  6.  
  7.  
  8. $id = $row['id_client'];
  9.  
  10.  
  11. if (!isset($client[$id]))
  12. $client[$id] = array('firstname' => $row['firstname'], 'products' => array());
  13.  
  14.  
  15. if (!empty($row['list']))
  16. $client[$id]['products'][] = array('list' => $row['list'], 'id' => $row['id']);
  17. // print_r($client); //do obejrzenia jak wygląda wygenerowana tablica
  18. ?>
  19. <?php
  20. echo '<ul>';
  21. foreach ($client as $cli){
  22. echo '<li>'.$cli['firstname'].'<ul>';
  23. foreach ($cli['products'] as $product){
  24. echo '<li>'.$product['list'].
  25. '</li>';
  26. }
  27. echo '</ul></li>';
  28. }
  29. echo '</ul>';
  30. ?>
  31. <?php } ?>
nospor
Dobra ja sie poddaje. 10 razy mam mowic: wywal wyswietlane poza petle generujaca tablice? Niestety nie zostalem obdarzony cierpliwoscia i jak ktos olewa to co mowie X razy (i nie mowie tu tylko o tym wyswietalniu w petli generujacej, ale w tym temacie juz parokrotnie ignorowales moje posty) to ja sie wycofuje z dalszego pomagania.
sapit
Cytat(nospor @ 6.10.2021, 10:22:06 ) *
Dobra ja sie poddaje. 10 razy mam mowic: wywal wyswietlane poza petle generujaca tablice? Niestety nie zostalem obdarzony cierpliwoscia i jak ktos olewa to co mowie X razy (i nie mowie tu tylko o tym wyswietalniu w petli generujacej, ale w tym temacie juz parokrotnie ignorowales moje posty) to ja sie wycofuje z dalszego pomagania.



Przepraszam cie najmocniej sad.gif Tak to jest jak ktoś się głąbem urodził 😉 Ale spokojnie sprawę dziś rano rozwiązałem już w całkiem inny sposób smile.gif I działa już wszystko tak jak chciałem smile.gif Jak będę przy komputerze to pokaże efekt który uzyskałem i który jest taki jak mi zależało. Ale i tak serdecznie chciałbym podziękować Tobie i wszystkim innym którzy zaangażowali się mi tu pomoc na forum !

Efekt końcowy smile.gif


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.