Guten Morgen Leutz.
Also erst mal mein Ziel.
Ich habe vor eine automatische City Search und Autofill Funktionalität mit Ajax umzusetzen. DAs heist ein Benutzer fängt an eine PLZ in das Feld einzutippen und es klappt sich ein Feld auf mit zugehörigen Funden aus der DB, je mehr er eintippt desto genauer und präziser werden die Ausgaben in dem Feld.
So weit so gut. Nun habe ich zum testen einige Daten in die 2 Tabellen geschrieben. Die wie folgt aufgebaut sind.
Und so sieht nun der PHP Teil der Abfrage aus. Da ich momentan einfach nur die Abfrage testen will ist alles in der einen Datei, wenn das erfolgreich ist wird natürlich alles entsprechend aufgeteilt.
So wenn ich diese Abfrage nun als SQL Code auf die Tabelle zip_codes im PhpMyAdmin mache, wird exakt ausgegeben was ich erwarte. Mache ich das nun im hier zu sehenden Code wird bei 01 nur 2 Datensätze in das Array geschrieben, obwohl es mehr sein müssten.
Hier die Abfrage und das Abfrageergebnis im PhpMyAdmin.

Und hier die Ausgabe wenn ich mir mein Array ausgeben lassen will.
Es gibt in der Tabelle zip_codes noch einen Datensatz mehr wo die PLZ mit 1 beginnt und zu der passenden PLZ gibt es in der Tabelle citys_by_zip noch 2 Datensätze die logischerweise hier nichts in den Ausgaben zu suchen haben. Also das haut ja hin, nur was die Ausgabe in PHP veranstaltet verstehe ich nicht ganz, da es in PhpMyAdmin ja passt.
Habt ihr ein Idee was da schief läuft?
Vielen Dank für eure Zeit und Hilfe.
Gruß Litter
Also erst mal mein Ziel.
Ich habe vor eine automatische City Search und Autofill Funktionalität mit Ajax umzusetzen. DAs heist ein Benutzer fängt an eine PLZ in das Feld einzutippen und es klappt sich ein Feld auf mit zugehörigen Funden aus der DB, je mehr er eintippt desto genauer und präziser werden die Ausgaben in dem Feld.
So weit so gut. Nun habe ich zum testen einige Daten in die 2 Tabellen geschrieben. Die wie folgt aufgebaut sind.
Code:
//tabelle zip_codes id_zip, zip_code //tabelle citys_by_zip id_city, id_zip, city
PHP-Code:
<?php
error_reporting( E_ALL | E_STRICT);
ini_set( "display_errors", TRUE);
/*
*
* PDO Instanz
*
*/
$pdo = new PDO( "mysql:host=localhost;dbname=city_search", "root" );
$pdo->exec( "SET CHARACTER SET utf8" );
class LIT_ReadCityData_Class {
protected $pdo;
protected $num_ZipCode;
protected $arr_CityByZipCoedes = array();
/**
*
* Konstruktor
* @param $num_ZipCode:numeric vonAjax übergebene Postleitzahl
*
*/
public function __construct ( $num_ZipCode, PDO $pdo ) {
$this->pdo = $pdo;
$this->num_ZipCode = $num_ZipCode;
}
/**
*
*
*
*/
protected function loadCitysByZipCodes () {
$sql_ReadCitys = "
SELECT
zc.zip_code,
cbz.id_city,
cbz.id_zip,
cbz.city
FROM
zip_codes zc
RIGHT JOIN
citys_by_zip cbz
ON
( zc.id_zip = cbz.id_zip )
WHERE
zc.zip_code LIKE '".$this->num_ZipCode."%'
";
//$sel_PrepareRC = $this->pdo->prepare( $sql_ReadCitys );
//$sel_PrepareRC->bindParam( ":zip", $this->num_ZipCode );
//$sel_PrepareRC->execute();
$sel_PrepareRC = $this->pdo->query( $sql_ReadCitys );
while ( $res_Citys = $sel_PrepareRC->fetch( PDO::FETCH_ASSOC ) ) {
$this->arr_CityByZipCoedes[$res_Citys['zip_code']] = $res_Citys['city'];
}
return $this->arr_CityByZipCoedes;
}
public function test () {
/*if ( !is_array( $this->loadCitysByZipCodes() ) ) {
return "kein array";
} else {
return "city array";
}*/
return $this->loadCitysByZipCodes();
}
}
//nur für testausgaben
$test = new LIT_ReadCityData_Class( "01", $pdo );
echo "<pre>";
print_r( $test->test() );
echo "</pre>";
?>
Hier die Abfrage und das Abfrageergebnis im PhpMyAdmin.
SELECT zc.zip_code, cbz.id_city, cbz.id_zip, cbz.city
FROM zip_codes zc
RIGHT JOIN citys_by_zip cbz ON (zc.id_zip = cbz.id_zip
)
WHERE zc.zip_code LIKE '01%'
FROM zip_codes zc
RIGHT JOIN citys_by_zip cbz ON (zc.id_zip = cbz.id_zip
)
WHERE zc.zip_code LIKE '01%'
Und hier die Ausgabe wenn ich mir mein Array ausgeben lassen will.
Array
(
[01050] => Dresden Reick
[01796] => Sonnenstein
)
(
[01050] => Dresden Reick
[01796] => Sonnenstein
)
Habt ihr ein Idee was da schief läuft?
Vielen Dank für eure Zeit und Hilfe.
Gruß Litter

Kommentar