Ankündigung

Einklappen
Keine Ankündigung bisher.

Dropdownfilter - SQL Datenbank auslesen

Einklappen

Neue Werbung 2019

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

  • Dropdownfilter - SQL Datenbank auslesen

    Hallo,

    mein Name ist Kristian ich bin 31 Jahre alt und lebe seit meinem 20. Lebensjahr in Zagreb.

    Mit PHP habe ich erst vor kurzem angefangen und bin daher leider noch sehr unterbemittelt, aufgrund meiner Kenntnisse im SQL dachte ich es wäre einfacher...

    Folgendes Problem habe ich und hoffe auf Hilfe.

    Mithilfe von Dreamweaver habe ich Diese Website erstellt, die meinem anderen Hobby als "Basis" dienen soll.

    Wunsch: Ich filtriere die Daten die ich benötige mit einem Textfeld(ID und Spielername) + zusätzliche Dropdownfilter bei den anderen Daten(wobei sich wiederholende Daten einmalig auszuwählen sind).

    Traurige Realität: Ich habe einen funktionieren filter (Text eingabe)erstellt aber das Dropdownmenü will einfach nicht funktionieren. Ich kann nach einem Textfeld filtrieren und NUR wenn ich auch was eingegeben habe, funktioniert der Dropdownfilter. BEISPIEL: Sheik + CF = Emerson Sheik und Robbie Kean(einziger CF neben dem) werden angezeigt.

    Wobei ich Hilfe brauche: Ich würde gerne, dass ich auswählen kann ob nach dem Dropdown Feld gesucht werden soll oder nach der Texteingabe oder nach beidem gleichzeitig. Des weiteren hätte ich gerne das im Dropdownmenü jede Position einmalig angezeigt wird und es nicht mehrfache einträge der selben Position gibt.

    Könnte mich jemand bitte auf meinen Fehler im Code hinweisen?

    PHP-Code:
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      if (PHP_VERSION < 6) {
        $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_PSO_DB = 10;
    $pageNum_PSO_DB = 0;
    if (isset($_GET['pageNum_PSO_DB'])) {
      $pageNum_PSO_DB = $_GET['pageNum_PSO_DB'];
    }
    $startRow_PSO_DB = $pageNum_PSO_DB * $maxRows_PSO_DB;

    mysql_select_db($database_Bplaced, $Bplaced);
    $query_PSO_DB = "SELECT * FROM pso_db";
    $query_limit_PSO_DB = sprintf("%s LIMIT %d, %d", $query_PSO_DB, $startRow_PSO_DB, $maxRows_PSO_DB);
    $PSO_DB = mysql_query($query_limit_PSO_DB, $Bplaced) or die(mysql_error());
    $row_PSO_DB = mysql_fetch_assoc($PSO_DB);

    if (isset($_GET['totalRows_PSO_DB'])) {
      $totalRows_PSO_DB = $_GET['totalRows_PSO_DB'];
    } else {
      $all_PSO_DB = mysql_query($query_PSO_DB);
      $totalRows_PSO_DB = mysql_num_rows($all_PSO_DB);
    }
    $totalPages_PSO_DB = ceil($totalRows_PSO_DB/$maxRows_PSO_DB)-1;

    $queryString_PSO_DB = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      foreach ($params as $param) {
        if (stristr($param, "pageNum_PSO_DB") == false && 
            stristr($param, "totalRows_PSO_DB") == false) {
          array_push($newParams, $param);
        }
      }
      if (count($newParams) != 0) {
        $queryString_PSO_DB = "&" . htmlentities(implode("&", $newParams));
      }
    }
    $queryString_PSO_DB = sprintf("&totalRows_PSO_DB=%d%s", $totalRows_PSO_DB, $queryString_PSO_DB);

    $maxRows_PSO_DB = 30;
    $pageNum_PSO_DB = 0;
    if (isset($_GET['pageNum_PSO_DB'])) {
      $pageNum_PSO_DB = $_GET['pageNum_PSO_DB'];
    }
    $startRow_PSO_DB = $pageNum_PSO_DB * $maxRows_PSO_DB;

    //SPIELERSUCHE
    $colname_PSO_DB = "-1";

    mysql_select_db($database_Bplaced, $Bplaced);

    if (isset($_POST['btn_search'])) 
    { //Nur Suchergebnis
    $searchword = $_POST['txt_search'];
    $dropdown_posi = $_POST['Hauptposition'];
    $query_PSO_DB = "SELECT * FROM pso_db WHERE Spielername LIKE '%" .$searchword. "%' OR ID LIKE '%" .$searchword. "%' OR Hauptposition LIKE '%" .$dropdown_posi. "%'";
    }
    else //Zeigt alles an
    {
    $query_PSO_DB = "SELECT * FROM pso_db";
    }

    $query_limit_PSO_DB = sprintf("%s LIMIT %d, %d", $query_PSO_DB, $startRow_PSO_DB, $maxRows_PSO_DB);
    $PSO_DB = mysql_query($query_limit_PSO_DB, $Bplaced) or die(mysql_error());
    $row_PSO_DB = mysql_fetch_assoc($PSO_DB);

    if (isset($_GET['totalRows_PSO_DB'])) {
      $totalRows_PSO_DB = $_GET['totalRows_PSO_DB'];
    } else {
      $all_PSO_DB = mysql_query($query_PSO_DB);
      $totalRows_PSO_DB = mysql_num_rows($all_PSO_DB);
    }
    $totalPages_PSO_DB = ceil($totalRows_PSO_DB/$maxRows_PSO_DB)-1;
    ?>
    <style type="text/css">
    body,td,th {
        font-family: "Comic Sans MS", cursive;
        color: #00F;
    }
    body {
        background-color: #CCC;
    }
    </style>

    <form id="form1" name="form1" method="post" action="">
      <p>
        <label for="txt_search">Suche</label>
        <input type="text" name="txt_search" id="txt_search" />
      </p>
      <p>
        <label for="Hauptposition">Position</label>
        <select name="Hauptposition" size="1" id="Hauptposition">
         
          <?php
    do {  
    ?>
          <option value="<?php echo $row_PSO_DB['Hauptposition']?>"><?php echo $row_PSO_DB['Hauptposition']?></option>
          <?php
    } while ($row_PSO_DB mysql_fetch_assoc($PSO_DB));
      
    $rows mysql_num_rows($PSO_DB);
      if(
    $rows 0) {
          
    mysql_data_seek($PSO_DB0);
          
    $row_PSO_DB mysql_fetch_assoc($PSO_DB);
      }
    ?>
        </select>
     <p><input type="submit" name="btn_search" id="btn_search" value="Submit" /></p>
    </form>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <table border="3" align="center" cellpadding="10" cellspacing="5">
      <tr>
        <td align="center"><h4><em><strong>ID</strong></em></h4></td>
        <td align="center"><h4><em><strong>Spielername</strong></em></h4></td>
        <td align="center"><h4><em><strong>Alter</strong></em></h4></td>
        <td align="center"><h4><em><strong>Groesse(cm)</strong></em></h4></td>
        <td align="center"><h4><em><strong>Original_Team</strong></em></h4></td>
        <td align="center"><h4><em><strong>PSO Team</strong></em></h4></td>
        <td align="center"><h4><em><strong>Bewertung</strong></em></h4></td>
        <td align="center"><h4><em><strong>Gesamtstaerke</strong></em></h4></td>
        <td align="center"><h4><em><strong>Gehalt</strong></em></h4></td>
        <td align="center"><h4><em><strong>Sterne</strong></em></h4></td>
        <td align="center"><h4><em><strong>Klasse</strong></em></h4></td>
        <td align="center"><h4><em><strong>Mindestabloese</strong></em></h4></td>
        <td align="center"><h4><em><strong>Hauptposition</strong></em></h4></td>
        <td align="center"><h4><em><strong>Land</strong></em></h4></td>
        <td align="center"><h4><em><strong>Draftbar</strong></em></h4></td>
      </tr>
      <?php do { ?>
        <tr>
          <td><?php echo $row_PSO_DB['ID']; ?></td>
          <td><?php echo $row_PSO_DB['Spielername']; ?></td>
          <td><?php echo $row_PSO_DB['Alter']; ?></td>
          <td><?php echo $row_PSO_DB['Groesse(cm)']; ?></td>
          <td><?php echo $row_PSO_DB['Original_Team']; ?></td>
          <td><?php echo $row_PSO_DB['PSO Team']; ?></td>
          <td><?php echo $row_PSO_DB['Bewertung']; ?></td>
          <td><?php echo $row_PSO_DB['Gesamtstaerke']; ?></td>
          <td><?php echo $row_PSO_DB['Gehalt']; ?></td>
          <td><?php echo $row_PSO_DB['Sterne']; ?></td>
          <td><?php echo $row_PSO_DB['Klasse']; ?></td>
          <td><?php echo $row_PSO_DB['Mindestabloese']; ?></td>
          <td><?php echo $row_PSO_DB['Hauptposition']; ?></td>
          <td><?php echo $row_PSO_DB['Land']; ?></td>
          <td><?php echo $row_PSO_DB['Draftbar']; ?></td>
        </tr>
        <?php } while ($row_PSO_DB mysql_fetch_assoc($PSO_DB)); ?>
    </table>
    <p>
      <?php
    mysql_free_result
    ($PSO_DB);
    ?>
    </p>
    <p><a href="pso_datenbank.php">Alle anzeigen</a></p>
    <table border="0" align="center">
      <tr>
        <td><?php if ($pageNum_PSO_DB 0) { // Show if not first page ?>
          <a href="<?php printf("%s?pageNum_PSO_DB=%d%s"$currentPage0$queryString_PSO_DB); ?>">Erste Seite</a>
          <?php // Show if not first page ?></td>
        <td><?php if ($pageNum_PSO_DB 0) { // Show if not first page ?>
          <a href="<?php printf("%s?pageNum_PSO_DB=%d%s"$currentPagemax(0$pageNum_PSO_DB 1), $queryString_PSO_DB); ?>">Vorherige Seite</a>
          <?php // Show if not first page ?></td>
        <td><?php if ($pageNum_PSO_DB $totalPages_PSO_DB) { // Show if not last page ?>
          <a href="<?php printf("%s?pageNum_PSO_DB=%d%s"$currentPagemin($totalPages_PSO_DB$pageNum_PSO_DB 1), $queryString_PSO_DB); ?>">Naechste Seite</a>
          <?php // Show if not last page ?></td>
        <td><?php if ($pageNum_PSO_DB $totalPages_PSO_DB) { // Show if not last page ?>
          <a href="<?php printf("%s?pageNum_PSO_DB=%d%s"$currentPage$totalPages_PSO_DB$queryString_PSO_DB); ?>">Letzte Seite</a>
          <?php // Show if not last page ?></td>
      </tr>
    </table>
    <p>&nbsp;</p>
    Vielen Dank schon einmal.

    Gruss,
    Kristian

  • #2
    Code:
    where spielername like '%%' or
    Da wirst du schon unterschiedliche Querys brauchen wenn du nicht alle Felder immer berücksichtigen willst

    Außerdem unbedingt deine Eingaben validieren, besonders bevor du die an die DB schickst.

    Kommentar


    • #3
      1. Dein Code ist stark veraltet und einige Dinge sind sehr unelegant gelöst.
      2. Der Code greift auf ein Datenbankschema zu das du uns aber nicht lieferst. Beispieldaten wären ebenso hilfreich.

      Die zwei Punkte führen dazu das man deinen Ist-Stand schwer nachvollziehen kann bzw. mögliche Lösungsansätze testen kann. Meine Tipps wären vorerst die folgenden:
      1. Lies dich zu PDO und Pagination ein. Den bisherigen Code kann man wesentlich eleganter schreiben.
      2. Formuliere die SQL-Abfragen zuerst ohne PHP und dann vergleiche sie mit denen die dein Script produziert. Im schlimmsten Fall sieht deine Abfrage so aus:
      Code:
      SELECT * FROM pso_db WHERE Spielername LIKE '%%' OR ID LIKE '%%' OR Hauptposition LIKE '%%'
      anstatt, wie es "handgeschrieben" wäre, einfach:
      Code:
      SELECT * FROM pso_db

      Kommentar


      • #4
        @VampiRos: Die von dir verlinkte Website ist offline...

        Kommentar

        Lädt...
        X