Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System dla studenta, Pomoc w stworzeniu projektu
sapit
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Witam wszytskich,

Szukam osób ktore beda wstanie mi pomoc lub pokierowac w stworzeniu systemu dla studentow. Aplikacja miala by byc stworzona w PHP 7 i MYSQLi a wyglad w Bootstrap.Wizja jest taka ze jest logowanie do systemu z roznymi rolami dokladnie z 3 (Admin, Pracownik Uczelni oraz obsluga typu Kadry) wiadomo ze Admin widzial by w CMS wszystkie opcje po zalogowaniu , Pracownik 85%-90% opcji, a obsługa np Kadry tylko liste w tabeli o studentach i inforamcje o tym czy jest skreslony czy aktywny itd. Chcialbym stworzyc menu gdzie byla by mozliwosc dodawania studentow,edycja i usuwanie oraz oczywiscie wypelnianie danych o nich oraz mozliwosc wklejenia zdjecia legitymacyjnego, druga opcja mozliowosc dodawania przedmiotow edycja i usuwanie ich. Trzecia opcja promotorzy takze dodawanie ich edycja i usuwanie. Co najwazniejsze przy dodawaniu studenta byla by mozliwosc wtedy wybrania takze na jki idzie przedmiot lub kto bedzie jego promotorem. Czwarte menu aby byla mozliwosc stworzenia "file managera" osobiscie znalazłęm cos takiego jak (Tiny File Manager - https://tinyfilemanager.github.io/ ) Mysle ze super by sie nadawalo do tego systemu. Przepraszam wszytskich ale jestem raczkujacy i na forum i w PHP wiec cos tam juz stworzone mam na localhoscie ale wolalem najpierw podpytac sie czy ktos moglby mi pomoc lub moze bylby chetny pokierowac mnie z kodem itd. Z gory bardzo dziekuje wszytskim za odpowiedzi. (IMG:style_emoticons/default/smile.gif)

Myślicie że dobrze zostało to napisane ? z 3 rożnymi rolami

  1.  
  2. $conn = mysqli_connect('localhost', 'root', '', 'baza');
  3.  
  4. $query = mysqli_query($conn, "SELECT * FROM uzytkownicy where user='" . $_SESSION['user'] . "'");
  5. while ($row = mysqli_fetch_array($query)) {
  6.  
  7. $role = $row['rols'];
  8. }
  9. if ($role == 'Admin') {
  10.  
  11. <h5>Dzień dobry <?php echo $_SESSION['user']; ?> !</h5>
  12. <p>Zalogowano się jako: <br><u>Administrator</u>
  13. </p>

  1. } elseif ($role == "Users") {
  2.  
  3. <h5>Dzień dobry <?php echo $_SESSION['user']; ?> !</h5>
  4. <p>Zalogowano się jako: <br><u>Użytkownik</u>
  5. </p>
  6.  


  1. } elseif ($role == "Kadry") {
  2.  
  3. <h5>Dzień dobry <?php echo $_SESSION['user']; ?> !</h5>
  4. <p>Zalogowano się jako: <br><u>Kadry</u>
  5. </p>
  6.  


  1. rols enum('Admin', 'Users', 'Kadry') utf8_polish_ci


Ten post edytował sapit 22.09.2021, 08:57:08
Go to the top of the page
+Quote Post
4 Stron V   1 2 3 > »   
Start new topic
Odpowiedzi (1 - 67)
gino
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Sprawdzenie kto jest zalogowany, jakie ma role itp. powinno się zrobić podczas logowania przez warstwy aplikacji, które te operacje wykonają w sposób bezpieczny.
A poza tym dane logowania (np. user) to najmniej pożądane dane aby trzymać je w sesji.
Zacznij chociażby tutaj:
php logowanie, SQL Injection
Go to the top of the page
+Quote Post
gornik
post
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 9
Dołączył: 28.04.2010

Ostrzeżenie: (0%)
-----


Auth słaby, ale nie o tym.

Co do ról to ja bym zrobił to w formie tablicy:
Będzie Ci później łatwiej rozwijać jakieś elementy w projekcie moim zdaniem.

  1. /* Tak zeby user z bazy zwracał np cos takiego */
  2. $user = [
  3. 'id' => 1,
  4. 'username' => 'testuser',
  5. 'roles' => [
  6. 'ROLE_USER',
  7. 'ROLE_STUDENT',
  8. 'ROLE_MODERATOR',
  9. ]
  10. ];
  11.  
  12. /* Ustalasz hierarchie ról, tak zeby np. ADMINISTRATOR miał dostęp do czynności moderatora */
  13. $roleHierarchy = [
  14. 'ROLE_STUDENT' => ['ROLE_USER'],
  15. 'ROLE_MODERATOR' => ['ROLE_USER', 'ROLE_STUDENT'],
  16. 'ROLE_ADMINISTRATOR' => ['ROLE_MODERATOR'], /* ROLE_ADMIN ma dostęp do ROLE_MODERATOR i dziediczy jego role - w tym przypadku ROLE_USER, ROLE_STUDENT */
  17. 'ROLE_TEST' => ['ROLE_STUDENT'], /* ROLE_TEST ma dostęp do ROLE_STUDENT i dziediczy jego role - w tym przypadku ROLE_USER */
  18. ];
  19.  
  20. /* Jakaś funkcja sprawdzająca dostęp do ról */
  21. function hasGranted($user, $role){
  22. global $roleHierarchy;
  23. /* ... tu jeszcze trzeba dopisać sprawdzanie hierachii itp */
  24. return in_array($role, $user['roles']);
  25. }
  26.  
  27. /* Akcje dla ról */
  28. $menu = [];
  29. $menu[] = ['route' => 'home_index', 'name' => 'Strona glowna'];
  30. if( hasGranted($user, 'ROLE_ADMINISTRATOR') ){
  31. /* Zrób coś dla admina np. dodaj menu item */
  32. $menu[] = ['route' => 'admin_index', 'name' => 'Panel Admina'];
  33.  
  34. }
  35. echo "<PRE>";
  36. print_r($menu);
  37. echo "</PRE>";
  38.  
  39.  
  40. /* Blokowanie dostępu */
  41. if( !hasGranted($user, 'ROLE_ADMINISTRATOR') ){
  42. exit('Wrong permissions');
  43. }
  44.  


Ten post edytował gornik 22.09.2021, 13:02:41
Go to the top of the page
+Quote Post
sapit
post
Post #4





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


WoW (IMG:style_emoticons/default/exclamation.gif) !! Myślałem że nikt mi nie pomorze ,a tu prosze jaka super pomoc na wstepię za co bardzo mocno dziękuje za wszystkie odpowiedzi i podpowiedzi. (IMG:style_emoticons/default/smile.gif)

Mam jeszcze jedno pytanie jak robie formularz dodawania Przedmiotu np

  1. <?php
  2. include_once('connection.php');
  3.  
  4. // Dodaj przedmiot
  5. if (isset($_POST['submit'])) {
  6. $item = $_POST['item'];
  7.  
  8. if(mysqli_query($conn, "INSERT INTO item (item) VALUES ('$item')")) {
  9. $success = "Pozytywnie dodano przedmiot!";
  10. } else {
  11. $error = "Błąd dodawania przedmiotu...";
  12. }
  13. }
  14. ?>



  1.  
  2.  
  3. <form method="post" action="add_item.php">
  4. <div class="form-group">
  5. <input type="text" name="item" placeholder="Dodaj przedmiot" required class="form-control" />
  6. </div>
  7. <div class="form-group">
  8. <input type="submit" name="submit" value="Dodaj przedmiot" class="btn btn-info btn-block" />
  9. </div>
  10. <span class="text-success"><?php if (isset($success)) {
  11. echo $success;
  12. } ?></span>
  13. <span class="text-danger"><?php if (isset($error)) {
  14. echo $error;
  15. } ?></span>
  16. </form>


To jak by to działa i dodaje mi to do bazy danych ale mam problem mianowicie z tym że gdy robie formularz dodawania danych studenta to chciałbym tam zrobić aby był "dropdown" i zeby była mozliwosc własnie zanzaczenia tego przedmiotu przy dodawaniu w tym formualrzu i to samo sie dotyczy wyboru prowadzonego , promotora itd? Chodzi mi o to ze bede mial pewnie kilka roznych tabel MYSQL "Tabela np item=przedmiot , teacher = prowadzocy , promoter=promotor, a na koniec tabela student=studenci i zapewne ta tabela studenci musi byc polaczona z tamtymi tabelami aby pozniej przy wypelnianiu formlarza moglo pobierac te dane z tych tabel a potem przy stronie z wykazem tych studentow (tabelce) byly te dane wyswietlane. I tu wlasnie mi chodzi jak to zrobic w PHP i jak zadac pytanie SQL ?

Haha nie wiem czy za mocno nie namieszałem i czy jasno to opisalem, moze ktos z Państwa zrozumie mnie o co chodzi (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
com
post
Post #5





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


no musisz posiadać miedzy tymi tabelami relacje, a my nie znamy twojej bazy danych (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
sapit
post
Post #6





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Dobra juz sobie prawie wszystko ogarnąłem, tylko mam jeden problem.

Gdy mam formularz dodawania danych studenta i różnych opcji z nimi związane jak np przedmiot, chcialbym aby dla danego studenta była możliwośc wybrania kilku przedmiotów i wyświetlenia ich pozniej w tabeli.


Tutaj czesc kodu z formularza dodawania studenta: add_student.php

  1. <div class="form-group">
  2. <div class="row">
  3. <label class="col-sm-3 control-label">Przedmiot</label>
  4. <div class="col-sm-9">
  5. <select type="list" name="list" class="form-control">
  6. <option value="">-- Wybierz przedmiot --</option>
  7. <?php
  8. $c1 = "SELECT * FROM `list`";
  9. $result = $conn->query($c1);
  10.  
  11. if ($result->num_rows > 0) {
  12. while ($row = mysqli_fetch_array($result)) { ?>
  13. <option value="<?php echo $row["id_list"]; ?>">
  14. <?php echo $row['list']; ?>
  15. </option>
  16. <?php
  17. }
  18. } else {
  19. echo "0 results";
  20. }
  21. ?>
  22. </select>
  23. </div>
  24. </div>
  25. </div>


A w drugim pliku list_student.php ( teraz mam tak) - wiem że to wyswietla mi jeden przedmiot ktory wybiore z listy

  1. <?php
  2. include_once('connection.php');
  3. $sql = "SELECT * FROM student";
  4. $result = $conn->query($sql);
  5. while ($row = $result->fetch_assoc()) {
  6.  
  7. $sql2 = "SELECT * FROM `list` WHERE id_list='" . $row['list'] . "'";
  8. $result2 = $conn->query($sql2);
  9. $row2 = $result2->fetch_assoc();
  10. <tr>
  11.  
  12. <td><?php echo $row2['list']; ?></td>
  13. </tr>
  14.  




Efekt chciałbym taki ze jest tabela np "DataTable" są komórki i kolumny i np w jednej z kolumn jest "Przedmiot" , a pod nim dla danego studenta jest wypisane kilka przedmiotów . POMOCY (IMG:style_emoticons/default/exclamation.gif) ! (IMG:style_emoticons/default/sad.gif)

|Przedmiot| | Imię | | Naziwsko |
---------------------------------
| Biologia | | Piotr | |Kowalski |
| Historia |
| Polski |
Go to the top of the page
+Quote Post
gornik
post
Post #7





Grupa: Zarejestrowani
Postów: 56
Pomógł: 9
Dołączył: 28.04.2010

Ostrzeżenie: (0%)
-----


Strasznie chaotycznie się wypowiadasz, nie wystarczy tam zapętlić listy przedmiotów i oddzielić np. najprościej
  1. <Br />
?
Go to the top of the page
+Quote Post
sapit
post
Post #8





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Przepraszam za chaotycznosc ale już tak mam jak cos mam w glowie to staram sie to opisac jak najlepiej aby ktos mogl mnie w miare zrozumiec. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
gino
post
Post #9





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


A dlaczego nie zrobisz osobnej tabeli z przedmiotami dla studentów? np. id, przedmiot, status i tabeli która powiąże to ze studentem id, id_student, id_przedmiot. W innym razie będziesz się bujał z redundancją bazy.
Go to the top of the page
+Quote Post
sapit
post
Post #10





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Zrobiłem to tak:

Tutaj jest lista dodanych przedmiotów:
(IMG:https://snipboard.io/b2m4Ke.jpg)

A tutaj widok bazy danych:
(IMG:https://snipboard.io/FuyA5h.jpg)

Formularz dodawania studenta i wybór przedmiotu:(jak widac pobiera przedmioty z bazy danych)
(IMG:https://snipboard.io/tLAGcW.jpg)

Widok po dodaniu studenta:
(IMG:https://snipboard.io/2hadTV.jpg)


A co bym chciał zrobić finalnie aby mozna było w formularzu studenta wybrac np. dwa lub więcej przedmiotów naraz i aby one byly widoczne na liscie studenta. Ponieawż student moze chodzić na kilka przedmiotow .


Go to the top of the page
+Quote Post
com
post
Post #11





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


musisz zrobić sobie tabele z przedmiotami i studentami i kolejną która połączy na bazie relacji te przedmioty ze studentami w relacji wiele do wielu (http://www.glowacki.p9.pl/nowa_strona/strony/niedatowane/kurs_mysql/k_2_2_3.php i sekcja Relacja wiele do wielu W:W) a przedmioty przechowuj za pomocą id bo tak masz redundancje danych (IMG:style_emoticons/default/smile.gif)

Ten post edytował com 29.09.2021, 10:19:58
Go to the top of the page
+Quote Post
sapit
post
Post #12





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(com @ 29.09.2021, 11:18:46 ) *
musisz zrobić sobie tabele z przedmiotami i studentami i kolejną która połączy na bazie relacji te przedmioty ze studentami w relacji wiele do wielu (http://www.glowacki.p9.pl/nowa_strona/strony/niedatowane/kurs_mysql/k_2_2_3.php i sekcja Relacja wiele do wielu W:W) a przedmioty przechowuj za pomocą id bo tak masz redundancje danych (IMG:style_emoticons/default/smile.gif)


Dziekuje za wskazówkę (IMG:style_emoticons/default/smile.gif) Jak już to zrobie to jak sprawić w kodzie PHP aby to wyswietlic ?

  1. <?php
  2. include_once('connection.php');
  3. $sql = "SELECT * FROM student";
  4. $result = $conn->query($sql);
  5. while ($row = $result->fetch_assoc()) {
  6.  
  7. $sql2 = "SELECT * FROM `list` WHERE id_list='" . $row['list'] . "'";
  8. $result2 = $conn->query($sql2);
  9. $row2 = $result2->fetch_assoc();
  10. <tr>
  11.  
  12. <td><?php echo $row2['list']; ?></td>
  13. </tr>


Ten post edytował sapit 29.09.2021, 10:37:19
Go to the top of the page
+Quote Post
gornik
post
Post #13





Grupa: Zarejestrowani
Postów: 56
Pomógł: 9
Dołączył: 28.04.2010

Ostrzeżenie: (0%)
-----


Dobra teraz czaje (IMG:style_emoticons/default/arrowheadsmiley.png)
Musisz mieć 3 tabelki tak na szybko np:
Students:
- id:int
- name:string(255)
- createdAt:datetime

Subjects:
- id:int
- name:string(255)
- createdAt:datetime

StudentSubjects
- id:int
- subjectId: reference to Subjects
- studentId: reference to Students
- createdAt: datetime

  1. /* Jakistam student */
  2. $student = [
  3. 'id' => 30,
  4. 'name' => 'Marek Kowalski',
  5. 'createdAt' => '2021-09-20 12:30:40'
  6.  
  7. ];
  8.  
  9. /* I teraz wszystko zalezy od tego co potrzeba, mozesz uzyć INNER albo IN. Kombinuj */
  10. $sql = "SELECT * FROM `Subjects` WHERE `id` IN ( SELECT `subjectId` FROM `StudentSubjects` WHERE `studentId` = {$student['id']} )";
Go to the top of the page
+Quote Post
sapit
post
Post #14





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Raczej bardziej opierał bym się na tym o co mi chodzi (IMG:style_emoticons/default/smile.gif)

  1. https://www.onlyxcodes.com/2019/01/multiple-checkbox-value-add-edit-delete.html
Go to the top of the page
+Quote Post
gornik
post
Post #15





Grupa: Zarejestrowani
Postów: 56
Pomógł: 9
Dołączył: 28.04.2010

Ostrzeżenie: (0%)
-----


Podałem Ci tylko przykład, a nie gotowe rozwiązanie, od tego już tylko prosta droga żeby osiągnąć to co chcesz.
Go to the top of the page
+Quote Post
sapit
post
Post #16





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(gornik @ 29.09.2021, 12:19:54 ) *
Podałem Ci tylko przykład, a nie gotowe rozwiązanie, od tego już tylko prosta droga żeby osiągnąć to co chcesz.


Rozumiem. Dziekuje z góry (IMG:style_emoticons/default/smile.gif)

Kurcze jednak drodzy Państwo poległem na tym chyba , ale znając życie zaraz się okaże finalnie że to bardzo proste jest o zrobienia ale za każdym razem jak coś robie to mam błąd (IMG:style_emoticons/default/sad.gif)

Może jednak ktoś z Pańśtwa się zlituje nade mną i więcej podpowie lub pomoze (IMG:style_emoticons/default/smile.gif) Taki final chcialbym uzyskać ze sa dane studenta a w jednej z kolumn lista przedmiotow dla niego czasami moga to byc 2 przedmioty , jeden lub 5

(IMG:https://i.stack.imgur.com/tmJcv.png)

Stworzyłem 3 tabele w bazie danych:

tabela list= *czyli lista przedmiotow

  1. id_list - INT AUTO INCREMENT
  2. list - VARCHAR 255


tabela student = * czyli dane sudenta
  1. id - INT AUTO INCREMENT
  2. id_student - INT
  3. firstname - VARCHAR 255
  4. lastname - VARCHAR 255
  5. pesel - VARCHAR 255
  6. list - VARCHAR 255


tabela studentlists = * czyli połaczenie dwóch tabel
  1. id - INT AUTO INCREMENT
  2. id_list - INT
  3. id_student - INT



w formularzu dodawania studenta * add_student.php w sekcji Przedmiot napisałem to tak
  1. <div class="form-group">
  2. <div class="row">
  3. <label class="col-sm-3 control-label">Przedmiot</label>
  4. <div class="col-sm-9">
  5. <select type="text" name="list[]" multiple class="form-control">
  6. <option value="">-- Wybierz przedmiot --</option>
  7. <?php
  8. $c1 = "SELECT * FROM `list`";
  9. $result = $conn->query($c1);
  10.  
  11. if ($result->num_rows > 0) {
  12. while ($row = mysqli_fetch_array($result)) { ?>
  13. <option value="<?php echo $row["id_list"]; ?>">
  14. <?php echo $row['list']; ?>
  15. </option>
  16. <?php
  17. }
  18. } else {
  19. echo "0 results";
  20. }
  21. ?>
  22. </select>
  23. </div>
  24. </div>
  25. </div>
  26.  


po kliknięciu przycisk Dodaj - czyli (name=submit) stworzyłem plik *save_student.php
  1. <?php
  2. include('../connection.php');
  3. $sql = "INSERT INTO student (firstname, lastname, pesel, list) VALUES ('$firstname', '$lastname', '$pesel', '$list')";
  4. if ($conn->query($sql) === TRUE) {
  5. $_SESSION['success'] = 'Pomyślnie dodano studenta';
  6. ?>
  7. <script type="text/javascript">
  8. window.location = "../list_student.php";
  9. </script>
  10. <?php
  11. } else {
  12. $_SESSION['error'] = 'Coś poszło nie tak';
  13. ?>
  14. <script type="text/javascript">
  15. window.location = "../list_student.php";
  16. </script>
  17. <?php } ?>


a na koniec plik z widokiem listy studentów *list_student.php

  1. <tr>
  2. <th></th>
  3. <th>Imie</th>
  4. <th>Nazwisko</th>
  5. <th>Pesel</th>
  6. <th>Przedmiot</th>
  7. </tr>
  8. </thead>


  1. <?php
  2. include_once('connection.php');
  3. $sql = "SELECT * FROM student";
  4. $result = $conn->query($sql);
  5. while ($row = $result->fetch_assoc()) {
  6. $sqll = "SELECT * FROM studentlists WHERE id (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ? (Jak zada poprawne zapytanie aby pobrało te dwa przedmioty ?
  7. $result1 = $conn->query($sqll);
  8. $row1 = $result1->fetch_assoc();
  9. ?>
  10. <tr>
  11. <td></td>
  12.  
  13. <td><?php echo $row['firstname']; ?></td>
  14. <td><?php echo $row['lastname']; ?></td>
  15. <td><?php echo $row['pesel']; ?></td>
  16. <td><?php echo $row1[' I właśnie co tutaj mam zrobić aby np. dwa przedmioty się tu wybrane po wybraniu ich w formularzu się pojawiły ?']; ?></td>
  17.  


Jak ktoś będzie mnie chciał opierdzielić za brak jakieś wiedzy itd spoko biore to na klate (IMG:style_emoticons/default/smile.gif) ale potrzebuje pomocy (IMG:style_emoticons/default/sad.gif)

Ten post edytował sapit 29.09.2021, 11:22:13
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po pierwsze wywal pole LIST z tabeli STUDENT. przeciez teraz masz oddzielna tabele na przedmioty do ktorych jest przypisany student, nieprawdaz? I wlasnie do tej tabeli masz wpisywac przedmioty przypisane do studenta.

Co do wyswietlania przedmiotow studenta to poprostu przy pomocy LEFT join laczysz ze soba tabele podczas SELECTa
Go to the top of the page
+Quote Post
sapit
post
Post #18





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 30.09.2021, 16:26:17 ) *
Po pierwsze wywal pole LIST z tabeli STUDENT. przeciez teraz masz oddzielna tabele na przedmioty do ktorych jest przypisany student, nieprawdaz? I wlasnie do tej tabeli masz wpisywac przedmioty przypisane do studenta.

Co do wyswietlania przedmiotow studenta to poprostu przy pomocy LEFT join laczysz ze soba tabele podczas SELECTa


Dobra zaraz się za to zabieram wywalę pole LIST z tabeli student i postaram się sklepac zapytanie przy pomocy LEFT JOIN (IMG:style_emoticons/default/smile.gif) Dziękuje za cenne wskazówki , bo czasami to już ręce opadają co człowiek robi źle ze nie wychodzi tak jak by się chciało (IMG:style_emoticons/default/smile.gif)

Zrobiłem przez LEFT JOIN ale nie wiem czemu dalej i wychodzi teraz tak że np w tabeli mam wypisane
  1. "SELECT * FROM student LEFT JOIN list ON list.id_list=student.id_student"


ID Imię Nazwisko Przedmiot
1. Jan Kowalski Biologia
2. Jan Kowalski Geografia
3. Marta Szymańska Biologia


zamiast

ID Imię Nazwisko Przedmiot
1 Jan Kowalski Biologia
...... ...... ...... Geografia

2. Marta Szymańska Biologia

Ten post edytował sapit 1.10.2021, 08:43:18
Go to the top of the page
+Quote Post
gino
post
Post #19





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Co ma wspólnego u Ciebie id_list z id_student bo za bardzo nie rozumiem. Po co w taki razie utworzyłeś tabelę studentlist, jeśli w zapytaniu w ogóle z niej nie korzystasz? To przecież ta tabela właśnie robi relacje miedzy tabelami student i list.
Zapytanie ma połączyć 3 tabele a nie tylko dwie.

edit

Czy mi się wydaje, że za każdym razem jeśli dodajesz przedmiot to wrzucasz komplet danych studenta?

Ten post edytował gino 1.10.2021, 09:31:16
Go to the top of the page
+Quote Post
sapit
post
Post #20





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(gino @ 1.10.2021, 10:26:00 ) *
Co ma wspólnego u Ciebie id_list z id_student bo za bardzo nie rozumiem. Po co w taki razie utworzyłeś tabelę studentlist, jeśli w zapytaniu w ogóle z niej nie korzystasz? To przecież ta tabela właśnie robi relacje miedzy tabelami student i list.
Zapytanie ma połączyć 3 tabele a nie tylko dwie.

edit

Czy mi się wydaje, że za każdym razem jeśli dodajesz przedmiot to wrzucasz komplet danych studenta?



Tak faktycznie teraz też zobaczyłęm ze walnąłęm gafe z tą tabelą i zauwazyłęm błąd w tym zapyraniu SQL zaraz to poprawie :/

Nie dodawanie przedmiotu odbywa sie osobno w formualrzu

a dodawanie studenta odbywa sie tez osobno w innym formularzu tam wtedy powinien byc chyba coś takiego (NAME='list[]' multiple ) co sprawi żę bedzie mozna wybrac w formualrzu kilka przedmiotow trzymając przycisk "ctrl" a po nacisnieciu name="submit" - "Dodaj" chcialbym aby na liscie studentow wyglodalo to jak wyzej.

Go to the top of the page
+Quote Post
gino
post
Post #21





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Cytat
Nie dodawanie przedmiotu odbywa się osobno w formualrzu


formularz jest najmniej interesujący, pytanie gdzie wrzucasz dane z tego name list multiple. Masz je zapisać w tabeli studentlist z odpowiednim id studenta.
Po co w tabeli student pole id_student? Co tam wpisujesz?
Go to the top of the page
+Quote Post
sapit
post
Post #22





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(sapit @ 1.10.2021, 11:06:09 ) *
Tak faktycznie teraz też zobaczyłęm ze walnąłęm gafe z tą tabelą i zauwazyłęm błąd w tym zapyraniu SQL zaraz to poprawie :/

Nie dodawanie przedmiotu odbywa sie osobno w formualrzu

a dodawanie studenta odbywa sie tez osobno w innym formularzu tam wtedy powinien byc chyba coś takiego (NAME='list[]' multiple ) co sprawi żę bedzie mozna wybrac w formualrzu kilka przedmiotow trzymając przycisk "ctrl" a po nacisnieciu name="submit" - "Dodaj" chcialbym aby na liscie studentow wyglodalo to jak wyzej.


Czy to moze być poprawne zapytanie ?
  1. "SELECT * FROM `studentlists` LEFT JOIN list ON studentlists.id_student = list.id_list"

Go to the top of the page
+Quote Post
gino
post
Post #23





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


To jest poprawne zapytanie w sensie sql-a, pytanie czy jest poprawne dla Ciebie. Wrzuć do zapytania trzecią tabele student, aby otrzymać dane studenta.
To samo musisz zrobić z promotorami (osobna tabela i tabela wiążąca ze studentami), bo student ma prawo zmienić promotora a dane warto sobie zachować chociażby do statystyk. Dodałbym w tabeli student status, żeby wiedzieć co się dzieje ze studentem (dziekanka, wykreślony, wyrzucony itd.). Czy zbierasz informacje o kierunku nauczania? Bo student może być na 2 kierunkach.
Na dzień dobry zastanów się jakie dane chcesz zbierać, co chcesz wyświetlać itd. Wszystko zaczyna się na kartce papieru jako projekt.
Go to the top of the page
+Quote Post
sapit
post
Post #24





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(gino @ 1.10.2021, 11:39:28 ) *
To jest poprawne zapytanie w sensie sql-a, pytanie czy jest poprawne dla Ciebie. Wrzuć do zapytania trzecią tabele student, aby otrzymać dane studenta.
To samo musisz zrobić z promotorami (osobna tabela i tabela wiążąca ze studentami), bo student ma prawo zmienić promotora a dane warto sobie zachować chociażby do statystyk. Dodałbym w tabeli student status, żeby wiedzieć co się dzieje ze studentem (dziekanka, wykreślony, wyrzucony itd.). Czy zbierasz informacje o kierunku nauczania? Bo student może być na 2 kierunkach.
Na dzień dobry zastanów się jakie dane chcesz zbierać, co chcesz wyświetlać itd. Wszystko zaczyna się na kartce papieru jako projekt.



OK rozumiem, tylko dalej nie wiem w jaki sposob mam zazaznaczyc ze chce dwa przedmioty dla jednego studenta aby sie pojawily w formularzu dodawania oraz dwie odpowiedzi umiescic w jednej komorce tabeli dla jednego studenta :/ Bo jesli chodzi o zapytanie to ok ale jak to umiescic i napisac w php ? Chyba ze ja zle tlumacze i pisze o co mi chodzi (IMG:style_emoticons/default/sad.gif) Ja sie kurcze chyba poddaje (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #25





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie mam zbytnio duzo czasy by dokladnie ci opisac twoj przyklad ale tutaj
http://nospor.pl/grupowanie-wynikow.html
masz zrobione wyswetilanie danych na przykladzie niemalze identycznym jak twoj. Ok, nie ma jednej tabeli, ale zasada pobierania danuch w php z zapytania i ich wyswietlanie jest ta sama co u ciebie
Go to the top of the page
+Quote Post
sapit
post
Post #26





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 1.10.2021, 15:12:05 ) *
Nie mam zbytnio duzo czasy by dokladnie ci opisac twoj przyklad ale tutaj
http://nospor.pl/grupowanie-wynikow.html
masz zrobione wyswetilanie danych na przykladzie niemalze identycznym jak twoj. Ok, nie ma jednej tabeli, ale zasada pobierania danuch w php z zapytania i ich wyswietlanie jest ta sama co u ciebie


nospor Jestem mega Tobie wdzięczny bo na szybko zerknąlem na link i chyba wychodzi na to ze w koncu cos jednak w tym temacie mi się ruszy jesli chodzi o rozwaizanie mojego problemu dzieki tobie (IMG:style_emoticons/default/smile.gif) . Kurcze wiadomo po kombinuje sobie dalej mimo ze jestem "żółto dziub" w PHP ale chce sie uczyc i poznawac rozne rozwiazania i dzieki Tobie mając w głowie że bede musiał się poddać mam śwaitło w tunelu (IMG:style_emoticons/default/smile.gif) Dziękuje pięknie (IMG:style_emoticons/default/exclamation.gif) !!

Dam znać jak mi się uda i puszcze efekt (IMG:style_emoticons/default/smile.gif)

A teraz mam pytanie z innej beczki , jak moge sprawic aby w formukarzu byl dropdown multiple select ? Abym mogl zaznaczyc dwie rzeczy i aby te dwie rzeczy tak jak w moim przypadku są to przedmioty się dodały do bazy danych ? Pokaze moze jak zrobilem moze ktos z was zauwazy błąd bo u mnie to nie dziala (IMG:style_emoticons/default/sad.gif)

Chciałęm zastosować ten select z tej strony ale on mi nie dziala : https://select2.org/
*save_student.php
  1. <?php
  2. include('../connection.php');
  3. extract($_POST);
  4. if (isset($_POST['submit'])) {
  5. $student = $_POST['student'];
  6. $list = $_POST['list'];
  7. foreach ($list as $rowlist) {
  8. //echo $rowlist;
  9. $query = "INSERT INTO studentlists (id_list, id_student) VALUES ('$student','$rowlist')";
  10. $query_run = mysqli_query($conn, $query);
  11. }
  12. if ($query_run) {
  13. $_SESSION['status'] = 'rekord dodano';
  14. header("Location: list_student.php");
  15. } else {
  16. $_SESSION['status'] = 'rekordu nie dodano';
  17. header("Location: list_student.php");
  18. }
  19. }
  20. ?>


*add_student.php
  1. <div class="form-group">
  2. <div class="row">
  3. <label class="col-sm-3 control-label">Produkt</label>
  4. <div class="col-sm-9">
  5. <select class="js-example-basic-multiple" name="list[]" multiple="multiple">
  6. <option value=""></option>
  7. <?php
  8. $conn = mysqli_connect("localhost:3308", "root", "", "mydatabase");
  9. $query = "SELECT * FROM `list`";
  10. $query_run = mysqli_query($conn, $query);
  11. if (mysqli_num_rows($query_run) > 0) {
  12. foreach ($query_run as $rowlist) {
  13. ?>
  14. <option value="<?php echo $rowlist['id']; ?>"><?php echo $rowlist['list']; ?></option>
  15. <?php
  16. }
  17. } else {
  18. echo "Brak rekordów";
  19. }
  20. ?>
  21. </select>
  22. </div>
  23. </div>
  24. </div>


list.sql
  1. id - IN
  2. list - VARCHAR


studentlists.sql
  1. id - IN
  2. id_list - IN
  3. id_student - IN

Go to the top of the page
+Quote Post
nospor
post
Post #27





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale po co chcesz teraz uzywac jakis libow do selectow?

Samo
select name="list[]" multiple="multiple">

bez zadnego dodatkowe libu powinno ci pozwalac na wybor kilku opcji w tym select
Go to the top of the page
+Quote Post
sapit
post
Post #28





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(sapit @ 4.10.2021, 11:27:45 ) *
nospor Jestem mega Tobie wdzięczny bo na szybko zerknąlem na link i chyba wychodzi na to ze w koncu cos jednak w tym temacie mi się ruszy jesli chodzi o rozwaizanie mojego problemu dzieki tobie (IMG:style_emoticons/default/smile.gif) . Kurcze wiadomo po kombinuje sobie dalej mimo ze jestem "żółto dziub" w PHP ale chce sie uczyc i poznawac rozne rozwiazania i dzieki Tobie mając w głowie że bede musiał się poddać mam śwaitło w tunelu (IMG:style_emoticons/default/smile.gif) Dziękuje pięknie (IMG:style_emoticons/default/exclamation.gif) !!

Dam znać jak mi się uda i puszcze efekt (IMG:style_emoticons/default/smile.gif)

A teraz mam pytanie z innej beczki , jak moge sprawic aby w formukarzu byl dropdown multiple select ? Abym mogl zaznaczyc dwie rzeczy i aby te dwie rzeczy tak jak w moim przypadku są to przedmioty się dodały do bazy danych ? Pokaze moze jak zrobilem moze ktos z was zauwazy błąd bo u mnie to nie dziala (IMG:style_emoticons/default/sad.gif)

Chciałęm zastosować ten select z tej strony ale on mi nie dziala : https://select2.org/
*save_student.php
  1. <?php
  2. include('../connection.php');
  3. extract($_POST);
  4. if (isset($_POST['submit'])) {
  5. $student = $_POST['student'];
  6. $list = $_POST['list'];
  7. foreach ($list as $rowlist) {
  8. //echo $rowlist;
  9. $query = "INSERT INTO studentlists (id_list, id_student) VALUES ('$student','$rowlist')";
  10. $query_run = mysqli_query($conn, $query);
  11. }
  12. if ($query_run) {
  13. $_SESSION['status'] = 'rekord dodano';
  14. header("Location: list_student.php");
  15. } else {
  16. $_SESSION['status'] = 'rekordu nie dodano';
  17. header("Location: list_student.php");
  18. }
  19. }
  20. ?>


*add_student.php
  1. <div class="form-group">
  2. <div class="row">
  3. <label class="col-sm-3 control-label">Produkt</label>
  4. <div class="col-sm-9">
  5. <select class="js-example-basic-multiple" name="list[]" multiple="multiple">
  6. <option value=""></option>
  7. <?php
  8. $conn = mysqli_connect("localhost:3308", "root", "", "mydatabase");
  9. $query = "SELECT * FROM `list`";
  10. $query_run = mysqli_query($conn, $query);
  11. if (mysqli_num_rows($query_run) > 0) {
  12. foreach ($query_run as $rowlist) {
  13. ?>
  14. <option value="<?php echo $rowlist['id']; ?>"><?php echo $rowlist['list']; ?></option>
  15. <?php
  16. }
  17. } else {
  18. echo "Brak rekordów";
  19. }
  20. ?>
  21. </select>
  22. </div>
  23. </div>
  24. </div>


list.sql
  1. id - IN
  2. list - VARCHAR


studentlists.sql
  1. id - IN
  2. id_list - IN
  3. id_student - IN


Zapomniałem wyzej dopisac skad ta zmiena $student

  1. <form class="form-horizontal" method="POST" action="pages/save_student.php" name="student" enctype="multipart/form-data">
Go to the top of the page
+Quote Post
nospor
post
Post #29





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




NAME w formularzu ma sie nijak do tego co idzie postem. To NAME w polach odpowiada za to co idzie postem.
Dodatkowo napisalem komentarz wczesniej, widziales?
Go to the top of the page
+Quote Post
sapit
post
Post #30





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 4.10.2021, 12:58:31 ) *
NAME w formularzu ma sie nijak do tego co idzie postem. To NAME w polach odpowiada za to co idzie postem.
Dodatkowo napisalem komentarz wczesniej, widziales?


Ok z tym name to zaraz sprawdzę ale komentarza wcześniejszego nie widzę :/

Cytat(sapit @ 4.10.2021, 13:23:10 ) *
Ok z tym name to zaraz sprawdzę ale komentarza wcześniejszego nie widzę :/


Ok sorry ślepy jakiś jestem znalazłem komentarz (IMG:style_emoticons/default/smile.gif) ale nie skumalem co jest "libow" w select ?
Go to the top of the page
+Quote Post
nospor
post
Post #31





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No uzywasz jakiegos select2. To jest wlasnie lib/biblioteka. po grzyba ci to na tym etapie?
Go to the top of the page
+Quote Post
sapit
post
Post #32





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


(IMG:https://snipboard.io/cFO195.jpg)

<select name="list[]" multiple="multiple">

Tak zrobiłęm i tak wygląda efekt (IMG:style_emoticons/default/sad.gif)



Go to the top of the page
+Quote Post
nospor
post
Post #33





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No i prawidlowo wyglada

Wywal tylko te opcje "-- wybierz przedmio--" bo jest totalnie zbedna tam
Go to the top of the page
+Quote Post
sapit
post
Post #34





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 4.10.2021, 16:40:54 ) *
No i prawidlowo wyglada

Wywal tylko te opcje "-- wybierz przedmio--" bo jest totalnie zbedna tam


Ok wywaliłem to ale jak mam to zaznaczyć i zrobić aby zapisało się w bazie bo jak narazie w bazie zapisuje się "array" (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #35





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No bo przedmiot wysylany postem, jest teraz tablica (array). poniewaz zrobiles multiselect, wiec ta tablica zawiera teraz kilka przedmiotow.
Masz iterowac po tej tablicy, i wykonac tyle zapan INSERT ile masz elementow (przedmiotow) w tej tablicy. INSERT rzecz jasna masz wykonywac do tabeli student_przedmioty
Go to the top of the page
+Quote Post
sapit
post
Post #36





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 4.10.2021, 16:48:44 ) *
No bo przedmiot wysylany postem, jest teraz tablica (array). poniewaz zrobiles multiselect, wiec ta tablica zawiera teraz kilka przedmiotow.
Masz iterowac po tej tablicy, i wykonac tyle zapan INSERT ile masz elementow (przedmiotow) w tej tablicy. INSERT rzecz jasna masz wykonywac do tabeli student_przedmioty


(IMG:https://snipboard.io/2zy0uI.jpg)

cos takiego zrobilem ? Dobrze ? Tam dzie jest "itd"itd to oczywiscie chodzilo mi ze trzeba napisac wszystkie zmienne $_POST z formularza ale to i tak dalej nie dziala bo pokazuje mi "rekordu nie dodano" (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #37





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Toz sam piszesz w delkaracji zapytania, ze tabela ma tylko 2 pola: id_client i id_product. To jakim cudem wkladasz tam jakies firstName oraz masze ITD? przeciez tam wklozyc ID studenta i ID przedmiotu, tak?

I nie zadne client-product, tylko client_product.
Wyswietlaj bledy zapytania to bedziesz widzial co sie pieprzy
I czemy w ogole client_product kiedy tam mialo byc studentlists?
Go to the top of the page
+Quote Post
sapit
post
Post #38





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 4.10.2021, 17:15:59 ) *
Toz sam piszesz w delkaracji zapytania, ze tabela ma tylko 2 pola: id_client i id_product. To jakim cudem wkladasz tam jakies firstName oraz masze ITD? przeciez tam wklozyc ID studenta i ID przedmiotu, tak?

I nie zadne client-product, tylko client_product.
Wyswietlaj bledy zapytania to bedziesz widzial co sie pieprzy
I czemy w ogole client_product kiedy tam mialo byc student_przedmiot?



client_product To mój błąd nie to wkleiłem ponieważ robiłem sobie na boku cos podobnego w wersji skróconej aby zobaczyć czy zadziała czy tez nie .

A jesteś może wstanie mi jakoś to napisać pokazać na jakimś przykładzie ?
Go to the top of the page
+Quote Post
nospor
post
Post #39





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Notoz masz przyklad, sam pisales go wczesniej

foreach ($list as $rowlist) {
//echo $rowlist;
$query = "INSERT INTO studentlists (id_list, id_student) VALUES ('$student','$rowlist')";
$query_run = mysqli_query($conn, $query);
}

Tylko sie upewnij ze masz wlasciwe wartosci tu
Go to the top of the page
+Quote Post
sapit
post
Post #40





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Dzięki nospor za wszystko. Podszedłem do tematu troche na nowo. Stworzyłem szybko mikro system "demo" zaczałem robic od samego poczatku wszystko na nowo i faktycznie dzięki Twoim wskazówką zaczeło działać wiec moj problem już jest rozwiązany w 95%. Teraz podsyłam ostatnią prostą z czym nie potrafie sobie poradzić. Pokaze to na zdjeciu i zapytanie SQL ktore napisałem.

$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 ";

--> wiem że powiniene zastosowac z CONCAT_GROUP i cos z GROUP BY ale ni hu hu mi nic nie wychodzi z tego (IMG:style_emoticons/default/sad.gif)

tabela = clients

id
firstname
lastname

tabela = client_product

id
id_client
id_product

tabela = product

id
list

(IMG:https://snipboard.io/KMUt6G.jpg)
Go to the top of the page
+Quote Post
gino
post
Post #41





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Czy mógłbyś mi pokazać skąd pobierasz identyfikator studenta dla danych do tabeli studentlist? Ok, dodajesz firstname, pesel itd do tabeli student a co wpisujesz do tabeli stidentlist w pole id_student? Możesz pokazać ten fragment kodu, który za to odpowiada?
Pytałem też, co to jest za pole w tabeli student o nazwie id_student? Masz tam pole id autoincrement i to pole jest identyfikatorem studenta i wartość tego pola musisz pobrać do tabeli studentlist podczas iteracji przedmiotów, zaraz po wprowadzeniu danych studenta.

I w "systemie" student i w demo nie możesz przypisać do pola typu int danych typu string:
dla tabeli studentlist: id_student->$student (to jest nazwa formularza a nie identyfikator studenta)
dla tabeli client_product: id_client->$firstname (podejrzewam, że to imię)
Insert do tych tabel nie ma prawa się wykonać.
Go to the top of the page
+Quote Post
nospor
post
Post #42





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No dobrze, ale nie napisales z czym sobie nie mozesz poradzic (IMG:style_emoticons/default/smile.gif)
Jesli zas co chodzi o wyswietlanie odpowiednie teraz tych danych, to przeciez jakis czas temu podalem ci linka do arta, ktory rozwiazuje ten problem

ps: jesli zas problemem byl ten group_concat to olej, jest to niepotrzebne tutaj. W arcie co ci podalem obchodze sie bez tego tez
Go to the top of the page
+Quote Post
sapit
post
Post #43





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 5.10.2021, 09:57:16 ) *
No dobrze, ale nie napisales z czym sobie nie mozesz poradzic (IMG:style_emoticons/default/smile.gif)
Jesli zas co chodzi o wyswietlanie odpowiednie teraz tych danych, to przeciez jakis czas temu podalem ci linka do arta, ktory rozwiazuje ten problem

ps: jesli zas problemem byl ten group_concat to olej, jest to niepotrzebne tutaj. W arcie co ci podalem obchodze sie bez tego tez


No wlasnie z tamtym linkiem fajnie to wyglada wszytsko na stronie i tak to chialbym ale jak robie podobne zapytanie jak tam bez tego GROUP_CONCAT to nic mi nie wychodzi :/
Go to the top of the page
+Quote Post
nospor
post
Post #44





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To pokaz jak probujesz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
sapit
post
Post #45





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(gino @ 5.10.2021, 08:08:23 ) *
Czy mógłbyś mi pokazać skąd pobierasz identyfikator studenta dla danych do tabeli studentlist? Ok, dodajesz firstname, pesel itd do tabeli student a co wpisujesz do tabeli stidentlist w pole id_student? Możesz pokazać ten fragment kodu, który za to odpowiada?
Pytałem też, co to jest za pole w tabeli student o nazwie id_student? Masz tam pole id autoincrement i to pole jest identyfikatorem studenta i wartość tego pola musisz pobrać do tabeli studentlist podczas iteracji przedmiotów, zaraz po wprowadzeniu danych studenta.

I w "systemie" student i w demo nie możesz przypisać do pola typu int danych typu string:
dla tabeli studentlist: id_student->$student (to jest nazwa formularza a nie identyfikator studenta)
dla tabeli client_product: id_client->$firstname (podejrzewam, że to imię)
Insert do tych tabel nie ma prawa się wykonać.


Tam ten system ma błędy z tego co zauwazylem, wiec stworzylem system na szybko "demo" aby zrobic cos co i zadziala i bedzie efekt taki jak bym chcial , wtedy wroce do tam tego systemu i postaram sie wtedy sprawic tak i poprawic kod aby efekt z systemu "demo" uzyskac w tym systemie macierzystym. (IMG:style_emoticons/default/smile.gif) haha mam nadzieje ze taka kombinacja mi sie uda (IMG:style_emoticons/default/smile.gif) Chyba ze za bardzo przekombinuje :/
Go to the top of the page
+Quote Post
gino
post
Post #46





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Ale demo nie działa i działać nie będzie w takim kształcie.

1. Do tabeli clients wprowadzasz firstname, lastname i automatycznie generuje się w polu autoincrement id tego rekordu
2. Musisz pobrać ten identyfikator z tabeli clients, np. tak mysql last id
3. W iteracji gdzie insertujesz produkty do tabeli client_product wrzucasz do pola id_client uzyskany last_id, do pola id_product id produktu z tabeli product
Tyle i aż tyle.
Go to the top of the page
+Quote Post
sapit
post
Post #47





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(gino @ 5.10.2021, 11:19:38 ) *
Ale demo nie działa i działać nie będzie w takim kształcie.

1. Do tabeli clients wprowadzasz firstname, lastname i automatycznie generuje się w polu autoincrement id tego rekordu
2. Musisz pobrać ten identyfikator z tabeli clients, np. tak mysql last id
3. W iteracji gdzie insertujesz produkty do tabeli client_product wrzucasz do pola id_client uzyskany last_id, do pola id_product id produktu z tabeli product
Tyle i aż tyle.



Ojjj poczekaj musze to sobie sprawidzc twoim sposobem zobacze czy wyjdzie efekt taki jak chciałbym:)


Cytat(sapit @ 5.10.2021, 11:21:59 ) *
Ojjj poczekaj musze to sobie sprawidzc twoim sposobem zobacze czy wyjdzie efekt taki jak chciałbym:)


Sorry _ nie wiem czy dobrze rozumuje ten 3 punkt , czy moglbys mnie naprowadzic jakos ?

3. W iteracji gdzie insertujesz produkty do tabeli client_product wrzucasz do pola id_client uzyskany last_id, do pola id_product id produktu z tabeli product
Tyle i aż tyle.

$id_client = $_POST['id_client'];
$product = $_POST['product'];
foreach($product as $rowlist)
{
$query = "INSERT INTO client_product (id_client, id_product) VALUES ('$id_client','$rowlist')"; (jest )

$query = "INSERT INTO client_product (last_id, id_product) VALUES ('$id_client','$rowlist')"; (a powinno być tak ? )

Widok

SELECT * FROM client_product INNER JOIN clients ON client_product.last_id = clients.id INNER JOIN product ON client_product.id_product = product.id ";
Go to the top of the page
+Quote Post
gino
post
Post #48





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Kod
$id_client = $_POST['id_client'];


skąd wziąłeś w formularzu id_client?
Pokaż kod całego formularza i cały plik do zapisu danych.

Ten post edytował gino 5.10.2021, 11:21:08
Go to the top of the page
+Quote Post
sapit
post
Post #49





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(gino @ 5.10.2021, 12:20:52 ) *
Kod
$id_client = $_POST['id_client'];


skąd wziąłeś w formularzu id_client?
Pokaż kod całego formularza i cały plik do zapisu danych.



  1. <form method="POST" action="code.php">
  2.  
  3. <input type="hidden" name="currnt_date" class="form-control" value="">
  4.  
  5.  
  6. <div class="form-group">
  7. <div class="row">
  8. <label class="col-sm-3 control-label">ID</label>
  9. <div class="col-sm-9">
  10. <select class="form-control" name="id_client" type="text">
  11. <?php
  12. $conn = mysqli_connect("localhost:3308", "root", "", "demo");
  13. $query = "SELECT * FROM clients";
  14. $query_run = mysqli_query($conn, $query);
  15. if (mysqli_num_rows($query_run) > 0) {
  16. foreach ($query_run as $rowlist) {
  17. ?>
  18. <option value="<?php echo $rowlist['id']; ?>"><?php echo $rowlist['firstname']; ?> <?php echo $rowlist['lastname']; ?></option>
  19. <?php
  20. }
  21. } else {
  22. echo "Brak rekordów";
  23. }
  24. ?>
  25. </select>
  26. </div>
  27. </div>
  28. </div><br <div class="form-group">
  29. <div class="row">
  30. <label class="col-sm-3 control-label">Produkt</label>
  31. <div class="col-sm-9">
  32. <select name="product[]" multiple="multiple">
  33. <?php
  34. $conn = mysqli_connect("localhost:3308", "root", "", "demo");
  35. $query = "SELECT * FROM product";
  36. $query_run = mysqli_query($conn, $query);
  37. if (mysqli_num_rows($query_run) > 0) {
  38. foreach ($query_run as $rowlist) {
  39. ?>
  40. <option value="<?php echo $rowlist['id']; ?>"><?php echo $rowlist['list']; ?></option>
  41. <?php
  42. }
  43. } else {
  44. echo "Brak rekordów";
  45. }
  46. ?>
  47. </select>
  48. </div>
  49. </div>
  50. </div>
  51.  
  52. <button type="submit" name="submit" class="btn btn-primary btn-flat m-b-30 m-t-30">Dodaj</button>
  53. </form>



  1. <?php
  2. $conn = mysqli_connect("localhost:3308","root","","demo");
  3.  
  4. if(isset($_POST['submit']))
  5. {
  6. $id_client = $_POST['id_client'];
  7. $product = $_POST['product'];
  8. foreach($product as $rowlist)
  9. {
  10. $query = "INSERT INTO client_product (id_client, id_product) VALUES ('$id_client','$rowlist')";
  11. $query_run = mysqli_query($conn, $query);
  12. }
  13. if ($query_run) {
  14. $_SESSION['status'] = 'rekord dodano';
  15. header("Location: display.php");
  16. } else {
  17. $_SESSION['status'] = 'rekordu nie dodano';
  18. header("Location: index.php");
  19. }
  20.  
  21. }
  22. ?>




A to jest plik display.php

  1. <div class="container-fluid">
  2.  
  3. <div class="card">
  4. <div class="card-body">
  5. <div class="table-responsive m-t-40">
  6. <table class="table table-bordered table-striped">
  7. <tr>
  8. <th>Imie</th>
  9. <th>Nazwisko</th>
  10. <th>Produkt</th>
  11. </tr>
  12. </thead>
  13. <?php
  14. $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 ";
  15. $result = $conn->query($sql);
  16. while ($row = mysqli_fetch_assoc($result)) {
  17.  
  18. ?>
  19. <tr>
  20. <td><?php echo $row['firstname']; ?></td>
  21. <td><?php echo $row['lastname']; ?></td>
  22. <td><?php echo $row['list']; ?></td>
  23. </tr>
  24. <?php } ?>
  25. </tbody>
  26. </table>
  27. </div>
  28. </div>
  29. </div>


Finalnie taki efekt chcialbym uzyskac

(IMG:https://snipboard.io/8MR5Sh.jpg)
Go to the top of the page
+Quote Post
nospor
post
Post #50





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no to ci pisalem: pokaz kod jak kombinujesz z moim artem
Go to the top of the page
+Quote Post
sapit
post
Post #51





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


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
(IMG:https://snipboard.io/2irsEW.jpg)

Ten post edytował sapit 5.10.2021, 11:53:35
Go to the top of the page
+Quote Post
nospor
post
Post #52





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No iteraz zobacz co zaweira tablica $client

print_r($client);
Go to the top of the page
+Quote Post
gino
post
Post #53





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #54





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
sapit
post
Post #55





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #56





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Kurcze, czytaj prosze wszystko.... miales pokazac tez co zawieratablic $client po zbudowaniu. Ja nie mam czasu na to ze ty polowe moich postow przegapiasz
Go to the top of the page
+Quote Post
sapit
post
Post #57





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


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
(IMG:https://snipboard.io/rRzYZ1.jpg)
Go to the top of the page
+Quote Post
gornik
post
Post #58





Grupa: Zarejestrowani
Postów: 56
Pomógł: 9
Dołączył: 28.04.2010

Ostrzeżenie: (0%)
-----


Chodziło o to żeby wyprinotwać dokładnie co Ci zwróciła baza (IMG:style_emoticons/default/goatee.gif)

  1. echo "<PRE>";
  2. print_r($client);
  3. echo "</PRE>";
Go to the top of the page
+Quote Post
nospor
post
Post #59





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
sapit
post
Post #60





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(gornik @ 5.10.2021, 14:22:54 ) *
Chodziło o to żeby wyprinotwać dokładnie co Ci zwróciła baza (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
com
post
Post #61





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/wink.gif) a teraz patrz wpis nospor (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
sapit
post
Post #62





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/wink.gif) a teraz patrz wpis nospor (IMG:style_emoticons/default/smile.gif)


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

(IMG:https://snipboard.io/Eperq4.jpg)

  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>
Go to the top of the page
+Quote Post
nospor
post
Post #63





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Print_r robi sie po petli a nie w petli (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/facepalmxd.gif)
Skup sie troche na tym co robisz bo to zadna frajda ci pomagac w takim stanie
Go to the top of the page
+Quote Post
sapit
post
Post #64





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 5.10.2021, 15:54:27 ) *
Print_r robi sie po petli a nie w petli (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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

(IMG:https://snipboard.io/e5MXpF.jpg)

Go to the top of the page
+Quote Post
nospor
post
Post #65





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pokaz kod po zmianach, bo jakos nie ufam zmianom co zrobiles
Go to the top of the page
+Quote Post
sapit
post
Post #66





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


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 } ?>
Go to the top of the page
+Quote Post
nospor
post
Post #67





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
sapit
post
Post #68





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 19.07.2017

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif) I działa już wszystko tak jak chciałem (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)


(IMG:https://snipboard.io/xs9PFm.jpg)
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 14:17