Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] usuwanie elementu tablicy
Forum PHP.pl > Forum > Przedszkole
KFMon
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ź.
nospor
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
KFMon
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ę.
nospor
Prosilem o wygenerowany kod HTML przed i po
KFMon
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>
nospor
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
Pyton_000
zapytanie sql pokaż
KFMon
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();
Pyton_000
pobierz wszyztko

`$data = $stmt->fetchAll()`
i na tym zrób foreach() zamiast while()
Potem pokaż wynik tych przypisań i tablicy źródłowej
KFMon
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>


nospor
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
KFMon
ok dzięki, sprawdzę bo rzeczywiście tabela z sortowaniem nie miala aktywnego sortowania.
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.