+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Daten werden komisch ausgegeben

  1. #1
    TP-Member veil macht alles soweit korrekt
    Registriert seit
    Aug 2009
    Beiträge
    53

    Daten werden komisch ausgegeben

    Ich habe hier eine Umkreissuche, welche auch an sich gut funktioniert.
    Das Problem ist nur das, die Ergebnisse in dieser blöden Art und Weise ausgegeben werden:
    HTML-Code:
    stdClass Object
    (
        [ort] => Hamburg
        [Distance] => 0
    )
    
    stdClass Object
    (
        [ort] => Hamburg
        [Distance] => 1.35221811138344
    )
    Das ist der PHP Code dazu:
    PHP-Code:
    <?php

    // verbindung zur DB
    include('../Connections/Test.php');
    mysql_select_db($database_Test$Test);
    /* -------------------------- */
    $suche $_GET['suche'];
    $plz $_GET['post'];
    $umkreis $_GET['umkreis'];

    if (
    $_GET['post'] == "" and $_GET['umkreis'] == "")
    $plz '01067' and $umkreis 9000;} 
    if (
    $_GET['post'] == "" and $_GET['umkreis'] != "")
    {echo 
    "Wählen Sie einen Ort";}
    if (
    $_GET['umkreis'] == "" and $_GET['post'] != "")
    {echo 
    "Wählen Sie einen Umkreis";}
    else {

    /* -------------------------- */
    if (isset($_GET['submit'])) {
    $sql_rad mysql_query("SELECT geo_l, geo_b, ort FROM `cix_plz` WHERE `plz` = '$plz' OR `ort` = '$plz'");
    $erg_rad mysql_fetch_object($sql_rad);

    // Umrechnung von GRAD IN RAD

    $rad_l $erg_rad->geo_l 180 M_PI;
    $rad_b $erg_rad->geo_b 180 M_PI;

    // jetzt erfolgt die eigentliche Abfrage

    $query "SELECT  ort,(
        6367.41 * SQRT(2*(1-cos(RADIANS(geo_b)) * 
        cos("
    .$rad_b.") * (sin(RADIANS(geo_l)) *
        sin("
    .$rad_l.") + cos(RADIANS(geo_l)) * 
        cos("
    .$rad_l.")) - sin(RADIANS(geo_b)) * sin(".$rad_b.")))) AS Distance 
        FROM cix_plz WHERE 
        6367.41 * SQRT(2*(1-cos(RADIANS(geo_b)) * 
        cos("
    .$rad_b.") * (sin(RADIANS(geo_l)) * 
        sin("
    .$rad_l.") + cos(RADIANS(geo_l)) * 
        cos("
    .$rad_l.")) - sin(RADIANS(geo_b)) * sin(".$rad_b."))) <= ".$umkreis."
        
        AND `suchfeldtabelle` LIKE ('$suche')"
    ;

    // die Ausgabe (vereinfacht)
    $sql mysql_query($query);
    while( 
    $erg mysql_fetch_object($sql) ) {

        echo 
    '<pre>'print_r($ergtrue), '</pre>';

    $num_rows mysql_num_rows($sql);

    }}}
    echo 
    $num_rows;

    ?>
    Was müsste ich ich dort ändern, damit z.B. nur die Suchergebnisse also z.B. die Postleitzahlen ausgegeben werden ?

  2. #2
    TP-Veteran Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.686
    Moin,

    PHP-Code:
    echo '<pre>'print_r($ergtrue), '</pre>'
    print_r gibt immer das ganze Array aus (hier $erg). Die Ausgabe musst du halt aendern, wie du sie haben willst.
    Gruss Guin
    Mein Blog

  3. #3
    TP-Member veil macht alles soweit korrekt
    Registriert seit
    Aug 2009
    Beiträge
    53
    Ich habe es geschafft. Ich kann nur leider diese Abfrage schwer weitermodifizieren. Da habe ich noch eine andere gefunden.
    Die ist etwas umfangreicher. Von http://www.mamat-online.de

    PHP-Code:
    <?php
    class Umkreissuche {
        
    // Erdradius in Kilometern
        
    private $Erdradius 6371;
        
    // mysql link identifier
        
    private $db;
        
    // Datentabelle
        
    private $table false;
        
    // Fehler zeigen?
        
    public $zeigeFehler true;

        public function 
    __construct($db$table 'vereine') {
            if (!
    is_resource($db) || get_resource_type($db) != 'mysql link') {
                
    trigger_error('Keine MySQL-Ressource übergeben'E_USER_ERROR);
            }
            
    $this->db $db;
            
    $this->table $table;

            
    // leere Koordinaten in Tabelle füllen
            
    $sql 'SELECT `ID`, `PLZ`
                    FROM `' 
    $this->table '`
                    WHERE
                        `KoordX` = "0"
                    AND `KoordY` = "0"
                    AND `KoordZ` = "0"
                    '
    ;
            
    $re mysql_query($sql$this->db);
            while (
    $rd mysql_fetch_object($re)) {
                if (!
    $this->Plz2Koord($rd->PLZ$lon$lat)) {
                    if (
    $this->zeigeFehler) {
                        
    trigger_error('Postleitzahl ' $rd->PLZ ' konnte nicht zugeordnet werden'E_USER_NOTICE);
                    }
                    continue;
                }
                
    $this->Kugel2Kartesisch($lon$lat$x$y$z);
                
    $sql 'UPDATE `' $this->table '`
                        SET
                            `Longitude` = "' 
    $lon '",
                            `Latitude` = "' 
    $lat '",
                            `KoordX` = "' 
    $x '",
                            `KoordY` = "' 
    $y '",
                            `KoordZ` = "' 
    $z '"
                        WHERE
                            `ID` = "' 
    . (int)$rd->ID '"
                        LIMIT 1
                        '
    ;
                
    mysql_query($sql$this->db);
            }
        }
            
        public function 
    Kugel2Kartesisch($lon$lat, &$x, &$y, &$z) {
            
    $lambda $lon pi() / 180;
            
    $phi $lat pi() / 180
            
    $x $this->Erdradius cos($phi) * cos($lambda);
            
    $y $this->Erdradius cos($phi) * sin($lambda);
            
    $z $this->Erdradius sin($phi); 
            return 
    true;
        }
        
        public function 
    Plz2Koord($PLZ, &$lon, &$lat) {
            
    $sql 'SELECT
                        coo.lon,
                        coo.lat
                    FROM geodb_coordinates AS coo
                    INNER JOIN geodb_textdata AS textdata
                    ON textdata.loc_id = coo.loc_id
                    WHERE
                        textdata.text_val = "' 
    mysql_real_escape_string($PLZ$this->db) . '"
                    AND textdata.text_type = "500300000"
                    LIMIT 1'
    ;
            
    $re mysql_query($sql$this->db);
            if (
    mysql_num_rows($re) != 1) {
                return 
    false;
            }
            list(
    $lon$lat) = mysql_fetch_row($re);
            return 
    true;
        }
        
        public function 
    Suche($PLZ$Radius$Spalten = array(), $Reihenfolge false$Richtung 'ASC') {
            if (!
    is_array($Spalten) || count($Spalten) == 0) {
                
    $Spalten '*';
            } else {
                
    $Spalten '`' implode('`, `'$Spalten) . '`';
            }

            if (!
    $this->Plz2Koord($PLZ$lon$lat)) {
                if (
    $this->zeigeFehler) {
                    
    trigger_error('Postleitzahl ' $PLZ ' konnte nicht zugeordnet werden'E_USER_NOTICE);
                }
                return 
    false;
            }
            
    $this->Kugel2Kartesisch($lon$lat$UrsprungX$UrsprungY$UrsprungZ);
            
            
    $sql 'SELECT ' $Spalten '
                    FROM `' 
    $this->table '`
                    WHERE
                        KoordX >= ' 
    . ($UrsprungX $Radius) . '
                    AND KoordX <= ' 
    . ($UrsprungX $Radius) . '
                    AND KoordY >= ' 
    . ($UrsprungY $Radius) . '
                    AND KoordY <= ' 
    . ($UrsprungY $Radius) . '
                    AND KoordZ >= ' 
    . ($UrsprungZ $Radius) . '
                    AND KoordZ <= ' 
    . ($UrsprungZ $Radius) . '
                    AND POWER(' 
    $UrsprungX .' - KoordX, 2)
                      + POWER(' 
    $UrsprungY .' - KoordY, 2)
                      + POWER(' 
    $UrsprungZ .' - KoordZ, 2)
                        <= "' 
    pow($this->Erdradius sin($Radius / ($this->Erdradius)), 2) . '"';
            if (
    $Reihenfolge && strpos($Spalten$Reihenfolge) !== false) {
                
    $Richtung = (strtoupper($Richtung) == 'DESC') ? 'DESC' 'ASC';
                
    $sql .= "\n" 'ORDER BY `' $Reihenfolge '` ' $Richtung;
            }
            
    $re mysql_query($sql$this->db);
            
    $result = array();
            while (
    $rd mysql_fetch_object($re)) {
                
    $result[] = $rd;
            }
            return 
    $result;
        }

    }
    ?>
    Ich schaffe es nicht die sql - Abfrage um ein weiteres Feld z.B. Suchfeld zu erweitern. Es soll halt noch ein zusätzliches Tabellenfeld abgefragt werden.
    Wie baut man das in die obige Abfrage ein ?

+ Antworten

Ähnliche Themen

  1. Inhalte werden nicht ausgegeben...
    Von Crazychef im Forum TYPO3
    Antworten: 7
    Letzter Beitrag: 01.04.2008, 13:01
  2. BR-Tags werden nicht ausgegeben
    Von automatix im Forum TYPO3
    Antworten: 0
    Letzter Beitrag: 30.07.2007, 01:04
  3. Antworten: 3
    Letzter Beitrag: 21.05.2007, 01:33
  4. RGB-Bilder werden im PDF als CMYK ausgegeben
    Von preprint im Forum PrePress
    Antworten: 11
    Letzter Beitrag: 19.05.2005, 08:16
  5. ergebnisse werden nicht richtig ausgegeben
    Von hallmi im Forum Traum-Dynamik
    Antworten: 9
    Letzter Beitrag: 01.02.2005, 22:44

Stichworte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51