Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] usuwanie elementu tablicy
KFMon
post 21.11.2017, 11:19:15
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.11.2013

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


Witam, mam html listę docelowo zrobioną w pętlach php foreach (w relacji jeden do wielu):

1 RAZ
a raz_a x
b dwa_b x

2 DWA
a dwa_a x
b dwa_b x
c dwa_c x

3 TRZY
a trzy_a x
b trzy_b x

kiedy usunę "a raz" i "b raz" wówczas pozostały "1 RAZ" przenosi się na koniec listy lub na środek listy (w zależności od ilości podpunktów w pozostałych punktach) wygląda to wtedy następująco:

2 DWA
a dwa_a x
b dwa_b x
c dwa_c x

3 TRZY
a trzy_a x
b trzy_b x

1 RAZ

jaki jest powód takiego przemieszczania się elementu? co zrobić lub czego nie robić żeby element "1 RAZ" po usunięciu podpunktów pozostał na pierwotnym miejscu? czyli:

1 RAZ
2 DWA
a dwa_a x
b dwa_b x
c dwa_c x

3 TRZY
a trzy_a x
b trzy_b x


i po usunięciu kolejnych podpunktów z "2 DWA" ten również nie przemieszczał się i pozostał:
1 RAZ
2 DWA
3 TRZY
a trzy_a x
b trzy_b x


Będę wdzięczna za podpowiedź.
Go to the top of the page
+Quote Post
nospor
post 21.11.2017, 11:21:02
Post #2





Grupa: Moderatorzy
Postów: 36 456
Pomógł: 6296
Dołączył: 27.12.2004




Moze pokaz jak wyglada kod html przed usunieciem oraz po usunieciu. Ewidentnie tam masz cos schrzanione ale ze my nie wrozki to i twojego kodu sami sobie nie zobaczymy w kuli


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
KFMon
post 21.11.2017, 12:36:53
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.11.2013

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


Jasne, lepiej nie marnować energii na coś nieprzydatnego.

Załączam mój kod i ponawiam prośbę o podpowiedź.

  1. $array = array();
  2. while($row=$stmt->FETCH(PDO::FETCH_ASSOC))
  3. {
  4. $pid = $row['pid'];
  5. $punkt = $row['punkt'];
  6. $podpunkt = $row['podpunkt'];
  7. $podid = $row['podid'];
  8.  
  9. if(!isset($array[$pid]))
  10. {
  11. $array[$pid] = array("punkt" =>$punkt, "podpunkty" => array());
  12. }
  13. $array[$pid]['podpunkty'][] = array("podpunkt" =>$podpunkt, "podid"=>$podid);
  14. }
  15.  
  16. echo '<ol>';
  17. foreach($array as $lista)
  18. {
  19. echo '<li> Punkt: <b>'.$lista['punkt'].'</b>';
  20. echo '<ol>';
  21. foreach ($lista['podpunkty'] as $sublista)
  22. {
  23. if(isset($sublista['podpunkt']))
  24. {
  25. echo '<li> Podpunkt: <b>'.$sublista['podpunkt'].'</b>
  26. <a href="deletepod.php?xid='.$sublista['podid'].'">Delete1</a>
  27. </li>';
  28. }
  29. }
  30. echo '</ol></li>';
  31. }
  32. echo '</ol>';


Z góry dziękuję.
Go to the top of the page
+Quote Post
nospor
post 21.11.2017, 12:40:36
Post #4





Grupa: Moderatorzy
Postów: 36 456
Pomógł: 6296
Dołączył: 27.12.2004




Prosilem o wygenerowany kod HTML przed i po


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
KFMon
post 21.11.2017, 13:04:33
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.11.2013

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


sorry:) już przesylam
przed usunięciem:
  1. <!DOCTYPE HTML>
  2. <title>test</title>
  3. </head>
  4.  
  5.  
  6. <ol>
  7. <li>raz <ol>
  8. <li>raz_a<a href="deletepod.php?xid=170">Delete</a></li><li>raz_b<a href="deletepod.php?xid=171">Delete</a></li></ol></li><li>dwa <ol>
  9. <li>dwa_a<a href="deletepod.php?xid=172">Delete</a></li><li>dwa_b<a href="deletepod.php?xid=173">Delete</a></li></ol></li><li>trzy <ol>
  10. </ol></li><li>cztery <ol>
  11. </ol></li>
  12. </ol>
  13. </body>
  14. </html>


po usunięciu:
  1. <!DOCTYPE HTML>
  2. <title>test</title>
  3. </head>
  4.  
  5.  
  6. <ol>
  7. <li>dwa <ol>
  8. <li>dwa_a<a href="deletepod.php?xid=172">Delete</a></li><li>dwa_b<a href="deletepod.php?xid=173">Delete</a></li></ol></li><li>raz <ol>
  9. </ol></li><li>trzy <ol>
  10. </ol></li><li>cztery <ol>
  11. </ol></li>
  12. </ol>
  13. </body>
  14. </html>
Go to the top of the page
+Quote Post
nospor
post 21.11.2017, 13:06:37
Post #6





Grupa: Moderatorzy
Postów: 36 456
Pomógł: 6296
Dołączył: 27.12.2004




Teraz wyraznie widac, ze wygenerowany kod HTML jest inny i ze RAZ jest gdzie indziej po usunieciu. Skoro jest gdzie indziej, to co sie dziwic ze sie wyswietla gdzie indziej? smile.gif Pewnie masz jakies sortowanie w zapytaniu, ktore pobiera dane z bazy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 21.11.2017, 13:07:44
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


zapytanie sql pokaż
Go to the top of the page
+Quote Post
KFMon
post 21.11.2017, 13:36:37
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.11.2013

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


było sortowanie w tabeli więc zrobiłam to samo na tabeli bez sortowania i wyszło to samo.

a zapytanie jest takie:

$stmt=$dbcon->prepare('SELECT p.punkt, p.pid, tp.podid, tp.podpunkt from tpunkt p left join tpodpunkt tp on tp.pid = p.pid');
$stmt->execute();
Go to the top of the page
+Quote Post
Pyton_000
post 21.11.2017, 13:47:17
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


pobierz wszyztko

`$data = $stmt->fetchAll()`
i na tym zrób foreach() zamiast while()
Potem pokaż wynik tych przypisań i tablicy źródłowej
Go to the top of the page
+Quote Post
KFMon
post 21.11.2017, 13:57:12
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.11.2013

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


zamieniłam

$array = array();
$data = $stmt->fetchAll();
foreach($data as $row) {...}

i wyszło tak samo przed:
  1. <!DOCTYPE HTML>
  2. <title>test</title>
  3. </head>
  4.  
  5.  
  6. <ol>
  7. <li>raz <ol>
  8. <li>a_raz<a href="delete.php?xid=5">Delete</a></li><li>b_dwa<a href="delete.php?xid=6">Delete</a></li></ol></li><li>dwa <ol>
  9. <li>a_dwa<a href="delete.php?xid=7">Delete</a></li><li>b_dwa<a href="delete.php?xid=8">Delete</a></li></ol></li><li>trzy <ol>
  10. </ol></li><li>cztery <ol>
  11. </ol></li>
  12. </ol>
  13. </body>
  14. </html>


i po usunięciu:
  1.  
  2. <!DOCTYPE HTML>
  3. <title>test</title>
  4. </head>
  5.  
  6.  
  7. <ol>
  8. <li>dwa <ol>
  9. <li>a_dwa<a href="delete.php?xid=7">Delete</a></li><li>b_dwa<a href="delete.php?xid=8">Delete</a></li></ol></li><li>raz <ol>
  10. </ol></li><li>trzy <ol>
  11. </ol></li><li>cztery <ol>
  12. </ol></li>
  13. </ol>
  14. </body>
  15. </html>


Go to the top of the page
+Quote Post
nospor
post 21.11.2017, 14:00:44
Post #11





Grupa: Moderatorzy
Postów: 36 456
Pomógł: 6296
Dołączył: 27.12.2004




No dobrze, ale teraz nie masz w ogoole zadnego sortowania wiec baza ci zwraca dane na dobra sprawe jak chce. Musisz miec sortowanie, ktore bedzie okreslalo, ze RAZ ma byc pierwsze a cos innego drugie itd


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
KFMon
post 21.11.2017, 14:24:41
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 26.11.2013

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


ok dzięki, sprawdzę bo rzeczywiście tabela z sortowaniem nie miala aktywnego sortowania.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 12:20