select problem
Joan
- php
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
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
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
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
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
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
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
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
hallo,
LIKE '%$rubrik1%'
ist völlig in Ordnung, der Fehler liegt woanders. siehe extra-Posting
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