Ankündigung

Einklappen
Keine Ankündigung bisher.

Verzwickte IF abfrage

Einklappen

Neue Werbung 2019

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

  • Verzwickte IF abfrage

    Guten abend, habe da ein prob mit einer if abfrage und zwar, ich habe eine datenbankabfrage erstellt die Spiele aus einer datenbank ausgibt und vorher nach Plattform filter, klappt. Ich habe eine Abfrage geschrieben die dem übermittelten usernamen aus einer anderen Datenbank die Spiele die er hat auswählt, klappt. Und ich möchte das bei allen angezeigten datensätzen geprüft wird ob das spiel schon in der DB vorhanden ist. Bei der ersten datensatzzeile klappt es auch aber da die variable für den vergleich ausserhalb der wiederholung entsteht haben alle die gleiche ID zum vergleichen. Hoffe das wr irgendwie verständlich hier mal der code damit ihr euch einen überblick verschaffen könnt.

    PHP-Code:
    <?php require_once('Connections/local.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function 
    GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      
    $theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

      
    $theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
    "long":
        case 
    "int":
          
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
    "double":
          
    $theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
          break;
        case 
    "date":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
    "defined":
          
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      }
      return 
    $theValue;
    }
    }

    if (!
    function_exists("GetSQLValueString")) {
    function 
    GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      
    $theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

      
    $theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
    "long":
        case 
    "int":
          
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
    "double":
          
    $theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
          break;
        case 
    "date":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
    "defined":
          
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      }
      return 
    $theValue;
    }
    }

    $currentPage $_SERVER["PHP_SELF"];

    $maxRows_spieleliste 50;
    $pageNum_spieleliste 0;
    if (isset(
    $_GET['pageNum_spieleliste'])) {
      
    $pageNum_spieleliste $_GET['pageNum_spieleliste'];
    }
    $startRow_spieleliste $pageNum_spieleliste $maxRows_spieleliste;

    $colname_spieleliste "-1";
    if (isset(
    $_GET['Plattform'])) {
      
    $colname_spieleliste $_GET['Plattform'];
    }
    mysql_select_db($database_local$local);
    $query_spieleliste sprintf("SELECT * FROM spieledb WHERE Plattform = %s"GetSQLValueString($colname_spieleliste"text"));
    $query_limit_spieleliste sprintf("%s LIMIT %d, %d"$query_spieleliste$startRow_spieleliste$maxRows_spieleliste);
    $spieleliste mysql_query($query_limit_spieleliste$local) or die(mysql_error());
    $row_spieleliste mysql_fetch_assoc($spieleliste);

    if (isset(
    $_GET['totalRows_spieleliste'])) {
      
    $totalRows_spieleliste $_GET['totalRows_spieleliste'];
    } else {
      
    $all_spieleliste mysql_query($query_spieleliste);
      
    $totalRows_spieleliste mysql_num_rows($all_spieleliste);
    }
    $totalPages_spieleliste ceil($totalRows_spieleliste/$maxRows_spieleliste)-1;
    $varp $row_user['id'];

    $colname_user "-1";
    if (isset(
    $_GET['user'])) {
      
    $colname_user $_GET['user'];
    }
    mysql_select_db($database_local$local);
    $query_user sprintf("SELECT * FROM osdate_user WHERE username = %s"GetSQLValueString($colname_user"text"));
    $user mysql_query($query_user$local) or die(mysql_error());
    $row_user mysql_fetch_assoc($user);
    $totalRows_user mysql_num_rows($user);
    $test $row_spieleliste['ID'];
    mysql_select_db($database_local$local);
    $query_Recordset1 "SELECT user_games_db.GameID, osdate_user.username FROM user_games_db, osdate_user WHERE osdate_user.id = user_games_db.PlayerID AND user_games_db.GameID = '$test' AND osdate_user.username = 'skycryer'";
    $Recordset1 mysql_query($query_Recordset1$local) or die(mysql_error());
    $row_Recordset1 mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 mysql_num_rows($Recordset1);

    $queryString_spieleliste "";
    if (!empty(
    $_SERVER['QUERY_STRING'])) {
      
    $params explode("&"$_SERVER['QUERY_STRING']);
      
    $newParams = array();
      foreach (
    $params as $param) {
        if (
    stristr($param"pageNum_spieleliste") == false && 
            
    stristr($param"totalRows_spieleliste") == false) {
          
    array_push($newParams$param);
        }
      }
      if (
    count($newParams) != 0) {
        
    $queryString_spieleliste "&" htmlentities(implode("&"$newParams));
      }
    }
    $queryString_spieleliste sprintf("&totalRows_spieleliste=%d%s"$totalRows_spieleliste$queryString_spieleliste);
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    <style type="text/css">
    <!--
    .Stil1 {
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 24px;
    }
    -->
    </style>
    </head>

    <body>
    <span class="Stil1"><?php echo $row_spieleliste['Plattform']; ?></span> zur Zeit aktiv <?php echo $row_user['username']; ?> mit ID <?php echo $row_user['id'];?><br />
    <br />
    <table width="660" border="0" cellspacing="2">
      <tr>
        <td>Spielname</td>
        <td>Plattform</td>
        <td>Genre</td>
        <td>Entwickler</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <?php do { ?>
        <tr>
          <td><?php echo $row_spieleliste['Spielname']; ?></td>
          <td><?php echo $row_spieleliste['Plattform']; ?></td>
          <td><?php echo $row_spieleliste['Genre']; ?></td>
          <td><?php echo $row_spieleliste['Entwickler']; ?></td>
          <td>crea match</td>
          <td>want<?php echo $row_spieleliste['ID']; ?></td>
          <td>in list<?php echo $row_Recordset1['GameID']; ?></td>
          <td>
    <?php
    if ($row_spieleliste['ID']==$row_Recordset1['GameID']) {
    echo 
    "hey das hast du schon";
    } else {
        echo 
    "das hast du noch nicht";
    }
    ?></td>
          <td>&nbsp;</td>
        </tr>
        <?php } while ($row_spieleliste mysql_fetch_assoc($spieleliste)); ?>
    </table>
    </body>
    </html>
    <?php
    mysql_free_result
    ($spieleliste);

    mysql_free_result($user);

    mysql_free_result($Recordset1);
    ?>

  • #2
    Zitat von schimanski Beitrag anzeigen
    Hoffe das wr irgendwie verständlich
    Wenn du ein paar Satzzeichen mehr und gelegentlich die Shifttaste benutzen würdest, wäre es wahrscheinlich verständlicher. Aber liess doch einfach selber deinen Text nochmals
    Und wenn du den Code auf die wesentlichen Teile beschränken, und anständig formatieren würdest, dann würde ihn vielleicht jemand ansehen. Spätestens wenn ich zwei direkt übereinader stehende, schliessende Klammern sehe, ist bei mir Ende mit Code anschauen. Und ich denke, da bin ich nicht der einzige.
    Gruss
    L

    Kommentar


    • #3
      Sorry aber ich bin noch ziehmlich am anfang.

      Ich stelle meine frage mal anders ist vielleicht auch leichter,
      wie erstelle ich einen array das alle datensätze einer abfrage erhält ohne jeden Datensatz einzeln zuweisen zu müssen? Und wie frage ich es wieder ab?

      Also habe eine Tabelle die nach dem auswerten die folgenden werte hat.

      ID GameID
      1 5
      2 7
      3 6
      4 4
      5 1

      Habe einen sich wiederholenden bereich einer abfrage wo die GameID in jede zeile soll.

      Hoffe es ist jetzt möglich mich zu verstehen den code werde ich nochmal korrigieren.

      Kommentar


      • #4
        wie erstelle ich einen array das alle datensätze einer abfrage erhält ohne jeden Datensatz einzeln zuweisen zu müssen? Und wie frage ich es wieder ab?
        PHP-Code:
        while($row mysql_fetch_assoc($Recordset1))
        {
          
        // Alle abgefragten Datensätze werden nacheinander durchgegangen
          // hier enthält $row immer den aktuellen Datensatz, damit kannst du machen was du willst ;)

        Kommentar


        • #5
          Ich weiß ich soll selber lesen aber irgendwie fehlt mir noch das verständis und deshalb hoffe ich die frage ist OK.

          die while abfrage kommt dann über den wiederholeden bereich oder in diesen?

          habe mir die beispiele auf php.net angesehen aber komme meinem Prob damit nicht näher. ich habe eine select abfrage die immer den passenden datensatz aus der einen tabelle mit dem gerade in der zeile aktiven datensatz vergleichen soll um dann etwas auszuführen. Damit die abfrage den passenden datensatz erhält filtert er nach dem user der gerade aktiv ist. Da die Variable aber fest ist wird es nur einmal gelesen - das funktioniert. Deshalb wohl besser mit array oder eben der while schleife.

          Ich wäre dir wirklich dankbar wenn du mir nen kurzen beispielcode posten oder verlinken könntest damit das mit der datenbankabfrage und der ausgabe klappt. Habe einfach noch zu wenig erfahrung damit.

          Kommentar


          • #6
            Also ich versteh nicht was du meinst und wo dein Problem ist und deinen Code da oben lese ich mir auch nicht durch, höchstens wenn du mir die relevante Problemstelle kopierst.

            Gruß
            Cy

            Kommentar


            • #7
              @schimanski sag mal der code oben ist doch irgendwie zusammenkopiert

              zweimal hintereinander:
              if (!function_exists("GetSQLValueString")) {
              function
              GetSQLValueString


              zweimal
              mysql_select_db($database_local, $local);

              Füg mal ein paar anständige kommentare in den code ein so dass der leser auch weiss was Du wo machen möchtest, dann kannst Du auch mal referenzieren auf den code, den Du ändern willst...

              Kommentar


              • #8
                das ist meine wichtige abfrage hier wird dann der user gefiltert der in der url übergeben wird und übrig bleiben noch die ids der spiele die dieser user hat.

                PHP-Code:
                $query_Recordset1 "SELECT user_games_db.GameID, osdate_user.username FROM user_games_db, osdate_user WHERE osdate_user.id = user_games_db.PlayerID AND user_games_db.GameID = '$test' AND osdate_user.username = 'skycryer'"
                und dies ist meine abfrage die die daten abruft und mit den daten aus Recordset1 vergleicht. Die abfrage heißt spielename und beinhaltet Spielname, Genre, Plattform.

                PHP-Code:
                <span class="Stil1">
                <table width="660" border="0" cellspacing="2">
                  <tr>
                    <td>Spielname</td>
                    <td>Plattform</td>
                    <td>Genre</td>
                    <td>Entwickler</td>
                  </tr>
                  <?php do { ?>
                    <tr>
                      <td><?php echo $row_spieleliste['Spielname']; ?></td>
                      <td><?php echo $row_spieleliste['Plattform']; ?></td>
                      <td><?php echo $row_spieleliste['Genre']; ?></td>
                      <td><?php echo $row_spieleliste['Entwickler']; ?></td>
                      <td>crea match</td>
                      <td>want<?php echo $row_spieleliste['ID']; ?></td>
                      <td>in list<?php echo $row_Recordset1['GameID']; ?></td>
                      <td>
                <?php
                if ($row_spieleliste['ID']==$row_Recordset1['GameID']) {
                echo 
                "hey das hast du schon";
                } else {
                    echo 
                "das hast du noch nicht";
                }
                ?></td>
                      <td>&nbsp;</td>
                    </tr>
                    <?php } while ($row_spieleliste mysql_fetch_assoc($spieleliste)); ?>
                Ist zwar mit while aber das klappt nur für spieleliste. Oder muss ich etwa nur das unter den vorhanden whilecode schreiben

                PHP-Code:
                while ($row_recordset1 mysql_fetch_assoc($recordset1)); 

                Kommentar


                • #9
                  Ich programmiere deinen Code jetzt mal in einfach nach:

                  Dieses Beispiel hat eine Rechte-Tabelle (Tabelle 1) mit id und name des Rechtes. Tabelle 2 besteht aus id_recht und id_user (Beziehungstabelle).

                  PHP-Code:
                  $userid 5// oder wo auch immer die userid her kommt

                  // Überschriften:
                  echo "<table><tr><td>Recht</td><td>Besitz</td></tr>";

                  // Alle Datensätze von Tabelle 1 und (falls existiert) den zugehörigen aus Tabelle 2
                  $sql "SELECT t1.name,t2.id_user FROM t1 LEFT JOIN t2 ON t1.id = t2.id_recht AND t2.id_user = $userid WHERE t2.id_user = $userid OR t2.id_user IS NULL";
                  $qry mysql_query($sql) or die(mysql_error());
                  while(
                  $now mysql_fetch_assoc($qry))
                  {
                    echo 
                  "<tr>";
                    echo 
                  "<td>".$now["name"]."</td>";
                    echo 
                  "<td>";
                    if(
                  $now["id_user"] > 0) echo "Ja";
                    else echo 
                  "nein";
                    echo 
                  "</td></tr>";
                  }
                  echo 
                  "</table>"
                  Falls du da was nicht verstehen solltest kannst du im Manual nachschlagen und zur Not (!!!) auch hier nachfragen

                  Kommentar


                  • #10
                    Danke für den Code hat mir sehr geholfen. Hab es meinen bedürfnissen angepasst und es läuft wunderbar. Aber ein Prob habe ich doch noch was ich nicht gelöst bekomme. Und zwar möchte ich das nur daten angezeigt werden die einer zweiten variable stehen.

                    habe als code "spieledb.Plattform = $plattform" kenne das eigentlich so das ich das in den WHERE bereich schreiben muss aber das gibt immer fehler, hab den jetzt leider nicht da ist aber irgendwas mit COLUMN error gewesen.

                    Kommentar


                    • #11
                      Du musst schon mit mehr Infos rausrücken...

                      Kommentar


                      • #12
                        Also dies hier ist die abfrage

                        PHP-Code:
                        $sql "SELECT spieledb.Spielname, spieledb.Genre, spieledb.Plattform, user_games_db.PlayerID FROM spieledb LEFT JOIN user_games_db ON spieledb.id = user_games_db.GameID  AND user_games_db.PlayerID = $userid WHERE user_games_db.PlayerID = $userid OR user_games_db.PlayerID IS NULL ORDER BY spieledb.Spielname ASC";
                        $qry mysql_query($sql) or die(mysql_error()); 
                        Und dies sind die Variablen - die $userid wird schon genutzt und klappt jetzt muss noch die $plattform variable rein damit es nur die rausfiltert die die gleiche plattform haben.

                        PHP-Code:
                        $userid =  $row_Recordset1['id'];
                        $plattform =  $row_Recordset1['Plattform']; 
                        bekomme aber die abfrage nicht zum laufen mit dem filter

                        ich weiß einfach nicht genau wo das hin muss wenn es überhaupt richtig ist.

                        spieledb.Plattform = $plattform

                        Kommentar


                        • #13
                          fehlt noch eine Info oder hast du nur noch keine Zeit gehabt zu antworten?

                          Kommentar


                          • #14
                            Ja wie wärs mal mit ner vernünftigen Erklärung? detaillierter Ist/Sollzustand

                            Kommentar


                            • #15
                              Hab ich doch schon gesagt, die abfrage klappt, es werden alle datensätze angezeigt und die datensätze die in der user_games_db zur userid passen werden seperat gekennzeichnet.

                              Ich möchte jetzt aber noch das aus der spieledb nur die datensätze angezeigt werden die dem feld spieledb.plattform = $plattform sind

                              Kommentar

                              Lädt...
                              X