Abfrage gefiltert und alle

Biki

Grünschnabel
Hallo zusammen,

ich verzweifle gerade, weil ich einfach zu blöd dafür bin.
Ich möchte auf einer Seite Daten abfragen und zwar beim öffnen zunächst alle und dann soll durch ein Formular die Abfrage gefiltert werden.
Mein Problem ist nun folgendes:
Ich kann alle Daten anzeigen lassen und ich kann die Daten per Formularvariable in Kategorien anzeigen lassen.
Beides zusammen kriege ich einfach nicht hin.

Biki
 
Damit kann ich die Daten sortiert anzeigen lassen.
Aber der Wert bei Formularelement A-Z mit % als Platzhalter funktioniert nicht.
Code:
<?php require_once('../Connections/bild.php'); ?>
<?php
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;
}
}

$colname_firmen = "-1";
if (isset($_POST['kat'])) {
  $colname_firmen = $_POST['kat'];
}
mysql_select_db($database_bild, $bild);
$query_firmen = sprintf("SELECT * FROM handwerker WHERE kategorie = %s ORDER BY name ASC", GetSQLValueString($colname_firmen, "text"));
$firmen = mysql_query($query_firmen, $bild) or die(mysql_error());
$row_firmen = mysql_fetch_assoc($firmen);
$totalRows_firmen = mysql_num_rows($firmen);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Unbenanntes Dokument</title>
<link href="him.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="container">

<div id="mainContent">
  <div class="main">
  <div class="sidebarL" >
  <div class="side">
    <h3>Kategorien</h3>
    <form action="index.php" method="post" name="katt">
      <p>
        <label>
          <input name="kat" type="radio" id="kat_0" value="%">
          AZ</label>
        <br>
        <label>
          <input name="kat" type="radio" id="kat_1" value="Handwerk">
          Handwerk</label>
        <br>
        <label>
          <input type="radio" name="kat" value="Material" id="kat_1">
          Material</label>
        <br>
        <br>
        <label>
          <input type="radio" name="kat" value="Garten" id="kat_3">
          Garten</label>
        <br>
      </p>
      <p>
        <input type="submit" name="button" id="button" value="Sortieren">
      </p>
    </form>
    </div>
  </div>
  <div class="sidebarR">
  <div class="side">
    <p>Hier weiss ich noch nicht, was da hinkommen soll.</p>
    <p>Hier weiss ich noch nicht, was da hinkommen soll.</p>
    <p>Hier weiss ich noch nicht, was da hinkommen soll.</p>
    <p>Hier weiss ich noch nicht, was da hinkommen soll.</p>
    </div>
  </div>
<h2 align="center">hier brauchen wir erstmal text.
</h2>
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis. Nam blandit quam ut lacus.</p>
    <p>Quisque ornare risus quis ligula. Phasellus tristique purus a augue condimentum adipiscing. Aenean sagittis. Etiam leo pede, rhoncus venenatis, tristique in, vulputate at, odio. Donec et ipsum et sapien vehicula nonummy. Suspendisse potenti. Fusce varius urna id quam. Sed neque mi, varius eget, tincidunt nec, suscipit id, libero.</p>
    <p>H2-Überschrift</p>
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis. Nam blandit quam ut lacus. Quisque ornare risus quis ligula. Phasellus tristique purus a augue condimentum adipiscing. Aenean sagittis. Etiam leo pede, rhoncus venenatis, tristique in, vulputate at, odio.</p>
    <p>&nbsp; </p>
    </div>
    <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td valign="top">
    <div>
      <?php do { ?>
      <div class="card">
        <div class="vcard"><?php echo $row_firmen['name']; ?><br>
          <?php echo $row_firmen['bild']; ?></div>
      </div>
      <?php } while ($row_firmen = mysql_fetch_assoc($firmen)); ?>
      </div>
      </td>
  </tr>
</table>&nbsp;
<!-- end #mainContent --></div>
<!-- end #container --></div>
  <div id="footer">
    <p>Impressum</p>
  <!-- end #footer --></div>
</body>
</html>
<?php
mysql_free_result($firmen);
?>
 
Hallo,
ich hoffe du meinst diesen Bereich:
PHP:
<?php

## ..... ##
mysql_select_db($database_bild, $bild);
$query_firmen = sprintf("SELECT * FROM handwerker WHERE kategorie = %s ORDER BY name ASC", GetSQLValueString($colname_firmen, "text"));
$firmen = mysql_query($query_firmen, $bild) or die(mysql_error());
$row_firmen = mysql_fetch_assoc($firmen);
$totalRows_firmen = mysql_num_rows($firmen);

##.....##
?>

Du hast in deinem Code folgendes stehen:
PHP:
$colname_firmen = "-1";
if (isset($_POST['kat'])) {
  $colname_firmen = $_POST['kat'];
}

Würde bedeuten, wenn das Formular noch nicht gesendet wurde, würde in der Variable $colname_firmen der Wert "-1" stehen. Gibt es diesen auch in der Datenbank? Weil ein Eintrag mit -1, da bin ich erstmal skeptisch.

Viele Grüße
 
Hi Splater,

da hast du natürlich recht - den Wert gibt es nicht.
Auch da müsste ein "Universalplatzhalter" stehen - genau wie bei dem Wert für AZ. Mit % funktioniert es nicht.

Schöne Grüße
Biki
 
Hi,

ersetzte in der SQL Anfrage mal "WHERE kategorie = %s" durch "WHERE kategorie LIKE %s", dann sollte das mit dem % funktionieren :)

Gruß
BK
 
Zurück