Komisches Tabellen Problem

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

  • Komisches Tabellen Problem

    Hallo ihr guten,
    Jetzt brauch ich doch Hilfe bei meinem Map versuch.

    In der DB hab ich 5 Einträge




    Und hier mein PHP Code dazu:

    PHP-Code:

    error_reporting
    (E_ALL);

    $dbhost 'localhost';
    $dbuser '*******';
    $dbpass '*******';
    $con mysqli_connect($dbhost$dbuser$dbpass) or die ('MySQL: Error connecting to local database');
    $dbname 'test';
    mysqli_select_db($con,$dbname);


    $sql "SELECT * from coordinaten ORDER by 'user_id'"
    $result mysqli_query($con,$sql);
    while(
    $row mysqli_fetch_array($result)) {
    $user_id $row['user_id'];
    $coordX $row['x'];
    $coordY $row['y'];

    echo 
    "<table border=0>"
    //$coordX =1;
    //$coordY =1;      
        
         
    for($x=1;$x<=10;$x++)
        {
            echo 
    "<tr>";
        for(
    $y=1;$y<=10;$y++)
            {
          if(
    $x==$coordX and $y==$coordY)
          {
          echo 
    "<td>";
          echo 
    "<div style='float: left; width: 50px; height: 50px; margin-right: 1px; margin-bottom: 1px; background-color: orange ; text-align: center;'>$user_id</div>";
            }
          else
          {
          echo 
    "<td>";
          echo 
    "<div style='float: left; width: 50px; height: 50px; margin-right: 1px; margin-bottom: 1px; background-color: green ; text-align: center;'>$x/$y</div>";
          }
          echo 
    "</td>";
        } 
        echo 
    "</tr>";     
      }             
      echo 
    "</table>";    

    Wo mach ich was falsch? Es generiert mir 5 Tabellen untereinander. Jeder Eintrag generiert eine neue Tabelle. Ich will aber alle Einträge in einer Tabelle haben. Ich bin langsam echt am verzweifeln. Ich bin der Meinung dass ich den Loop zum richtigen Zeitunkt abbreche.

    Ich hoffe jemand von euch sieht den Fehler den ich nicht sehe.
    Muss jetzt auch zugeben das ist mir peinlich weil ich hab ansonsten keine Probleme eine Tabelle aus DB einträgen zu generieren. Nur hier sind es fix 10x10 Felder und die, welche keine Einträge haben erscheinen Grün mit der Koordinate und die anderen Orange mit der User ID

    Lieben Dank
    Peroja

  • #2
    Dein <Table> Tag steht IN der while Schleife..
    HTML Grundlagen...

    Kommentar


    • #3
      trotzdem

      Ich hab trotzdem das gleiche Ergebniss wenn ich den Table aus der While herausnehme

      PHP-Code:
      <?PHP
      error_reporting
      (E_ALL);
      require(
      'lib/connection.php');
      echo 
      "<table border=0>"

      $sql "SELECT * from coordinaten ORDER by 'user_id'"
      $result mysqli_query($con,$sql);
         
      while(
      $row mysqli_fetch_array($result)) {
      $user_id $row['user_id'];
      $coordX $row['x'];
      $coordY $row['y'];

      //$coordX =1;
      //$coordY =1;      
        
           
      for($x=1;$x<=10;$x++)
          {
          echo 
      "<tr>";     
          for(
      $y=1;$y<=10;$y++)
              {   
          echo 
      "<td>";
            if(
      $x==$coordX and $y==$coordY)
            {
                   echo 
      "<div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: orange ; text-align: center;'>$user_id</div>";
               }
            else
            {
                  echo 
      "<div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: green ; text-align: center;'>$x/$y</div>";
            }
          echo 
      "</td>";             
          } 
        echo 
      "</tr>";       
        }             
      }            
      echo 
      "</table>"
                                     
      ?>

      Kommentar


      • #4
        1. Das kann nicht sein
        2. Tue dir selber einen Gefallen und formatiere deinen Quellcode ordentlich, damit er besser lesbar wird

        PHP-Code:
        <?PHP
          error_reporting
        (E_ALL);
          require(
        'lib/connection.php');

          echo 
        "<table border=0>"

          
        $sql "SELECT user_id, x, y from coordinaten ORDER by 'user_id'"
          
          
        $result mysqli_query($con,$sql)
            or die (
        "MySQL-Error: " mysqli_error($con));
           

          while(
        $row mysqli_fetch_array($result)) 
          {
             
        $user_id $row['user_id'];
             
        $coordX $row['x'];
             
        $coordY $row['y'];

          
             for(
        $x 1$x <= 10$x++)
             {
                echo 
        "<tr>";     
                
                for(
        $y 1$y <= 10$y++)
                {   
                   echo 
        "<td>";
                   
                   if(
        $x == $coordX and $y == $coordY)
                   {
                     echo 
        "<div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: orange ; text-align: center;'>$user_id</div>";
                   }
                   else
                   {
                      echo 
        "<div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: green ; text-align: center;'>$x/$y</div>";
                   }
                   
                   echo 
        "</td>";             
                } 
                
                echo 
        "</tr>";       
             }             
         }            

         echo 
        "</table>"
                                       
        ?>

        Kommentar


        • #5
          Kritik?

          Und Du mein lieber Bandit600 tu mir den Gefallen und prüfe erst Codes nachdem du sie "korrigiert" hast und mit Kritik an mich Publitzierst. Ich danke Dir dass du mir Helfen willst, ganz klar, aber Dein Code macht genau das gleiche wie meiner. Das hier ist von Dir:

          http://www.soundwerkstatt.ch/programmieren/test/map.php

          Auch Dein Code erzeugt 5 Tabellenanstatt nur eine mit aber allen 5 Einträgen drinnen. Scheint doch nicht so einfach zu sein gelle...

          Allgemein, ich bin ja nicht blöd und ich hab mich auch versucht zu konzentrieren und logisch versucht zu Denken. Da ich alle 5 Einträge in die while schlaufe nehmen muss um diese auszugeben muss ich das while abschluss "}" als letztes setzen und zwar NACH dem Generieren der Tabelle sonst hab ich logischerweise nur den letzten Eintrag. Wenn ichjetzt aber die ganze while schlaufe im TD block unterbringe hab ich auch ein durcheinander.

          Liebe Grüsse
          Pero

          Kommentar


          • #6
            Ich habe deinen Quellcode auch nicht verändert, sondern anständig formatiert, um dir ein Beispiel zu geben.

            Und der HTML-Code enthält nur eine Tabelle!

            Kommentar


            • #7
              hmm

              Hallo,

              Es scheint niemand gewilllt zu sein mir bei diesem Problem helfen zu wollen?
              Ich schaff es einfach nicht. Ein TableGrid zu erzeigen mit 10x10 feldern ist weniger ein Problem. Aber die Felder darin mit Daten aus der DB zu füllen schon. Also auf feld X,Y steht ein Eintrag. z.B 3/6 ist eine $user_id und auf 5/2 eine andere $user_id und auf 4/4 wiederum eine usw....
              Das problem ist dass mein Code für jeden einzelnen Eintrag ($user_id) einen komplett neue Table erzeugt. Ich versteh das einfach nicht

              Ich will eine einfache Map erstellen bei einem klick auf en besetztes Feld eine url erzeugt. (test.php?coord_x=$x&coord_y=$y) und besagtes Feld je nach DB eintrag grün oder blau ist, was auch immer....

              Schönen Abend noch
              LG
              Peroja

              Kommentar


              • #8
                Zitat von peroja Beitrag anzeigen
                Das problem ist dass mein Code für jeden einzelnen Eintrag ($user_id) einen komplett neue Table erzeugt. Ich versteh das einfach nicht
                Nochmal, und diesmal tippe ich auch ganz langsam, damit du es vielleicht jetzt verstehst: Das Script erzeugt genau [COLOR=Red]1 Tabelle[/COLOR], nicht mehr und nicht weniger!

                Kommentar


                • #9
                  Versteh ich das richtig, dass du EINE Tabelle mit 10x10 Feldern erzeugen willst? Und in dieser Tabelle sollen dann die Koordinaten, welche sich in deiner DB befinden entsprechend belegt werden?

                  Falls du beide Fragen mit Ja beantworten kannst, ist dein Ansatz schlicht nicht tauglich dafür.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Das ist Richtig. Die Tabelle kann auch 100x100 sein

                    Ich möchte im Prinzip so etwas machen:

                    testgame - map

                    Einfach auf das rudimentäre reduziert. Diese Map ist zwar auf meinem Server und voll Funktionstüchtig wie man sieht aber ich will weder fremde sachen klauen noch passt diese Map visuell in die Art von Game welche ich grad baue. Zudem ist der Code dafür derart gross und Verflechtet in andere Scripte wie Javascript und 3 weitere PHP welche knapp 25KB gross sind. Der Aufwand dies zu entflechten ist es nicht Wert.

                    Wie würdet Ihr ein solches Projekt angehen? Bin mal gespannt auf Input

                    Kommentar


                    • #11
                      Wenn du das selber programmieren willst, dann würd ich mich an deiner Stelle nochmal gedanklich mit deinem Code auseinandersetzen und versuchen zu verstehen, was da passiert.

                      Du liest deine DB aus und für jeden User erzeugst du zehn Tabellenzeilen mit jeweils zehn Zellen - klingelt da irgendwas?
                      Es geht mir jetzt erstmal nur darum ob du verstehst, warum dein Ansatz nicht funktioniert.
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        nun ja

                        Quetschi, ich hab schon genau geschaut und das Problem liegt innerhalb der WHILE schlaufe. Ich denk ich habs begriffen. Programmiertechnisch unmöglich.

                        Ich möcht aber trotzdem so ein Modul bauen, wenn auch nicht Isometrisch.
                        Ich könnt ja auch die Faulenzer Version machen und einen Table generieren und dann den HTML Coder daraus in ein neues File Pasten und dann von Hand den Link reintun. Aber des ist Doof.

                        Nun ich schau mal.

                        Kommentar


                        • #13
                          Dein Problem ist im Grunde genommen, dass du dich nicht an das EVA-Prinzip hältst. Zumindest Verarbeitung und Ausgabe sind bei dir mehr oder weniger in einem Schritt zusammengefasst. Du musst dich erst um die Verarbeitung kümmern und wenn diese abgeschlossen ist, kümmerst du dich noch um die Ausgabe.

                          Für dein Vorhaben könnte z.B. ein mehrdimensionales Array hilfreich sein, dass du in der Größe des gewünschten Feldes anlegst. Beim Durchlauf der Datensätze befüllst du dann die Felder des Arrays entsprechend. Zum Schluss überlegst du dir, wie du das Array als HTML-Tabelle ausgeben kannst.
                          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                          Schön - etwas Geschichte kann ja nicht schaden.
                          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                          Kommentar


                          • #14
                            PHP-Code:
                            <?PHP
                              $con 
                            mysqli_connect("localhost""root""""test");

                              
                            $sql "SELECT user_id, x, y from t3"
                              
                              
                            $result mysqli_query($con,$sql)
                                or die (
                            "MySQL-Error: " mysqli_error());
                               

                              
                            $data = array();
                              
                              while(
                            $row mysqli_fetch_array($result)) 
                                
                            $data[$row['x'] . "/" $row['y']] = $row['user_id'];

                              echo 
                            "<table border=0>"
                              
                              for(
                            $x 1$x <= 10$x++)
                              {
                                echo 
                            "<tr>";  
                                
                                for(
                            $y 1;$y <= 10$y++)
                                {   
                                   
                            $key $x "/" $y;
                                   
                                   if (
                            array_key_exists($key$data))
                                   {
                                      
                            $output $data[$key];
                                      
                            $color "green";
                                   }
                                   else
                                   {            
                                       
                            $output $key
                                       
                            $color "red";
                                   }
                                   
                                   echo 
                            "<td>
                                           <div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: 
                            $color ; text-align: center;'>$output</div>
                                         </td>"
                            ;             
                                } 
                                
                                echo 
                            "</tr>";       
                              }             

                              echo 
                            "</table>"
                                                           
                            ?>

                            Kommentar


                            • #15
                              @bandit600

                              dein Codebeispiel stellt keinerlei Verbesserung gegenüber dem bisherigen Code dar?!
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X