Joan: select problem

Hallöchen,

ich hab da ein kleines problem mit meinem select.

$auswahl = mysql_query ("SELECT rubrik FROM kunden WHERE rubrik LIKE '%$rubrik1%'");

so sieht das ganze aus.
wenn ich "$auswahl" dann ausgeben möchte kommt nichts.
ich nehme mal an, dass ich die select anweisung falsch geschrieben habe.

zur erklärung: rubrik ist mein feld in der datenbank und rubrik1 ist der name des feldes in meinem formular wo die infos für die abfrage her kommen.

war das verständlich? wenn nicht, dann schreib ich es auch nocheinmal genauer.

erstmal danke,
joan

  1. Hallöchen,

    hallo auch

    ich hab da ein kleines problem mit meinem select.

    $auswahl = mysql_query ("SELECT rubrik FROM kunden WHERE rubrik LIKE '%$rubrik1%'");

    in $auswahl steht nur die Id oder so was , ob die abfrage erfolgreich war oder nicht...
    mit $daten = mysql_fetch_row($auswahl)* dürfest du vorwärts kommen, dann steht in $daten ein assoziatives array deiner daten

    *bin nicht ganz sicher, aber so ähnlich heisst er, arbeite selbst mit postgresql, sorry

    bitte

    erstmal danke,
    joan

    romy

  2. ich will mal einen größeren abschnitt des code reinstellen, denn ich glaube, dann ist das ganze besser zu verstehen.

    $result = mysql_query("SELECT * FROM kunden");
     $idk_num = mysql_num_rows($result);
     $anz = mysql_num_fields($result);

    echo "<table width=90% border=1 cellpadding='2' cellspacing='2'>";
      echo "<tr bgcolor=#FFFFFF>";
     for($i=0;$i<$anz-1;$i++)
     { echo "<th>";
       echo mysql_field_name($result,$i);
       echo "</th>";
     }
       echo "</tr>";

    $auswahl = mysql_query ("SELECT rubrik FROM kunden WHERE rubrik LIKE '%$rubrik1%'");
     $daten = mysql_fetch_array($auswahl);
     $zahl = mysql_num_rows($auswahl);
     echo "$zahl Datensätzte.";

    $i=0;
     $j=0;
     while ($zahl>$i && $j<20)
     { while($row = mysql_fetch_array($auswahl))
       { echo "<td>";
         echo $row['idk'];
         echo "</td><td>";
         echo $row['name'];
         echo "</td><td>";
         echo $row['vorname'];
         echo "</td><td>";
         echo $row['firma'];
         echo "</td><td>";
         echo $row['str'];
         echo "</td><td>";
         echo $row['hnr'];
         echo "</td><td>";
         echo $row['ort'];
         echo "</td><td>";
         echo $row['plz'];
         echo "</td>";
      }
      ++$i;
      ++$j;
     }
    echo "</table>;
    }

    ich hoffe, dass das problem besser zu verstehen ist.

    nochmal sdanke für jede hilfe.
    joan

    1. ich hoffe, dass das problem besser zu verstehen ist.

      ja (wollte dich nicht für blöd verkaufen, klang so als obs dein problem gewesen wäre) sorry

      falls es wirklich an der anweisung hängt, schreib sie gesondert in einen string und schreibe den in die mysql_query funktion
      ich denke die probleme gibt es hiermit '%$blabla%'

      $sql = "select * from from blabla where blabla=%".$blabla."%";
      mysql_query($sql);

      wenn es immer noch nicht geht, lass dir ausgeben wie der sql-String nach dem einsetzen der variablen aussieht und gucke konkret wo der fehler leigen könnte

      nochmals bitte

      nochmal sdanke für jede hilfe.
      joan

      romy

      1. ich hoffe, dass das problem besser zu verstehen ist.
        ja (wollte dich nicht für blöd verkaufen, klang so als obs dein problem gewesen wäre) sorry

        ich hab mich auch nicht für dumm verkauft gefühlt.
        Hab nur festgestellt, dass aus meinen paar zeilen, das konkrete problem nicht hervor geht. aus diesem grund hab ich den zusatz reingestellt.

        joan

        1. ich hab mich auch nicht für dumm verkauft gefühlt.
          Hab nur festgestellt, dass aus meinen paar zeilen, das konkrete problem nicht hervor geht. aus diesem grund hab ich den zusatz reingestellt.

          ok, bin ich ja beruhigt

          gehts jetzt???

          romy

          joan

          1. ich denke auch, dass es an dem '%$rubrik1' liegt.
            aber ich weiß auch nicht, wie ich es anders schreiben soll und die methode, die du mir vorgeschlagen hast, hilft auch nicht.
            er schmeißt mir immer nur den tabellenkopf raus, den einzigen unterschied den er da macht, ist das er einmal alles senkrecht und einmal waagerecht ausgibt.

            joan

            1. ich denke auch, dass es an dem '%$rubrik1' liegt.
              aber ich weiß auch nicht, wie ich es anders schreiben soll und die methode, die du mir vorgeschlagen hast, hilft auch nicht.
              er schmeißt mir immer nur den tabellenkopf raus,

              den einzigen unterschied den er da macht, ist das er einmal alles senkrecht und einmal waagerecht ausgibt.

              was ausgibt, den tabellenkopf???

              verstehe ich nicht wirklich, aber interessant wäre mal was nun drinsteht in der variable sql, wenn du es so wie ich gemacht hast
              vielleicht müssen zB noch anführungszeichen in den string

              LIKE "%.$rubrik1."%" so in etwa ???

              joan

              1. hallo,

                LIKE '%$rubrik1%'

                ist völlig in Ordnung, der Fehler liegt woanders. siehe extra-Posting

    2. Hallo,

      Dein Problem ist folgendes:

      $auswahl = mysql_query ("SELECT rubrik FROM kunden WHERE rubrik LIKE '%$rubrik1%'");

      du wählst also nur die Spalte rubrik aus.

      $daten = mysql_fetch_array($auswahl);
      $zahl = mysql_num_rows($auswahl);

      das funktioniert.

      echo "$zahl Datensätzte.";

      das haut er dir mitten in deine Tabellenstruktur (was der Browser damit macht, ist Glückssache)

      $i=0;
      $j=0;
      while ($zahl>$i && $j<20)

      { while($row = mysql_fetch_array($auswahl))

      hier geht dein erster gefundenener Datensatz verloren. Der steht nämlich schon in $daten.

      Deine Daten sollen wohl in Tabellenzeilen, die musst du aber in <tr>...</tr>  einschließen.

      { echo "<td>";
           echo $row['idk'];
           echo "</td><td>";
           echo $row['name'];
           echo "</td><td>";
           echo $row['vorname'];
           echo "</td><td>";
           echo $row['firma'];
           echo "</td><td>";
           echo $row['str'];
           echo "</td><td>";
           echo $row['hnr'];
           echo "</td><td>";
           echo $row['ort'];
           echo "</td><td>";
           echo $row['plz'];
           echo "</td>";
        }

      Diese ganzen Spalten kennt er nicht, da sie nicht mit SELECTiert wurden!

      btw.  die echos kannst du auch in eine Zeile schreiben.

      ++$i;
        ++$j;

      Wozu brauchst du zwei Zähler? in $i und $j steht ja immer das gleiche!

      }
      echo "</table>;
      }

      Scheinbar möchtest du nur max 20 Datensätze ausgeben. Dann hol dir doch einfach nur soviele aus der DB  mit LIMIT 0,20 , d.h. ab dem ersten Datensatz (index 0) 20 Datensätze suchen

      ALSO

      auswahl = mysql_query ("SELECT * FROM kunden WHERE rubrik LIKE '%$rubrik1%' LIMIT 0,20");

      $zahl = mysql_num_rows($auswahl);

      { while($row = mysql_fetch_array($auswahl))
         echo "<tr><td>";
          echo $row['idk'];
          echo "</td><td>";
          echo $row['name'];
          echo "</td><td>";
          echo $row['vorname'];
          echo "</td><td>";
          echo $row['firma'];
          echo "</td><td>";
          echo $row['str'];
          echo "</td><td>";
          echo $row['hnr'];
          echo "</td><td>";
          echo $row['ort'];
          echo "</td><td>";
          echo $row['plz'];
          echo "</td></td>";
       }
      echo "</table>;

      das mit den echos (s.o) hab ich nicht geändert.

      Dein erstes SELECT kannst du dir auch sparen, da du die Spaltennamen auch bei der zweiten Abfrage mitbekommst.

      Schönen Gruß aus HH