Ankündigung

Einklappen
Keine Ankündigung bisher.

Es wird nur eine Variable geholt!

Einklappen

Neue Werbung 2019

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

  • Es wird nur eine Variable geholt!

    Hallo

    Und mal wieder einen geistigen Knick im Hirn

    Es gibt 2 Tabellen.
    Die eine enthält Daten für Sternen Koordinaten und die andere Div. Einträge was sich dort befindet.

    Das Problem ist das die Div. Einträge nur einmal durchlaufen wird!
    Es wird nur der 1. Datensatz ausgegeben! Er soll aber für jede
    gefundene Koordinate auch in der anderen Tabelle schauen ob ein
    Eintrag vorhanden ist und gegebenenfalls ausgeben!
    Die Sternenkoordinaten werden ohne Probleme durchsucht und auch
    korrekt dargestelllt.

    PHP-Code:
       // Kartenausschnitt normal darstellen (aber in <DIV> wegen der nachfolgenden Symbolpositionierung)
       
    $error_str .= "<tr><td border=0><div style='position:relative;'><img src=maps/$db_name/sm$user[location].png border=0 width=196 height=196 alt=\"Map of systems around $user[location]\">";

    // Hier holen wir uns mal kurz die aktuellen X und Y Werte des aktuellen Systems...
    db("SELECT * FROM ${db_name}_stars WHERE star_id = $user[location]");
    $akt_lok dbr();
    $akt_x $akt_lok[x_loc];
    $akt_y $akt_lok[y_loc];

    db("SELECT * FROM ${db_name}_map_info WHERE login_id = '$user[login_id]'");
    $info dbr();

    // 98 und -98 sind bei Mitte des Bildes (0, 0) zur Eingrenzung der Sterne aus der Abfrage 
    db("SELECT * FROM ${db_name}_stars WHERE (x_loc - $akt_x) > -98 AND (x_loc - $akt_x) < 98 AND (y_loc - $akt_y) > -98 AND (y_loc - $akt_y) < 98");
    while (
    $star dbr())
    {

       
    // Hier jeden auf der Minimap sichtbaren Quadaranten darstellen
       
    $rel_x 98 + ($star[x_loc] - $akt_x) - 7// Die 6 kommt durch ((Symbolgröße / 2) - ) zustande, sind bei mir 13x13
       
    $rel_y 98 + ($star[y_loc] - $akt_y) - 7// hier das gleiche
       // Hier solltest du deine Sternenkarteneinträge abchecken ob Einträge existieren und gebenenfalls den Bildnamen ändern...


            
    if($info['star_id'] == $star['star_id']){//Hier soll die passende gif Datei gefunden werden - Hier ist auch das eigentliche Problem!!!!
                
    if($info['market'] == 1){
                
    $sym "images/minimap/market.gif";
                }elseif(
    $info['hole'] == 1){
                
    $sym "images/black_hole.gif";
                }            
            }else{
                   
    $sym "images/user_planet.gif";
                
        }

    $error_str .= "<div style='position:absolute;left:".$rel_x."px;top:".$rel_y."px;overflow:hidden;'>";   // Hiermit wird unser Symbol über den Kartenausschnitt relativ positioniert
    $error_str .= "[img]".$sym."[/img]";
    $error_str .= "</div>"
    }

       
    // Hier alle Tags schliessen 
       
    $error_str .= "</div>";
       
    $error_str .= "</a></td></tr></table>"
    (Das Script läuft so wie dargestellt ohne Fehler! Die SQL Abfragen sind in externen Funktionen vorhanden!)

    Danke für Eure Mühe

    Gruss Peter A

  • #2
    Das riecht ja danach, daß deine Funktion "dbr()" nur einen Satz zurueckgibt.
    Wie sieht die denn aus?

    Andre

    Kommentar


    • #3
      Re: Es wird nur eine Variable geholt!

      Zitat von Peter A

      PHP-Code:
      while ($star dbr()) 
      (Das Script läuft so wie dargestellt ohne Fehler! Die SQL Abfragen sind in externen Funktionen vorhanden!)
      Und genau da .. wird wohl dein Problem liegen...

      Kommentar


      • #4
        @android51

        Hier die Funktion für dbr()
        PHP-Code:
        function dbr() 
        {
            global 
        $query$db$ADODB_FETCH_MODE;
            
        $fetched $query->fields;
            
        $query->MoveNext();
            return 
        $fetched;

        Der liest nur den ersten aus, Frage ist wie bekomme ich die von
        $info mit in die Schleife?

        ###########
        @Guradia

        Das kann ich nicht ganz nachvollziehen

        Kann man das so machen?
        PHP-Code:
        while ($star dbr() && $info dbr()) 
        Kann ich mir nicht vorstellen, warscheinlich ein kläglicher Versuch

        Wie gesagt die Schleife ($star), wird alles korrekt ausgelesen!


        Gruss
        Peter A

        Kommentar


        • #5
          Kann mir vielleicht doch jemand helfen?

          Oder ist die Frage zu abstrus oder sollte man selber draufkommen?

          Aber wie gesagt habe Blockade oder vergessen die Scheuklappen abzumachen.

          Gruss
          Peter A

          Kommentar


          • #6
            Deine Funktion dbr() macht mich so natürlich nicht schlauer. Aber der Rückgabewert muß ja ein assoziatives Array sein, wenn Du es mit einer Schleife durchlaufen willst. Was sagt denn count($fetched) oder count($info)? Wenn das 1 ist, hast Du das Problem lokalisiert.

            Ich glaube, das wird zu kompliziert gemacht. Du holst Dir ein assoc_array aus der DB und willst es mit einer schleife durchlaufen.
            Meine Vermutung ist, daß Du in dbr() nicht sagst, while ()... sondern die DB-Abfrage ja auch nur einmal machst.
            Schreib doch in MoveNext() mal echo "irgendwas" rein.
            Was sagt count($fetched) in der Funktion dbr() ?
            Ich wette 1.
            Kleinere Schritte machen!

            Andre

            Kommentar


            • #7
              Hallo Android51

              Du hast recht "kleinere Schritte machen"
              Vielleicht ein neuer möglicher Ansatz

              Dadurch ergibt sich eine neue Frage:
              1. Schleife
              PHP-Code:
              db("SELECT * FROM ${db_name}_info WHERE login_id = '$user[login_id]'");
                  while(
              $info dbr()){
              echo 
              "$info[id]";    

              Mit dieser Schleife bekomme ich alle erforderlichen Einträge ausgeben.

              Wie bekomme ich diese verschiedenen Variablen in eine andere Schleife?
              zBsp. hier herein
              Auch hier werden alle erforderlichen Werte ausgelesen

              2. Schleife
              PHP-Code:
              db("SELECT * FROM ${db_name}_stars WHERE (x_loc - $akt_x) > -98 AND (x_loc - $akt_x) < 98 AND (y_loc - $akt_y) > -98 AND (y_loc - $akt_y) < 98");
              while (
              $star dbr())
              {

              //Hier übergabe der Werte von der ersten Schleife???
              //Und dann Auswertung zBsp.
              if($info && $star['star_id']){    
              //usw. usw... 
              Frage:
              - Wie bekomme ich Schleife1 Werte in 2.Schleife rein oder übergegeben
              - Macht das Sinn??? Oder viel zu kompliziert???

              Danke und gruss
              Peter A

              Kommentar


              • #8
                Ich hoffe, daß ich Dich jetzt richtig verstehe.
                Dann geht das so:
                Code:
                $Data = array();
                while($info = dbr()) {
                        array_push($Data, $info);
                }
                ...
                for ($i=0; $i<count($Data); $i++) {
                     echo $Data[$i]['id']." & ".$Data[$i]['name_oder_andere_dbspalte']."
                ";
                }
                Hoffe, das war's

                Andre

                Kommentar


                • #9
                  @android51

                  Ich hoffe, daß ich Dich jetzt richtig verstehe.
                  Dann geht das so:
                  Juhu! Es hat funktioniert! Genau das war es...Vielen Dank...

                  Der Ordnung halber werde ich wenn der Code bereinigt ist
                  das Ergebniss posten, für diejenigen die einmal das selbe Problem
                  haben.

                  Vielen Dank und Gruss
                  Peter A

                  Kommentar

                  Lädt...
                  X