Ankündigung

Einklappen
Keine Ankündigung bisher.

Hallo zusammen wer kann einem Anfänger helfen?

Einklappen

Neue Werbung 2019

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

  • Hallo zusammen wer kann einem Anfänger helfen?



    Erstmal ein freundliches Hallo,
    Ich bin Anfänger was MySQL betrifft.
    Ich wollte ein Suchspiel für einen 3D Chat automatisieren.
    Es werden 30 anklickbare Gegenstände versteckt.
    Klickt man auf einen, öffnet sich ein Formular, mit dem der Username in Spalte = name und ein (X) in die Spalte z.B = neunzehn der Datenbank übergeben wird.
    Das funktioniert auch wunderbar.

    Nun habe ich das Problem, der richtigen Ausgabe in einer Tabelle.
    Die Datenbank hat 31 Spalten, die erste ist “name” dann geht es weiter mit “eins” bis “dreizig” (habe es mit z geschrieben da ß nicht geht).
    Da der Name immer wieder und nur ein (X) in einer anderen Spalte mit jeder eingabe geht, habe ich den Namen mehrmals in der Spalte.

    Nun möchte ich das in der Ausgabetabelle einmal der Name mit sämtlichen (X) unter der richtigen Nummer steht und vielleicht noch das Datum und die Uhrzeit des letzten Eintrags.
    Was ich bis jetzt hinbekommen habe schaut so aus.

    PHP-Code:
    <html>
    <head>
    <title>Tabelle darstellen</title>
    </head>

    <body>
    <?php
    echo date("H:i:s").'<br />'.'<br />';

    //Verbindung zur Datenbank herstellen
    mysql_connect("dbxxxxxxx.db.1and1.com""dboxxxxxxx","xxxxxxxx") or die ("Verbindung nicht möglich");
    mysql_select_db("dbxxxxxxx") or die ("Datenbank existiert nicht");

    /// SQL-Anfrage: Ergebnis ist stets eine Tabelle
    $sql="SELECT `name`, `eins`, `zwei`, `drei`, `vier`, `fuenf`, `sechs`, `sieben`, `acht`, `neun`, `zehn`, `elf`, `zwoelf`, `dreizehn`, `vierzehn`, `fuenfzehn`, `sechzehn`, `siebzehn`, `achtzehn`, `neunzehn`, `zwanzig`, `einundzwanzig`, `zweiundzwanzig`, `dreiundzwanzig`, `vierundzwanzig`, `fuenfundzwanzig`, `sechsundzwanzig`, `siebenundzwanzig`, `achtundzwanzig`, `neunundzwanzig`, `dreizig` FROM `spiel30` WHERE 1";

    // Anfrage ausführen
    $result=mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");

    // Tabelle in HTML darstellen
    echo "<table border="1">\n";
    while (
    $row=mysql_fetch_row($result))
    {
    echo 
    "<tr>";
    echo 
    "<td>NAME</td>";echo "<td>01</td>";echo "<td>02</td>";echo "<td>03</td>";echo "<td>04</td>";echo "<td>05</td>";echo "<td>06</td>";echo "<td>07</td>";echo "<td>08</td>";echo "<td>09</td>";echo "<td>10</td>";
    echo 
    "<td>11</td>";echo "<td>12</td>";echo "<td>13</td>";echo "<td>14</td>";echo "<td>15</td>";echo "<td>16</td>";echo "<td>17</td>";echo "<td>18</td>";echo "<td>19</td>";echo "<td>20</td>";
    echo 
    "<td>21</td>";echo "<td>22</td>";echo "<td>23</td>";echo "<td>24</td>";echo "<td>25</td>";echo "<td>26</td>";echo "<td>27</td>";echo "<td>28</td>";echo "<td>29</td>";echo "<td>30</td>";
    echo 
    "</tr>\n";
    echo 
    "<tr>";
    foreach (
    $row as $item// jedes Element $item der Zeile $row durchlaufen
    echo "<td>$item</td>";
    echo 
    "</tr>\n";
    }
    echo 
    "</table>\n";
    ?>
    </body>
    </html>
    Das Ergebnis schaut dann so aus.



    Kann mir da bitte einer helfen.

    LG

    Mad Fun

  • #2
    anstatt boldface nutze doch code tags, und sinvolles einrücken.

    Kommentar


    • #3
      Danke dir für die schnelle Antwort,
      aber es ist doch dieser Befehl der das so ausführt,

      PHP-Code:
      foreach ($row as $item)
                  echo 
      "<td>$item</td>"
      oder denke ich da falsch?

      Kommentar


      • #4
        Ich hab ja gedacht foreach braucht {}, geht wohl auch ohne.
        Mache doch mal
        PHP-Code:
        var_dump($row); 
        lese das:
        https://php-de.github.io/jumpto/sql/
        und schau im webserver log, ob es an mysql* liegt.
        http://php.net/manual/de/migration55.deprecated.php

        der Code so jedenfalls, ist unlesbar.

        Kommentar


        • #5
          Sorry bin echt eiskalter Anfänger was MySQL und Datenbank betrifft, hat nicht geklappt hat nur die Tabelle mit dem Befehl voll geschrieben.
          ich bin schon seit 2 Wochen am suchen und lesen verstehe in den meisten Fällen nur Bahnhof, und der Englischen Sprache bin ich leider auch nicht mächtig.

          Kommentar


          • #6
            Nochmal, seit 5.5 werfen mysql* funktionen fehler, diese sind durch mysqli* funktionen ersetzt.
            der error.log könnte dir da weiterhelfen.
            mache mal anstatt foreach ()
            PHP-Code:
            var_dump($row); 
            um dir $row ausgeben zu lassen.
            der debugging leitfaden der wissesnsammlung ist deutsch.
            die tablelle würde ich, bis du ergebnisse bekommst weglassen.
            dann lässt sich das sicher auch mit schleife machen.
            http://php.net/manual/de/function.range.php

            Kommentar


            • #7
              Mad Fun dein Problem ist hier, dass du den eigentlichen Tabellen Header mit jeder Zeile ausgibst. Den Header kurz aus der Schleife raus und fertig.

              Insgesamt solltest du aber mal dein Datenbank Design überdenken!
              Und je nach dem welche PHP Version dein System hat, steige auf mysqli_* Funktionen anstatt mysql_* Funktionen um, so wie es tomBuilder bereits empfohlen hat.


              Nachfolgend, das Ausgangsscript mit ausgelagertem Header für die Tabelle:
              PHP-Code:
              <html>
                  <head>
                      <title>Tabelle darstellen</title>
                  </head>

                  <body>
                      <?= date("H:i:s"?><br /><br />
                      <?php
              //Verbindung zur Datenbank herstellen
                      
              $connection mysql_connect("dbxxxxxxx.db.1and1.com""dboxxxxxxx""xxxxxxxx") or die("Verbindung nicht möglich");
                      
              mysql_select_db("dbxxxxxxx"$connection) or die("Datenbank existiert nicht");

              /// SQL-Anfrage: Ergebnis ist stets eine Tabelle
                      
              $sql "SELECT `name`, `eins`, `zwei`, `drei`, `vier`, `fuenf`, `sechs`, `sieben`, `acht`, `neun`, `zehn`, `elf`, `zwoelf`, `dreizehn`, `vierzehn`, `fuenfzehn`, `sechzehn`, `siebzehn`, `achtzehn`, `neunzehn`, `zwanzig`, `einundzwanzig`, `zweiundzwanzig`, `dreiundzwanzig`, `vierundzwanzig`, `fuenfundzwanzig`, `sechsundzwanzig`, `siebenundzwanzig`, `achtundzwanzig`, `neunundzwanzig`, `dreizig` FROM `spiel30` WHERE 1";

              // Anfrage ausführen
                      
              $result mysql_query($sql$connection) or exit("Fehler im SQL-Kommando: $sql");

              // Tabelle in HTML darstellen
                      
              ?>
                      <table border="1">
                          <tr>
                              <th>NAME</th>
                              <th>01</th>
                              <th>02</th>
                              <th>03</th>
                              <th>04</th>
                              <th>05</th>
                              <th>06</th>
                              <th>07</th>
                              <th>08</th>
                              <th>09</th>
                              <th>10</th>
                              <th>11</th>
                              <th>12</th>
                              <th>13</th>
                              <th>14</th>
                              <th>15</th>
                              <th>16</th>
                              <th>17</th>
                              <th>18</th>
                              <th>19</th>
                              <th>20</th>
                              <th>21</th>
                              <th>22</th>
                              <th>23</th>
                              <th>24</th>
                              <th>25</th>
                              <th>26</th>
                              <th>27</th>
                              <th>28</th>
                              <th>29</th>
                              <th>30</th>
                          </tr>

                          <?php
                          
              while ($row mysql_fetch_row($result)) {

                              echo 
              "<tr>";
                              
              // jedes Element $item der Zeile $row durchlaufen
                              
              foreach ($row as $item) {
                                  echo 
              "<td>$item</td>";
                              }
                              echo 
              "</tr>\n";
                          }
                          
              ?>
                      </table>        
                  </body>
              </html>

              Kommentar


              • #8
                Ich danke dir Gnom42 aber es hat nicht geklappt, gab schon Fehler bei der Verbindung zur Zur Datenbank.
                Nachdem ich die Änderungen rückgängig in der Verbindung gemacht habe und den Rest von dir übernommen habe läuft was durch und diese Fehlermeldung kommt.
                Parse error: syntax error, unexpected end of file in /homepages/29/d227804376/htdocs/test/test.php on line 75
                Ich habe auch nachgeschaut was ich da benutze, es ist MySQL 5.5 und PHP 7.1
                Gibt es die möglichkeit sich mal zu unterhalten in einem TS oder per Skype?

                Kommentar


                • #9
                  Mach ein Stellenangebot oder sonstwas in dem entsprechnedem Unterforum, wenn Du willst, dass Dir gezeigt wird, wo Syntaxfehler etc. liegen.

                  Wenn Du was selbst machen willst,m solltest Du Dich mit Google oder ähnlichem vertraut machen, anbei eine Antwort von einem Mitforisten in einem anderem Forum:

                  http://phpforum.de/forum/showpost.ph...18&postcount=4

                  Kommentar


                  • #10
                    Mad Fun Also den Parse Error, hast du wahrscheinlich reingebaut, beim zurückbauen der Datenbank-Verbindung, vermute ich jetzt einfach mal. Zudem hatte das Script, das ich postete nur 69 Zeilen ... wie kann da in Zeile 75 ein Fehler entstehen?!
                    Interessant wäre dabei noch die Meldung für den Fehler bei der Datenbankverbindung gewesen, aber ist auch nicht so wichtig.
                    Also bitte zukünftig komplette Zusammenhänge posten, sonst ist die Analyse auch nur Rätsel raten.

                    Da du ein PHP7 System am Laufen hast, sollte es die mysql_* Funktionen eh nicht mehr geben, da diese mit PHP7 abgeschafft wurden, daher vermute ich, dass es irgendeine Art Workaround auf deinem System gibt.


                    Nachfolgend nochmal das Script, mit folgenden Änderungen:
                    • Umbau auf mysqli (anstatt mysql Funktionen)
                    • Table-Header in Schleife gepackt (macht es einfach kürzer im Quelltext)
                    • Formatanpassungen
                    @see MySQLi Klasse
                    @see MySQLi_Result Klasse

                    PHP-Code:
                    <html>
                        <head>
                            <title>Tabelle darstellen</title>
                        </head>

                        <body>
                            <?= date("H:i:s"?><br /><br />
                            <?php
                    //Verbindung zur Datenbank herstellen
                            
                    $dbHost ''// Datenbank Server Name
                            
                    $dbUsername ''// Datenbank Nutzer
                            
                    $dbPasswd ''// Password des Datenbank Nutzers
                            
                    $dbName ''// Name der Datenbank / Datenbank-Schema
                            
                    $mysqli = new \mysqli($dbHost$dbUsername$dbPasswd$dbName);
                            if (
                    $mysqli->connect_error):
                                die(
                    'Connect Error (' $mysqli->connect_errno '): '
                                        
                    $mysqli->connect_error);
                            endif;
                    /// SQL-Anfrage: Ergebnis ist stets eine Tabelle
                            
                    $sql "SELECT `name`, `eins`, `zwei`, `drei`, `vier`, `fuenf`, `sechs`, `sieben`, `acht`, `neun`, `zehn`, `elf`, `zwoelf`, `dreizehn`, `vierzehn`, `fuenfzehn`, `sechzehn`, `siebzehn`, `achtzehn`, `neunzehn`, `zwanzig`, `einundzwanzig`, `zweiundzwanzig`, `dreiundzwanzig`, `vierundzwanzig`, `fuenfundzwanzig`, `sechsundzwanzig`, `siebenundzwanzig`, `achtundzwanzig`, `neunundzwanzig`, `dreizig` FROM `spiel30` WHERE 1";

                    // Anfrage ausführen
                            
                    $result $mysqli->query($sql);
                            if (!
                    $result) :
                                die(
                    "SQL Error (" $mysqli->errno "): " $mysqli->error "<br>"
                                        
                    "Fehler im SQL-Kommando: " $sql);
                            endif;
                            
                    /* @var $result \mysqli_result */

                    // Tabelle in HTML darstellen
                            
                    ?>
                            <table border="1">
                                <tr>
                                    <th>NAME</th>
                                    <?php for ($i 1$i <= 30$i++): ?>
                                        <th><?= sprintf("%02d"$i?></th>
                                    <?php endfor; ?>   
                                </tr>

                                <?php while ($row $result->fetch_array(MYSQLI_NUM)): ?>
                                    <tr>
                                        <?php foreach ($row as $item): ?>
                                            <td><?= $item ?></td>
                                        <?php endforeach; ?>
                                    </tr>
                                <?php endwhile; ?>
                            </table>        
                        </body>
                    </html>
                    PS: Beschäftige dich mal mit http://php.net Viele Sachen findest du auch einfach dort. Bei den Funktionen stehen in den meisten Fällen auch einfache Beispiele bei.

                    Kommentar


                    • #11


                      Okay Ich danke für die Hilfe

                      LG

                      Mad Fun

                      Kommentar

                      Lädt...
                      X