Ausgabe mehrere Arrays

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausgabe mehrere Arrays

    Hallo,

    ich hoffe mein Betreff ist richtig Formuliert.
    Ich ziehe mir Angebote aus einer Datenbank, mit dazugehörigen Geodaten, die würde ich gerne ausgeben.
    so sieht es momentan aus:

    PHP-Code:
    if($res<>""){    
        
    $maxRows mysql_num_rows($res);
            if(
    $maxRows>0){
                for(
    $i 0$i $maxRows$i++){
        
                
    $karte[$i]=mysql_fetch_array($res);
         
            if (
    $letzter_ort != $karte[$i]["ort"]) {
                        
    $letzter_ort $karte[$i]["ort"];
    echo  
    addMarker('".$karte[$i]['kob']."','".$karte[$i]['kol']."','<br />".$karte[$i]['art_kurz']."<br />"; ); 
    Jetzt habe ich das Problem, dass es zwar ausgegeben wird, aber mehrere addmarker übernander.

    D.h. ich muss es irgendwie hinbekommen, das die $karte[$i]['kob']
    gleich bleiben, aber der Wert $karte[$i]['art_kurz'] alle Artikel enthält, so das die Ausgabe ungefähr so aussieht.

    addmaker(49.0175515250426,12.0952494405989, Aktivität 1, Aktivität 2, Aktivität 3)

    Und So sieht es jetzt noch aus
    addmaker(49.0175515250426,12.0952494405989, Aktivität 1)
    addmaker(49.0175515250426,12.0952494405989, Aktivität 2)
    addmaker(49.0175515250426,12.0952494405989, Aktivität 3)

    Und die Überlappen dann logischerweise auf der Webseite

    Kann mir da vielleicht jemand einen Tipp geben ?

  • #2
    GROUP BY in die Query einbauen.

    Kommentar


    • #3
      Danke für den Tipp, so hatte ich es auch schon versucht,
      leider geht das nicht.

      PHP-Code:
      SELECT   lsn_ang.IDlsn_ang.zuartlsn_ang.ortlsn_ang.preis_normallsn_ang.preis_angebotkarte.kolkarte.kob
          
      lsn_arts.IDlsn_arts.festpreis lsn_arts.art_kurz  lsn_arts.zukatlsn_arts.art_longlsn_kat.ID
      lsn_kat.longlsn_kat.taelsn_kat.SHOP 
      FROM lsn_ang lsn_ang
      lsn_arts lsn_artslsn_kat lsn_katkarte karte 
      Where 
      lsn_ang
      .plz karte.plz
      AND 
      lsn_arts.ID lsn_ang.zuart
      AND lsn_ang.online 1
      AND lsn_kat.SHOP 'O'
      AND lsn_kat.ID lsn_arts.zukat
      GROUP BY lsn_ang
      .ort 
      Leider komment jetzt nur noch ein paar Angebote, aber nicht so wie ich das vorhatte,
      Der lässt jetzt einfach ein paar Angebote wech (so wie es schein)
      Oder Groupiere ich nach den falschen sachen?
      Zuletzt geändert von none; 01.11.2007, 13:41.

      Kommentar


      • #4
        Du willst die Funktion ja mit mehreren Markern aufrufen. Dann musst du dir erstmal alle Positionen und Marker in ein Array packen und anschließend vergleichen, welche Elemente auf einem Punkt liegen. Diese gibst du dann entsprechend aus.

        Kommentar


        • #5
          Also wäre es sinnvoll 2 SQL Abfragen die jeweils in Arrays zu speichern und dann zu filter, welche Angebote wo vorhanden sind?

          Kommentar


          • #6
            Du suchst dir erstmal alle Koordinaten aus deinem Ergebnissatz raus und suchst dir anschließend die, mit gleichen Koordinaten, um diese gemeinsam in einen Funktionsaufruf umzuwandeln. Recht einfach geht das mit einer "Hashtabelle", bei der du den Hash aus der X und Y-Koordinate ermittelst. Beispielsweise so:
            PHP-Code:
            $hashtable = array();
            while( 
            $row mysql_fetch_assoc$result ) ) {
               
            $hash $row['x'].'|'.$row['y'];
               if( !isset( 
            $hashtable[$hash] ) ) {
                 
            $hashtable[$hash] = array();
               }
               
            $hashtable[$hash][] = $row['location_name'];
            }

            foreach( 
            $hashtable as $hash=>$locations ) {
               list( 
            $x$y ) = explode'|'$hash );
               
            addmaker$x$y"'".implode"', '"$locations )."'" );

            Ist ungetestet, aber mal als Gedankenansatz!

            Kommentar

            Lädt...
            X