problem był z pozycjami value="xxx", to co znajduje się w xxx było pobierane z bazy danych mysql i trzeba potraktować te dane funkcją trim.
Napotkałem na drugi problem niby powinny być wszystko ok, jednak tak nie jest:
try {
$pdo = new PDO('mysql:host='.$this->_config->db_host.';dbname='.$this->_config->db_name, $this->_config->db_username, $this->_config->db_password);
$stmt = $pdo->prepare("SELECT * FROM `cities`");
$stmt->execute();
foreach($stmt->fetchAll() as $row) {
$cities[$row['id']] = $row['name'];
}
$stmt->closeCursor();
$stmt = $pdo->prepare("SELECT * FROM `lines`");
$stmt->execute();
foreach($stmt->fetchAll() as $row) {
$lines[$row['id']] = $row['name'];
}
$stmt->closeCursor();
//
$i=0;
$stmt = $pdo->prepare("SELECT * FROM `stops`");
$stmt->execute();
foreach($stmt->fetchAll() as $row) {
$stops[$row['id']] = $row['name'];
$stops2[$i++] = array( 'id' => $row['id'], 'name' => $row['name'], 'city' => $cities[$row['city_id']]);
}
$stmt->closeCursor();
$i=0;
$stmt = $pdo->prepare("SELECT * FROM `directions`");
$stmt->execute();
foreach($stmt->fetchAll() as $row) {
//pole stops_id wyglada mniej wiecej tak: 1.2.3.4.5
$stops_id = explode('.', $row['stops_id']);
$stop = array();
foreach($stops_id as $val) {
$stop[$val] = array($lines[$row['line_id']] => '1');
}
}
$stmt->closeCursor();
} catch(PDOException $e) {
echo $e->getMessage();
}
i teraz jak daje
59: foreach($stops2 as $value) {
...
61: $s = $stop[$value['id']];
...
63: foreach($s as $val) {
64: }
65: }
i na stronie pojawia się komunikat:
Warning: Invalid argument supplied for foreach() in ....php on line 63
i zupełnie nie wiem czemu to zwraca błąd. Jeśli chcę wypisać dane w pętli foreach na ekran, to dane są wypisywane, ale błąd jest zwracany. Mogę nie pokazywać tego błędu poprzez error_reporting(0), ale to nie o to chodzi.
EDIT
zauważyłem, że jeśli zamiast
$s = $stop[$value['id']];
...
63: foreach($s as $val) {
64: }
napiszę
63: foreach($stop[4] as $val) {
64: }
to błąd już się nie pojawia, nie pojawia się jeśli w indeksie wpisze liczbę a nie zmienne. Nawet jak zmienne zrzutuje na inta to i tak błąd się pojawia.