Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Parsowanie XML, usuwanie wpisu z bazy - problem
Forum PHP.pl > Forum > PHP
deha21
Witam, mam skrypt, który uaktualnia bazę według pliku XML. Sam skrypt częściowo działa, tzn. usuwa nieaktualne wpisy, ale nie wszystkie. Nie umiem rozgryźć czy coś ze skryptem jest nie tak...
  1. $xml=simplexml_load_file('/home/strona/domains/strona.pl/public_html/files/import/plik.xml');
  2.  
  3. function del($mysqli, $xml, $typ) {
  4.  
  5. foreach ($xml->usun->$typ as $ogloszenie) {
  6.  
  7. $ogloszenie_id=$ogloszenie->ogloszenie_id;
  8.  
  9. mysqli_query($mysqli, "DELETE FROM adds WHERE ogloszenie_id='$ogloszenie_id'");
  10. mysqli_query($mysqli, "DELETE FROM equip WHERE ogloszenie_id='$ogloszenie_id'");
  11.  
  12. if(is_dir('/home/strona/domains/strona.pl/public_html/files/ogloszenia/'.$ogloszenie_id)) {
  13.  
  14. $pics=mysqli_query($mysqli, "SELECT * FROM images WHERE ogloszenie_id='$ogloszenie_id'");
  15. while ($picsrow=mysqli_fetch_assoc($pics)) {
  16. unlink('/home/strona/domains/strona.pl/public_html/files/ogloszenia/'.$ogloszenie_id.'/'.$picsrow['file']);
  17. unlink('/home/strona/domains/strona.pl/public_html/files/ogloszenia/'.$ogloszenie_id.'/thumb_'.$picsrow['file']);
  18. }
  19.  
  20. rmdir('/home/strona/domains/strona.pl/public_html/files/ogloszenia/'.$ogloszenie_id);
  21.  
  22. mysqli_query($mysqli, "DELETE FROM images WHERE ogloszenie_id='$ogloszenie_id'");
  23.  
  24. }
  25.  
  26. $delads=mysqli_query($mysqli, "DELETE FROM ads WHERE ogloszenie_id='$ogloszenie_id'");
  27.  
  28. if ($del_ads) {
  29. echo 'Usunięto: ',$ogloszenie_id,'<br>';
  30. //mysqli_query($mysqli, "INSERT INTO log VALUES ('', '".date('Y.m.d H:i')."', 'Usunięto ".$ogloszenie_id."') ");
  31. } else {
  32. echo 'Problem z usunięciem: ',$ogloszenie_id,'<br>';
  33. //mysqli_query($mysqli, "INSERT INTO log VALUES ('', '".date('Y.m.d H:i')."', 'Problem z usunięciem ".$ogloszenie_id."') ");
  34. }
  35.  
  36. $ogloszenie_id='';
  37.  
  38. }
  39.  
  40. }

W logach mam informację, że był "Problem z usunięciem" ale nie było numeru ogloszenie_id więc tak jakby go nie czytało. Chociaż czyta go na 100%, struktura XMLa jest poprawnie czytana bo używam skryptu też do dodawania wpisów i to działa. Nie działa tylko usuwanie.
Kshyhoo
Proszę dopasować tytuł do zasad działu, problem ze skryptem to 99% wątków...
deha21
Cytat(Kshyhoo @ 13.03.2016, 09:55:27 ) *
Proszę dopasować tytuł do zasad działu, problem ze skryptem to 99% wątków...

Zmieniłem. Gdybym wiedział co jest nie tak w skrypcie to bym to dokładniej opisał, ale nie mam pojęcia...
Kshyhoo
To może napisz, jakich danych nie usuwa, tudzież zapodaj jakieś dane do kombinowania.
Pyton_000
$ogloszenie_id= (string)$ogloszenie->ogloszenie_id;
destroyerr
Zacznij od sprawdzania danych:
Cytat
$ogloszenie_id=$ogloszenie->ogloszenie_id;

w przypadku importu jest to bardzo istotne. Wydaje się, że importowany plik musi być poprawny, a nie zawsze taki jest.
Kolejna sprawa to nazwy zmiennych, zmień poziom raportowania błędów. $delads i $del_ads to są różne zmienne.
deha21
Cytat(Kshyhoo @ 13.03.2016, 10:41:47 ) *
To może napisz, jakich danych nie usuwa, tudzież zapodaj jakieś dane do kombinowania.

Nie mam akurat żywego pliku, ale XML wygląda mniej więcej tak:
Kod
<usun>
    <sprzedam>
        <ogloszenie>123456</ogloszenie>
        <ogloszenie>987654</ogloszenie>
    </sprzedam>
</usun>

Nie usuwa żadnych danych, tak jakby czasem $ogloszenie_id (czyli <ogloszenie>) był po prostu pusty, a nie jest pusty.
Cytat(Pyton_000 @ 13.03.2016, 11:17:01 ) *
$ogloszenie_id= (string)$ogloszenie->ogloszenie_id;

Nie wiem czy pomoże, ale zmieniłem. Czekam teraz na plik eksportu XML-a i będę testować.
Cytat(destroyerr @ 13.03.2016, 11:18:54 ) *
w przypadku importu jest to bardzo istotne. Wydaje się, że importowany plik musi być poprawny, a nie zawsze taki jest.
Kolejna sprawa to nazwy zmiennych, zmień poziom raportowania błędów. $delads i $del_ads to są różne zmienne.

Plik XML na pewno jest poprawny. $delads i $del_ads - tutaj przy wklejaniu kodu na forum musiałem coś pozmieniać bo w kodzie jest $delads.
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.