Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 23 von 23

Thema: Tabelle?

  1. #16
    Registrierter Benutzer
    Registriert seit
    09.12.2001
    Beiträge
    171
    Hi,
    sry, das ich mich längere zeit nicht gemeldet hatte, hatte ein bissel was zu tun


    das mit dem zufallsgenerator funktioniert irgendwie noch nicht so ganz bei mir.
    Also ich habe eine datenbank, eine Tabelle (user), mit 3 spalten (userid, username, userpass) und 2 einträgen (2 test test; 1 user pass).
    So habe ich auch alles angepasst:


    Code:
    <?php
      require("./h.php");   
      require("DB.php"); 
     $dsn = "mysql://user:passwort@host/datenbank";$db = DB::connect($dsn);
      if (DB::isError($db)) { die ($db->getMessage('keine Verbindung')); }
    
    // Hier lege ich eine temporäre Datei an, die die Teams in einer zufälligen Reihenfolge enthält
       $query_1="
       create temporary table team_1
       select     
         username
       from user
       order by rand() 
      ";
    
      $result_1 = $db->query($query_1);
      if (DB::isError($result_1)) { die($result_1->getMessage()); }
    
    
    
    //optional: Begrenzung der Spiele auf eine bestimmte Anzahl, da es sonst zu viele werden.
      $num = $db->getOne('select count(username) from team_1 ');
      print "$num Teamzahl";
    
    
    
    // Anlegen der Ausgabetabelle. Die Halle und die Spielzeit muß man aber sinnvollerweise per Hand eingeben. So etwas kann kein Computer.
      $query_2="
       create  table user
       select 
         trainer.userid as id,
         trainer.username as Team1,
         team_1.username as Team2        
       from user,team_1 
       order by rand()   
       limit $num 
      ";
    
      $result_2 = $db->query($query_2);
      if (DB::isError($result_2)) { die($result_2->getMessage()); }
      
    ?>
    
    </body>
    </html>
    doch ich bekomme nun folgenden fehler:
    2 TeamzahlDB Error: Object

    findest du den fehler? ich hab keine ahnung wo der steckt

    MfG
    Stormsam

  2. #17
    Registrierter Benutzer
    Registriert seit
    27.08.2002
    Beiträge
    337
    Oh sorry ich hab den Code erst bei mir selber ausprobiert und dann
    beim Ändern für die temporäre Tabelle die verkehrte Quelle angegeben.

    $query_1="
    create temporary table team_1
    select
    username
    from user //Hier muß die Tabelle rein, die die Vereine ausfüllen
    order by rand()
    ";

    Der Computer legt die Tabelle user selber an. "create table user".
    Diese hat die Spalten id, Team1,Team2
    und übernimmt die Einträge aus der Tabelle, die die Vereine angelegt haben.
    Wenn du schon eine Tabelle user angelegt hast funktioniert das nicht.

    Mir gefällt das Auswahlverfahren aber überhaupt nicht.
    Sag mir doch endlich was für ein Spiel das sein soll und laß uns etwas anderes machen.

  3. #18
    Registrierter Benutzer
    Registriert seit
    09.12.2001
    Beiträge
    171
    Hi,

    ich werd morgen mal die tabelle user löschen und die testuser in eine andere tabelle packen, dann sollte es gehen oder?

    Zu dem was ich machen möchte:
    So etwas in der art wie das hier:

    http://www.cs.a4g-liga.de

    Nur sollte es ein Turnier sein.
    Teams melden sich an, ein Skript soll immer zwei nebeneinander stellen, damit jeder weis gegen wen er spielen soll. Die Gewinner kommen eine Runde weiter und die Verliehrer bleiben mit ihrem entergebnis in der tabelle. Das so lange bis nur noch 2 Teams da sind, diese werden dann das Finale spielen, dann wird es einen Gewinner geben und fertig

    MfG
    Stormsam

  4. #19
    Registrierter Benutzer
    Registriert seit
    27.08.2002
    Beiträge
    337
    Wahrscheinlich ist es doch besser du machst ein Update der bestehenden user-Datei.
    Dann kann man die Spielergebnisse in die user-Datei schreiben.
    Code:
    <?php
      require("./header.php");   
      require("DB.php");
      $dsn = "mysql://userasswort@host/datenbank";$db = DB::connect($dsn);
      
      $db = DB::connect($dsn);
      if (DB::isError($db)) { die ($db->getMessage('keine Verbindung')); }
    
    print "<div ID='lay100'>";
    
    $i=0;
    $colid = $db->getCol('select id from user order by id');
    $col   = $db->getCol('select team1 from user order by rand()');
               foreach ($col as $value) {			 	
    			  $sqlab = "update user set team2='$value' where id = '$colid[$i]' ;"; 
    			  $result = $db->query($sqlab);
    			  $i++;            
               } 
     
    print "</div>";
    ?>
    
    </BODY>
    </HTML>
    Das Probem ist, daß Teams eventuell gegen sich selbst spielen.
    Das sollte man abfragen und dann nochmal ein paar Teams tauschen.

  5. #20
    Registrierter Benutzer
    Registriert seit
    09.12.2001
    Beiträge
    171
    Hi,

    hmm... was soll ich mit dem update machen ? In welche user-Datei soll das rein?

    Der Zufallsgenerator funktioniert immer noch nicht:
    Tabelle: liga
    Mit den Spalten: userid (1); username (user); userpass (pass)

    Username wäre dann die spalte für die Teams (momentan nur ein Wert drin, nämlich "user")

    Die Tabelle user habe ich gelöscht! Und die Datei hab ich jetzt so angepasst:

    Code:
    <?php
      require("./h.php");   
      require("DB.php"); 
     $dsn = "mysql://user:passwort@host/datenbank";$db = DB::connect($dsn);
      if (DB::isError($db)) { die ($db->getMessage('keine Verbindung')); }
    
    // Hier lege ich eine temporäre Datei an, die die Teams in einer zufälligen Reihenfolge enthält
       $query_1="
       create temporary table team_1
       select     
         username
       from liga
       order by rand() 
      ";
    
      $result_1 = $db->query($query_1);
      if (DB::isError($result_1)) { die($result_1->getMessage()); }
    
    
    
    //optional: Begrenzung der Spiele auf eine bestimmte Anzahl, da es sonst zu viele werden.
      $num = $db->getOne('select count(username) from team_1 ');
      print "$num Teamzahl<br>";
    
    
    
    // Anlegen der Ausgabetabelle. Die Halle und die Spielzeit muß man aber sinnvollerweise per Hand eingeben. So etwas kann kein Computer.
      $query_2="
       create table user
       select 
         trainer.userid as id,
         trainer.username as Team1,
         team_1.username as Team2        
       from liga,team_1 
       order by rand()   
       limit $num 
      ";
    
      $result_2 = $db->query($query_2);
      if (DB::isError($result_2)) { die($result_2->getMessage()); }
      
    ?>
    
    </body>
    </html>
    Wenn ich diese Datei aufrufe zeigt er mir dies an:
    1 Teamzahl
    DB Error: Object

    Wieso funktioniert der untere Teil mit dem anlegen der user tabelle etc.. nicht

    MfG
    Stormsam

  6. #21
    Registrierter Benutzer
    Registriert seit
    27.08.2002
    Beiträge
    337
    Oh sorry ich hab deinen Post irgendwie übersehen.

    Es war nur ein kleiner Fehler drin. Zweimal hast du den Tabllennamen in einer query falsch gehabt.
    Code:
    <?php
      require("./h.php");   
      require("DB.php");
      require("connect.php");  
    
      $db = DB::connect($dsn);
      if (DB::isError($db)) { die ($db->getMessage('keine Verbindung')); }
    
    print "<div ID='lay100'>";
    
       $query_1="
       create temporary table team_1
       select     
         username
       from liga
       order by rand() 
      ";
    
      $result_1 = $db->query($query_1);
      if (DB::isError($result_1)) { die($result_1->getMessage()); }
    
     
    //optional: Begrenzung der Spiele auf eine bestimmte Anzahl, da es sonst zu viele werden.
      $num = $db->getOne('select count(username) from team_1 ');
      print "$num Teamzahl<br>";
    
     $query_2="
       create table user
       select 
         liga.userid as id,
         liga.username as Team1,
         team_1.username as Team2        
       from liga,team_1 
       order by rand()   
       limit $num 
      ";
    
      $result_2 = $db->query($query_2);
      if (DB::isError($result_2)) { die($result_2->getMessage()); }
    ?>
    
    </body>
    </html>
    Ich glaub du gibst mir in Zukunft deine Tabellennamen samt Spaltennamen, dann können wir uns eine Menge Arbeit sparen.

    Der Code für Create-Table ist für faule Leute, die die Anfangstabelle user nicht per Hand erstellen wollen.

    In der zweiten Runde ist die Tabelle user aber schon da und du mußt erneut die Gegner auslosen. Dafür ist dann der Update-Code gedacht.

  7. #22
    Registrierter Benutzer
    Registriert seit
    09.12.2001
    Beiträge
    171
    hmmmm..... also der Skript hat beim erstein aufruf geklappt, doch zeigte er mit nur die Anzahl der Teams an und er erstellte keine Tabelle mit 2 Teams!

    Jetzt habe ich eine Tabelle: liga wo das drin steht:
    tabelle liga
    userid username userpass
    1 user pass

    er hat jetzt auch eine tabelle user erstellt:

    tabelle user
    id Team1 Team2
    1 user user

    wenn ich den skript jetzt noch mal ausführe kommt das:
    1 Teamzahl
    DB Error: Object

    was soll ich jetzt machen, damit er mir die Tabelle erstellt? Er sollte doch jetzt user und user neben einander schreiben Team1 und Team2
    Und was genau soll ich mit der Update Datei? Wenn ich die Update-Datei ausführe bekomme ich dies:
    DB Error: unknown error

    die update datei habe ich jetzt so angepasst:


    Code:
    <?php
      require("./h.php");   
      require("DB.php");
      $dsn = "mysql://mysql://dbo75885267:logging@db159.puretec.de/db75885267";$db = DB::connect($dsn);
      
      $db = DB::connect($dsn);
      if (DB::isError($db)) { die ($db->getMessage('keine Verbindung')); }
    
    print "<div ID='lay100'>";
    
    $i=0;
    $colid = $db->getCol('select id from user order by id');
    $col   = $db->getCol('select Team1 from user order by rand()');
               foreach ($col as $value) {			 	
    			  $sqlab = "update user set team2='$value' where id = '$colid[$i]' ;"; 
    			  $result = $db->query($sqlab);
    			  $i++;            
               } 
     
    print "</div>";
    ?>
    
    </BODY>
    </HTML>
    In der zweiten Runde ist die Tabelle user aber schon da und du mußt erneut die Gegner auslosen. Dafür ist dann der Update-Code gedacht.
    Was meinst du damit genau? Erstellt der update-code einfach neue Teams, also mischt er alle noch einmal oder wie funktioniert das?

    MfG
    Stormsam

  8. #23
    Registrierter Benutzer
    Registriert seit
    27.08.2002
    Beiträge
    337
    Es ist klar, daß sich das Script create Table nicht zweimal ausführen läßt.
    beim zweiten mal ist die Tabelle nämlich schon da.

    Tabelle user
    Spalten: id / Team1/Team2

    Bedenke: Es sind jetzt in der Usertabelle nicht alle Teams in der zweiten Spalte und dritten Spalte enthalten. Es werden Teams fehlen.
    Probier mal eine user-Tabelle hinzukriegen, in der alle Teams vorkommen;
    Ohne Zufall.
    Diese Tabelle ist wesentlich sinnvoller, weil alle Teams vorhanden sind.
    Als ich den Code für die Erstellung der User-Tabelle machte wußte ich noch nicht, was du vorhast.

    Um eine zufällige Reihenfolge in der User-Tabelle zu erhalten benutze das Updatescript.

    Um die Tabelle auf den Bildschirm zu schreiben verwende mein erstes Script.

    Dem ganzen Projekt fehlt eine klare Gliederung.
    Bevor man mit einer so großen Aufgabe beginnt, überlegt man sich alle Tabellen, die man braucht,
    stellt sie graphisch auf einem Blatt Papier dar und überlegt sich alle Spalten.
    Dann muß man sich über die Zuordnungen im klaren sein.

    Damit ist die halbe Arbeit schon getan.
    So blind wie wir hier programmieren kommt sicher nichts dabei heraus.
    Es fehlt jegliches Konzept. Aber es macht Spaß!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •