Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


Popek231
Napisane: 13.03.2016, 00:59:43





Grupa: Zarejestrowani
Postów: 71
Dołączył: 30.03.2012
Skąd: Bielsko-Biała

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

////////////////////
  1. for($id=0;$id<(count($xml));$id++){

zamień na:
  1. $ilewierszy = count($xml);
  2. for($id=0;$id<$ilewierszy;$id++){

ponieważ przy każdym przelocie, pętla sprawdza warunek od nowa i za każdym razem zlicza ile jest $xml - jeśli jest dużo, będzie muliło...


ew. możesz dodać jeszcze taki bajer na końcu:
  1. if($pokazanowynikow==0) echo "Nie znaleziono żadnych książek.";
  2. else echo "Spośród $ilewierszy książek w bazie danych znaleziono $pokazanowynikow pasujących wyników.";
  Forum: Przedszkole · Podgląd postu: #1187335 · Odpowiedzi: 3 · Wyświetleń: 299

Popek231
Napisane: 13.03.2016, 00:04:21





Grupa: Zarejestrowani
Postów: 71
Dołączył: 30.03.2012
Skąd: Bielsko-Biała

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

  1. # 10 linia z ew. błędem
  2. if ($tytul != "") wpisano ++;
  3. if ( $autor != "") wpisano =+ 2;
  4. if ( $gatunek != "") wpisano =+ 4;


a nie przypadkiem:
  1. # 10 linia z ew. błędem
  2. if ($tytul != "") wpisano ++;
  3. if ( $autor != "") wpisano += 2;
  4. if ( $gatunek != "") wpisano += 4;

?
+= zamiast =+


to samo od 26 się zaczyna
  1. if ((string) $xml->ksiazka->tytul == $tytul) $pokaz ++;
  2. if ((string) $xml->ksiazka->autor == $autor) $pokaz += 2;
  3. if ((string) $xml->ksiazka->gatunek == $gatunek) $pokaz += 4;



Operatory tego typu wyglądają w ten sposób:
  1. <?php
  2. $o0=5;
  3. $o1=5;
  4. $o2=5;
  5. $o3=5;
  6. $o4=5;
  7. $o1+=$o0;
  8. $o2-=$o0;
  9. $o3/=$o0;
  10. $o4*=$o0;
  11. echo $o1.'<br>'.$o2.'<br>'.$o3.'<br>'.$o4;
  12. ?>


ps.
Dodatkowo uwaga do tego co poprawiałem:

linia 10:
  1. if ($tytul != "") $wpisano++;
  2. if ( $autor != "") $wpisano += 2;
  3. if ( $gatunek != "") $wpisano += 4;


$wpisano zamiast wpisano (brak dolca $) smile.gif


ps2.
z tego co pamiętam, użycie kropek zamiast przecinków jest szybsze:)
i po co wstawiać spacje w osobnym ciągu?
  1. echo "TYTUŁ:", ' ', $xml->ksiazka->tytul, '<br>';

daj spacje od razu za dwukropkiem i załatwione:)
  1. echo "TYTUŁ: ".$xml->ksiazka->tytul.'<br>';
  2. echo "AUTOR: ".$xml->ksiazka->autor.'<br>';
  3. echo "GATUNEK: ".$xml->ksiazka->gatunek.'<br>';
  4. echo "OPIS: ".$xml->ksiazka->opis.'<br>';
  5. echo "WYDAWNCTWO: ".$xml->ksiazka->wydawnictwo.'<br>';
  6. echo "ROK WYDANIA: ".$xml->ksiazka->wydana.'<br><br>';



i przy $_POST możesz dodać, żeby nie wywalało błędu jak ktoś dotrze do pliku bez formularza:
  1. $tytul = (isset($_POST['tytul']))?$_POST['tytul']:'';
  2. $autor = (isset($_POST['autor']))?$_POST['autor']:'';
  3. $gatunek = (isset($_POST['gatunek']))?$_POST['gatunek']:'';


ps3.
już więcej nie piszę, bo wyjdzie, że się czepiam biggrin.gif

jak przerobię, żeby wyświetlało więcej wyników, zamiast jednego, to dam znać wink.gif









No:)
jedna chwila, pętelka i gotowe:)

Proszę:
test.php (tak nazwałem)
  1. <?php
  2. header('Content-Type: text/html; charset = UTF-8');
  3.  
  4. $tytul = (isset($_POST['tytul']))?$_POST['tytul']:'';
  5. $autor = (isset($_POST['autor']))?$_POST['autor']:'';
  6. $gatunek = (isset($_POST['gatunek']))?$_POST['gatunek']:'';
  7.  
  8. //$tytul = 'Lalka'; //znajdzie 2 wyniki
  9. //$tytul = 'Lalkaa'; //znajdzie 1 wynik
  10. //$tytul = 'Lalkaaa'; //znajdzie 0 wyników
  11. // //jak zostawione puste wszystko, to pokaże wszystkie wyniki
  12.  
  13. //Oznaczenie które pola były wpisane
  14. $wpisano=0;
  15. $pokazanowynikow=0;
  16.  
  17.  
  18. if($tytul!="") $wpisano++;
  19. if($autor!="") $wpisano+=2;
  20. if($gatunek!="") $wpisano+=4;
  21.  
  22.  
  23. $tytul = mb_convert_case($tytul, MB_CASE_TITLE, "UTF-8");
  24. $autor = mb_convert_case($autor, MB_CASE_TITLE, "UTF-8");
  25.  
  26. $folder = glob('test.xml');
  27. foreach($folder as $file){
  28. $plik = file_get_contents($file);
  29. $xml = simplexml_load_string($plik);
  30.  
  31. for($id=0;$id<(count($xml));$id++){
  32. $pokaz = 0;
  33. if((string)$xml->ksiazka[$id]->tytul == $tytul) $pokaz++;
  34. if((string)$xml->ksiazka[$id]->autor == $autor) $pokaz+=2;
  35. if((string)$xml->ksiazka[$id]->gatunek == $gatunek) $pokaz+=4;
  36. if($pokaz==$wpisano) {
  37. echo "TYTUŁ: ".$xml->ksiazka[$id]->tytul.'<br>';
  38. echo "AUTOR: ".$xml->ksiazka[$id]->autor.'<br>';
  39. echo "GATUNEK: ".$xml->ksiazka[$id]->gatunek.'<br>';
  40. echo "OPIS: ".$xml->ksiazka[$id]->opis.'<br>';
  41. echo "WYDAWNCTWO: ".$xml->ksiazka[$id]->wydawnictwo.'<br>';
  42. echo "ROK WYDANIA: ".$xml->ksiazka[$id]->wydana.'<br><br>';
  43. $pokazanowynikow++;
  44. }
  45. }
  46. }
  47. if($pokazanowynikow==0) echo "Nie znaleziono żadnych książek";
  48. ?>


test.xml (tak nazwałem) //byłem zbyt leniwy, żeby dodać prawdziwe dane tongue.gif
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <literatura>
  3. <ksiazka>
  4. <nr_id>1244</nr_id>
  5. <tytul>Lalka</tytul>
  6. <autor>Boleslaw Prus</autor>
  7. <gatunek>Powiesc</gatunek>
  8. <opis>Opis</opis>
  9. <wydawnictwo>WSIP</wydawnictwo>
  10. <wydana>1994</wydana>
  11. </ksiazka>
  12. <ksiazka>
  13. <nr_id>1234</nr_id>
  14. <tytul>Lalka</tytul>
  15. <autor>Boleslaw Pruss</autor>
  16. <gatunek>Powiessc</gatunek>
  17. <opis>Opiss</opis>
  18. <wydawnictwo>WsSIP</wydawnictwo>
  19. <wydana>12994</wydana>
  20. </ksiazka>
  21. <ksiazka>
  22. <nr_id>1234</nr_id>
  23. <tytul>Lalkaa</tytul>
  24. <autor>Boleslaw Pruss</autor>
  25. <gatunek>Powiessc</gatunek>
  26. <opis>Opiss</opis>
  27. <wydawnictwo>WsSIP</wydawnictwo>
  28. <wydana>12994</wydana>
  29. </ksiazka>
  30. </literatura>
  Forum: Przedszkole · Podgląd postu: #1187330 · Odpowiedzi: 3 · Wyświetleń: 299


New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 05:46