Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z danymi ... PDO , MySQL
Forum PHP.pl > Forum > PHP
jeremiash
Mam tabelę w bazie z której pobieram pola 'nazwa_pl' oraz współrzędne 'x' , 'y' - zapisane tymczasowo jako tekst, ale zawierające dane float , przykład liczt: -1.54 , 23.45 ...

Tworzę funkcję, pobieram te dane zapisując do tablicy ( z myślą przekazania jej potem do funkcji korzystającej z biblioteki GD ). Problem w tym, że do tablicy nieprawidłowo zapisuje mi liczby , współrzędne . Jeden znak... ogólnie coś przekazuje ale nie cały ciąg i w ogóle bzdury. Szukam powodu takiego stanu rzeczy. Bardzo gorąco proszę o pomoc...

  1. public function map1($db) {
  2.  
  3. try
  4. {
  5.  
  6. $this->db=$db;
  7.  
  8. $stmt = $this->db->prepare('SELECT *
  9. FROM miasto
  10. ');
  11. $wynik=array();
  12. $ilosc = $stmt -> execute();
  13. $numer=0;
  14. foreach($stmt as $row)
  15. {
  16. $numer++;
  17.  
  18. $wynik[$numer] = array(
  19. 'nazwa_pl' =>$row['nazwa_pl'],
  20. 'wsp' => array (
  21. 'x' => $row['x'],
  22. 'y' => $row['y'])
  23. );
  24. }
  25.  
  26. foreach($wynik as &$kategoria)
  27. {
  28. echo '<h3>'.$kategoria['nazwa_pl'].'</h3>';
  29. foreach($kategoria['wsp'] as &$punkciki)
  30. {
  31. echo '<br />'.$punkciki['x'].'<br />';
  32. echo $punkciki['y'];
  33. }
  34. }
  35. $stmt -> closeCursor();
  36. $numer=null;
  37. return $wynik;
  38.  
  39. }
  40. catch(PDOException $e)
  41. {
  42. echo 'blad db : ' . $e->getMessage();
  43. }
  44.  
  45.  
  46. }
k_@_m_i_l
  1. foreach($kategoria['wsp'] as &$punkciki)

zmień na:
  1. foreach($kategoria['wsp'] as $punkciki)
jeremiash
Cytat(k_@_m_i_l @ 17.12.2012, 18:17:53 ) *
  1. foreach($kategoria['wsp'] as &$punkciki)

zmień na:
  1. foreach($kategoria['wsp'] as $punkciki)


bez zmian
k_@_m_i_l
  1. foreach($wynik as &$kategoria)

usuń &.

Przed
  1. $numer++

zrób sobie:
  1. echo '<pre>'; print_r($row); echo '</pre>';
jeremiash
Zrozumiałem kolego, ale to nie daje rezultatu... bez zmian

wynik : Walencja

-
-
3
3


a w bazie jest w postaci : Walencja , -0.37 , 39.47
k_@_m_i_l
Zamiast:
  1. foreach($stmt as $row)

  1. $result = $stmt->fetchAll();
  2. foreach($result as $row)

jeremiash
bez zmian....
_____________________

  1. foreach($wynik as $kategoria)
  2. {
  3. echo '<h3>'.$kategoria['nazwa_pl'].'</h3>';
  4. foreach($kategoria['wsp'] as $punkciki)
  5. {
  6. echo '<br />'.$punkciki['x'].'<br />';
  7. echo $punkciki['y'];
  8. }
  9. }


wynik typu: : Walencja

-
-
3
3
______________________________________
z kolei to pokazuje że jest git.
  1. /*
  2. foreach($wynik as $kategoria)
  3.   {
  4.   echo '<pre>'; print_r($row); echo '</pre>';
  5.   }
  6. */

Array
(
[id_mia] => 27
[0] => 27
[id_pan] => 15
[1] => 15
[nazwa_en] =>
[2] =>
[nazwa_de] =>
[3] =>
[nazwa_fr] =>
[4] =>
[nazwa_esp] =>
[5] =>
[nazwa_pl] => Plymouth
[6] => Plymouth
[opinia_pl] =>
[7] =>
[opinia_en] =>
[8] =>
[status] => 1
[9] => 1
[y] => 53.35
[10] => 53.35
[x] => -4.15
[11] => -4.15
[data1] =>
[12] =>
[data2] =>
[13] =>
[data3] =>
[14] =>
)
___________________________
efekt na chwilę obecną : nie wyświetla konkretnej zmiennej ....
k_@_m_i_l
  1. foreach($wynik as $kategoria)
  2. {
  3. echo '<h3>'.$kategoria['nazwa_pl'].'</h3>';
  4. echo 'X: '.$kategoria['x'].' <br />Y: '.$kategoria['y']; // i to powinno wyświetlić prawidłowo.
  5. /** A jak chcesz w pętli wyświetlić współrzędne to tak zrób: **/
  6. foreach($kategoria['wsp'] as $coord => $punkcik)
  7. {
  8. echo $coord.' - '.$punkcik;
  9. }
  10. }
jeremiash
  1. echo 'X: '.$kategoria['x'].' <br />Y: '.$kategoria['y'];


Nie no, to kolego nie zadziała.
____________________________________
Z kolei foreach tak. Świetnie.
  1. foreach($kategoria['wsp'] as $coord => $punkcik)
  2. {
  3. echo $coord.$punkcik;
  4. }



Dziękuję Ci bardzo za pomoc i poświęcony czas . Miłego wieczoru. Pozdrawiam
k_@_m_i_l
Tfu, miało być:
  1. echo 'X: '.$kategoria['wsp']['x'].' <br />Y: '.$kategoria['wsp']['y']; // i to powinno wyświetlić prawidłowo.


A Twój kod nie działał dlatego, ponieważ miałeś taką strukturę tablicy:
  1. $wynik = array(
  2. 'nazwa_pl' => '',
  3. 'wsp' => array(
  4. 'x' => '',
  5. 'y' => ''
  6. )
  7. );

A Ty odwoływałeś się wtedy:
  1. foreach($kategoria['wsp'] as &$punkciki)
  2. {
  3. echo '<br />'.$punkciki['x'].'<br />';
  4. echo $punkciki['y'];
  5. }

Odwoływałeś się tak naprawdę wtedy do: $wynik['wsp']['x']['x']. Czyli do elementu nie istniejącego, stąd te błędy.
jeremiash
Cytat(k_@_m_i_l @ 17.12.2012, 18:53:45 ) *
Tfu, miało być:
  1. echo 'X: '.$kategoria['wsp']['x'].' <br />Y: '.$kategoria['wsp']['y']; // i to powinno wyświetlić prawidłowo.


A Twój kod nie działał dlatego, ponieważ miałeś taką strukturę tablicy:
  1. $wynik = array(
  2. 'nazwa_pl' => '',
  3. 'wsp' => array(
  4. 'x' => '',
  5. 'y' => ''
  6. )
  7. );

A Ty odwoływałeś się wtedy:
  1. foreach($kategoria['wsp'] as &$punkciki)
  2. {
  3. echo '<br />'.$punkciki['x'].'<br />';
  4. echo $punkciki['y'];
  5. }

Odwoływałeś się tak naprawdę wtedy do: $wynik['wsp']['x']['x']. Czyli do elementu nie istniejącego, stąd te błędy.


Dokładnie. Już to przeanalizowałem wcześniej porównując działający z felernym. Tak czy siak Dziękuję Ci jeszcze raz. Bardzo mi pomogłeś smile.gif Pozdrawiam Cię
k_@_m_i_l
Nie ma za co, od tego to forum jest, żeby pomagać : D
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.