ich sehe es einfach nicht

Alles, was PHP betrifft, kann hier besprochen werden.

ich sehe es einfach nicht

Postby sid1900 » 17. August 2004 10:56

Hallo,

ich habe mir ein Script zum Suchen in einer Datenbank gebastelt.
Das Script funzt soweit, nur das sich an der Stelle wo ihr die --> seht, die Ausgabe 12mal bei jedem Treffer wiederholt.
Kann mir jemand weiterhelfen, ich probier jetzt schon seit gut 2 Stunden *g*.


Code: Select all
<?
  include("db_verb.php");
?>

<html>
<head>
<title></title>

<link rel="stylesheet" type="text/css" href="style.css">

</head>
<body bgcolor="#FFFFFF">

<?
    //echo $such_op,"<br>";
    //echo $suche,"<br>";

    $suchen = "SELECT software.*, gruppe.*, status.* FROM software, gruppe, status WHERE $such_op LIKE '%$suche%' ORDER BY $such_op";
    //$suchen = "SELECT $such_op FROM software WHERE $such_op LIKE '%$suche%' ORDER BY $such_op";
    //echo $suchen;
    $suchen = mysql_query($suchen);

      echo "<table border='1' width='100%'>";
        echo "<tr background=bilder/bg_tab.jpg>";
    echo "<td width=10%> <a href='software.html?sort=DiskNr'> DiskNr </a></td>";
    echo "<td width=60%> <a href='software.html?sort=Titel'> Titel  </a></td>";
    echo "<td width=5%>  <a href='software.html?sort=Anzahl'> Anzahl </a></td>";
    echo "<td width=15%> <a href='software.html?sort=Gkenn'> Gruppe </a></td>";
    echo "<td width=10%> <a href='software.html?sort=Skenn'> Status </a></td>";
        echo "</tr>";

-->    while($row = mysql_fetch_object($suchen))
-->    {
-->      echo "<tr>";
-->      echo "<td>", $row->DiskNr, "</td>";
-->        echo "<td>", $row->Titel,"</td>";
-->      echo "<td> <div align=center>", $row->Anzahl,"</div></td>";
-->        echo "<td>", $row->bez,"</td>";
-->      echo "<td> <div align=center>",$row->s_bez,"</div></td>";
-->    echo "</tr>";
-->    }     

      echo "</table>";
?>

</body>
</html>
sid1900
 
Posts: 10
Joined: 04. June 2004 14:03

Postby Hanspeter Thöni » 17. August 2004 11:06

Nun, wenn du in mehreren Tabellen suchst, ohne einen Join zu definieren erhältst du als Output ein 'kartesisches Join'. Findet er also in 3 Tabellen je 5 Sätze bekommst du nicht 15 Sätze sondern (5x5x5) 125!

Entweder braucht es Joins (sofern es Beziehungen zwischen den Tabellen gibt) oder du benutzt ein UNION Select.

Gruss HP
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby sid1900 » 17. August 2004 11:27

Danke für die schnelle Antwort.

Hanspeter Thöni wrote:
Entweder braucht es Joins (sofern es Beziehungen zwischen den Tabellen gibt) oder du benutzt ein UNION Select.

Gruss HP


Aber was ist bitte ein UNION Select und "Ja" es gibt Beziehungen zw. den Tabellen. Die Tabelle software enthält die Fremdschlüssel Skenn und Gkenn aus anderen Tabellen der Datenbank.
Ein Beispiel wie man ran gehen müsste wäre nicht schlecht.
sid1900
 
Posts: 10
Joined: 04. June 2004 14:03

Postby Hanspeter Thöni » 17. August 2004 17:06

sid1900 wrote:Aber was ist bitte ein UNION Select und "Ja" es gibt Beziehungen zw. den Tabellen. Die Tabelle software enthält die Fremdschlüssel Skenn und Gkenn aus anderen Tabellen der Datenbank.
Ein Beispiel wie man ran gehen müsste wäre nicht schlecht.


Da du anscheinend mit SQL (noch) nicht allzu bewandert bist, wird es natürlich etwas schwierig.

Um ein brauchbares Beispiel zu liefern muss man:
1. Das Datenmodell kennen (Tabelle, Felder, Beziehungen)
2. Wissen was die Abfrage bringen soll.

Ansonsten kann ich dir nur empfehlen die Mysql-Doku Thema 'Select' und 'Join' zu studieren.

Gruss HP
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz


Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests