chrigu: doppelte ausgabe..

hallo zusammen,
folgendes such-skript für meine mp3-db gibt alle einträge doppelt aus, warum?

<body>

<form action="mp3search.php">
<table cellspacing="2" cellpadding="2" border="0">
<tr>
    <td>Interpret:</td>
    <td><input type="text" name="interpret" size="20"><br></td>
</tr>
<tr>
    <td>Titel:</td>
    <td><input type="text" name="titel" size="20"><br></td>
</tr>
<tr>
 <td><input type="submit" value="Suchen"></td>
</tr>
</table>
</form>

<?php

$host = "localhost";
$user = "root";
$passwort = "meinpasswort";
$dbname = "mp3";

$verbindung = mysql_connect($host, $user, $passwort);

if(!$verbindung)
{
 echo "Konnte nicht verbinden";
}

mysql_select_db($dbname, $verbindung);

$sql = "SELECT interpret,titel FROM songs WHERE interpret = '$interpret' OR titel LIKE '$titel' ORDER BY interpret";
$ergebnis = mysql_query($sql, $verbindung);

echo "<table>\n";

while($zeile = mysql_fetch_row($ergebnis))
{
 echo "<tr>";

for($i = 0; $i < mysql_num_fields($ergebnis); $i++)
  echo "<td>" . $zeile[$i] . "</td>";
  echo "</tr>\n";
}

echo "</table>\n";
mysql_free_result($ergebnis);

?>
</body>

  1. Hallo!

    echo "<tr>";
    for($i = 0; $i < mysql_num_fields($ergebnis); $i++)
      echo "<td>" . $zeile[$i] . "</td>";
      echo "</tr>\n";
    }

    Ich würde vielleicht schreiben:

    echo "<tr>";
    forach($zeile as $feld){
        echo "<td>" . $feld . "</td>";
    }
    echo "</tr>\n";

    vor allem das "</tr>" nicht jedesmal in der Schleife ausgeben ;-)

    Grüße
    Andreas

    1. kleiner Fehler:

      forach($zeile as $feld){

      foreach($zeile as $feld){

      Grüße
      Andreas

      1. kleiner Fehler:

        forach($zeile as $feld){
           foreach($zeile as $feld){

        Grüße
        Andreas

        danke für die tipps!
        andere frage: wie bringe ich mysql dazu nicht auf die gross und kleinschreibung bei der abfrage zu achten?

        1. also LIKE is schon case-un-sensitiv...
          ansonsten mit LCASE('string') also in dem fall => WHERE LCASE(interpret) = LCASE('$interpret')

        2. Hi!

          danke für die tipps!

          funktioniert´s denn wenigstens?

          andere frage: wie bringe ich mysql dazu nicht auf die gross und kleinschreibung bei der abfrage zu achten?

          http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#Case_Sensitivity_Operators

          Grüße
          Andreas

  2. Hi,

    folgendes such-skript für meine mp3-db gibt alle einträge doppelt aus, warum?
    $sql = "SELECT interpret,titel FROM songs WHERE interpret = '$interpret' OR titel LIKE '$titel' ORDER BY interpret";

    weil Du die Join-Bedingung vergessen hast.

    Cheatah

  3. Das Problem ist ein PHP Problem also das nächste mal lieber in einem PHP Forum stellen.
    Ich empfehle Dir www.phphomepage.de
    Gibs auch ein klassisches "Anfängerforum" wo man solche "einfachen" Fragen stellen kann!
    Die Ursache für die falsche Ausgabe liegt in der doppelten Schleife:
    Einmal while und einmal for Schleife die im Grund beide das gleiche bewirken!
    Du hast ja schon ein Array beim auslesen warum also so kompliziert?
    Wie gesagt gleiche Frage im PHP Forum da wird Dir umfassend geholfen
    Ich hab das Problem mal über die ID gelöst keine Ahnung ob es schön so ist!
    Hoffe dat geht so!Bin auch kein Profi

    $songs = mysql_query($sql,$verbindung );
       if (!$songs) die("Anfrage war nicht erfolgreich");{

    if ($nr || $nr=="0") {
       for($nr!=0;"$songs!=$nr; $songs=sql_fetch_array($zeilen));
            print "<H5>'$songs[interpret]'</h5>$songs[titel]<br><br>

    Denk aber dabei daran, dass Du die ID vom Datensatz nochauslesen mußt, also in der SQL Anweisung hinzufügen mußt.

    hallo zusammen,
    folgendes such-skript für meine mp3-db gibt alle einträge doppelt aus, warum?

    <body>

    <form action="mp3search.php">
    <table cellspacing="2" cellpadding="2" border="0">
    <tr>
        <td>Interpret:</td>
        <td><input type="text" name="interpret" size="20"><br></td>
    </tr>
    <tr>
        <td>Titel:</td>
        <td><input type="text" name="titel" size="20"><br></td>
    </tr>
    <tr>
    <td><input type="submit" value="Suchen"></td>
    </tr>
    </table>
    </form>

    <?php

    $host = "localhost";
    $user = "root";
    $passwort = "meinpasswort";
    $dbname = "mp3";

    $verbindung = mysql_connect($host, $user, $passwort);

    if(!$verbindung)
    {
    echo "Konnte nicht verbinden";
    }

    mysql_select_db($dbname, $verbindung);

    $sql = "SELECT interpret,titel FROM songs WHERE interpret = '$interpret' OR titel LIKE '$titel' ORDER BY interpret";
    $ergebnis = mysql_query($sql, $verbindung);

    echo "<table>\n";

    while($zeile = mysql_fetch_row($ergebnis))
    {
    echo "<tr>";

    for($i = 0; $i < mysql_num_fields($ergebnis); $i++)
      echo "<td>" . $zeile[$i] . "</td>";
      echo "</tr>\n";
    }

    echo "</table>\n";
    mysql_free_result($ergebnis);

    ?>
    </body>