Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][XML] Nie dzialajacy if
Forum PHP.pl > Forum > Przedszkole
szaman0
Witam

Napisałem skrypt którego zadaniem jest znalezienie i dopasowanie wartości z trzech plików xml i wstawienie ich do bazy, ale przy próbie dopasowania, "if" nie znajduje mi wartości równych i nic nie wpisuje do bazy, nie wiem za zbyt czemu. Bym był wdzięczny za znalezienie mi w tym kodzie błędu.

  1. <?
  2. $plik = file_get_contents("samochody.xml");
  3. $xml = new SimpleXMLElement($plik);
  4.  
  5. $plik1 = file_get_contents("marki.xml");
  6. $xml1 = new SimpleXMLElement($plik1);
  7.  
  8. $plik2 = file_get_contents("modele.xml");
  9. $xml2 = new SimpleXMLElement($plik2);
  10.  
  11.  
  12. $connection = mysql_connect("localhost", "root", "") or die("Nie mozna polaczyc z baza!");
  13. mysql_select_db("samochody") or die("Nie mozna wybrac bazy!");
  14. foreach($xml as $samochod) {
  15. echo "</br> samochod ";
  16. echo $samochod->marka."</br>";
  17.  
  18. foreach($xml1 as $marka) {
  19. echo "marka";
  20. echo $marka->id;
  21.  
  22. if($samochod->marka==$marka->id){$wartosc_m=$marka->nazwa; echo $wartosc_m;} //if nie znajduje mi wartosci rownych
  23.  
  24. foreach ($xml2 as $model) {
  25. echo "model";
  26. echo $model->id;
  27.  
  28. if($samochod->model==$model->id){$wartosc_mo=$model->nazwa; echo $wartosc_mo;} //if nie znajduje mi wartosci rownych
  29.  
  30. $sql = "INSERT INTO samochody2(id, marka, model, rok, pojemnosc, typ_silnika, liczba_poduszek, abs, esp)
  31. VALUES ('".$samochod->id."', '".$wartosc_m."','".$wartosc_mo."', '".$samochod->rok."', '".$samochod->pojemnosc."',  '".$samochod->typ_silnika."', '".$samochod->liczba_poduszek."', '".$samochod->abs."', '".$samochod->esp."')";
  32. mysql_query($sql);
  33. }
  34. }
  35. }
  36. ?>


  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <samochody>
  3.      <samochod>
  4.            <id>11</id>
  5.            <marka>1</marka>
  6.            <model>1</model>
  7.            <rok>1995</rok>
  8.            <pojemnosc>1.2</pojemnosc>
  9.            <typ_silnika>benzyna</typ_silnika>
  10.            <liczba_poduszek>0</liczba_poduszek>
  11.            <abs>nie</abs>
  12.            <esp>nie</esp>
  13.      </samochod>
  14.      <samochod>
  15.            <id>12</id>
  16.            <marka>2</marka>
  17.            <model>2</model>
  18.            <rok>2002</rok>
  19.            <pojemnosc>1.9</pojemnosc>
  20.            <typ_silnika>diesel</typ_silnika>
  21.            <liczba_poduszek>4</liczba_poduszek>
  22.            <abs>tak</abs>
  23.            <esp>tak</esp>
  24.      </samochod>
  25.      <samochod>
  26.            <id>13</id>
  27.            <marka>3</marka>
  28.            <model>3</model>
  29.            <rok>1997</rok>
  30.            <pojemnosc>2</pojemnosc>
  31.            <typ_silnika>diesel</typ_silnika>
  32.            <liczba_poduszek>1</liczba_poduszek>
  33.            <abs>tak</abs>
  34.            <esp>nie</esp>
  35.      </samochod>
  36.      <samochod>
  37.            <id>14</id>
  38.            <marka>4</marka>
  39.            <model>4</model>
  40.            <rok>2000</rok>
  41.            <pojemnosc>1.4</pojemnosc>
  42.            <typ_silnika>benzyna</typ_silnika>
  43.            <liczba_poduszek>2</liczba_poduszek>
  44.            <abs>tak</abs>
  45.            <esp>nie</esp>
  46.      </samochod>
  47. </samochody>


  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <marki>
  3.    <marka>
  4.        <id>1</id>
  5.        <nazwa>Fiat</nazwa>
  6.    </marka>
  7.    <marka>
  8.        <id>2</id>
  9.        <nazwa>Volkswagen</nazwa>
  10.    </marka>
  11.    <marka>
  12.        <id>3</id>
  13.        <nazwa>Mazda</nazwa>
  14.    </marka>
  15.    <marka>
  16.        <id>4</id>
  17.        <nazwa>Skoda</nazwa>
  18.    </marka>
  19. </marki>


  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <modele>
  3.    <model>
  4.        <id>1</id>
  5.        <nazwa>Punto</nazwa>
  6.    </model>
  7.    <model>
  8.        <id>2</id>
  9.        <nazwa>Passat</nazwa>
  10.    </model>
  11.    <model>
  12.        <id>3</id>
  13.        <nazwa>626</nazwa>
  14.    </model>
  15.    <model>
  16.        <id>4</id>
  17.        <nazwa>Fabia</nazwa>
  18.    </model>
  19. </modele>


Z góry dziękuje za pomoc
nevt
nie tam masz problem, gdzie go szukasz...
twój kod wygląda w duzym uproszczeniu tak
  1. <?php
  2. while( ... )
  3. {
  4. while( ... )
  5. {
  6. if( ... ) $x1 = ...;
  7. while( ... )
  8. {  
  9. f( ... ) $x2 = ...;
  10. mysql_query('INSERT ... VALUES( ... $x1, ... $x2, ...) ');
  11. }
  12. }
  13. }
  14. ?>


a powinien wyglądać mniej więcej tak:

  1. <?php
  2. while( ... )
  3. {
  4.  while( ... )
  5.  {
  6. if( ... ) $x1 = ...;
  7. while( ... )
  8. {
  9. if( ... ) $x2 = ...;
  10. }
  11. }
  12. mysql_query('INSERT ... VALUES( ... $x1, ... $x2, ...) ');
  13. }
  14. ?>


rozumiesz różnicę ?
szaman0
Rozumiem, to powinno być tak jak napisałeś ale mimo wszytko i tak to nie rozwiązuje mojego problemu. Umieściłem w kodzie tyle wywołań funkcji echo, bo zacząłem go analizować po kolei i wiem ze if-y nie działają bo nie wyświetlają mi wartosci.

  1. <?
  2. $plik = file_get_contents("samochody.xml");
  3. $xml = new SimpleXMLElement($plik);
  4.  
  5. $plik1 = file_get_contents("marki.xml");
  6. $xml1 = new SimpleXMLElement($plik1);
  7.  
  8. $plik2 = file_get_contents("modele.xml");
  9. $xml2 = new SimpleXMLElement($plik2);
  10.  
  11.  
  12. $connection = mysql_connect("localhost", "root", "") or die("Nie mozna polaczyc z baza!");
  13. mysql_select_db("samochody") or die("Nie mozna wybrac bazy!");
  14. foreach($xml as $samochod) {
  15. echo "</br> samochod ";
  16. echo $samochod->marka."</br>";
  17.  
  18. foreach($xml1 as $marka) {
  19. echo "marka";
  20. echo $marka->id;
  21.  
  22. if($samochod->marka==$marka->id){$wartosc_m=$marka->nazwa; echo $wartosc_m;} //if nie znajduje mi wartosci rownych
  23.  
  24. foreach ($xml2 as $model) {
  25. echo "model";
  26. echo $model->id;
  27.  
  28. if($samochod->model==$model->id){$wartosc_mo=$model->nazwa; echo $wartosc_mo;} //if nie znajduje mi wartosci rownych
  29.  
  30.  
  31. }
  32. }
  33. $sql = "INSERT INTO samochody2(id, marka, model, rok, pojemnosc, typ_silnika, liczba_poduszek, abs, esp)
  34. VALUES ('".$samochod->id."', '".$wartosc_m."','".$wartosc_mo."', '".$samochod->rok."', '".$samochod->pojemnosc."',  '".$samochod->typ_silnika."', '".$samochod->liczba_poduszek."', '".$samochod->abs."', '".$samochod->esp."')";
  35. mysql_query($sql);
  36. }
  37. ?>
erix
Może po prostu wyświetl obie porównywane wartości przez var_dump" title="Zobacz w manualu PHP" target="_manual i sprawdź, czy porównujesz odpowiednie wartości?
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.