Hallo.
Ich habe verschiedene mysql Abfragen.
diese sehen so aus:
$a[$d]=mysql_query("select * from tabelle where text like \'%$searchstring%\'",$db);
so. nun laufen diese alle in einer for schleife und einer while schleife ab:
for($i=0;$i {
while($zeile=mysql_fetch_object($a[$i]))
{
...
also : die schleife durchläuft die abfrage mit mehreren Results also die schleife fragt mehrere
tabellen ab.
so. nun kann es sein, dass eine tabelle ein ergebnis enthält, eine andere nicht.
nun will ich eine ausgabe machen, wie "Keine Ergebnisse" wenn KEINE Tabelle
einen Datensatz zurückgibt, aber nur dann, nicht wenn 10 keinen zurückgeben und
1 tabelle einen zurückgibt, also wirklich nur, wenn nichts gefunden wird.
So habe ich das versucht:
$alle_ergebnisse = mysql_num_rows($a[$i]);
if($alle_ergebnisse == 0) ....
aber das geht nicht, dann gibt er für die 10 tabellen aus, er habe kein Ergebnis gefunden, und die 1 findet dann ein ergebnis
ich hoffe jemand versteht das problem
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
warum fragst du nicht einfach alle tabellen auf einmal ab?
SELECT tabelle1.feld1,tabelle2.feld2,...,tabelleN.feldN FROM tabelle1,tabelle2,...,tabelleN where tabelle1.feld1 ...
dann dürfte es auch mit dem count(*) funktionieren, falls ich dein problem richtig verstanden habe.
for($i=0;$i [...]
{
$ergebnisse += mysql_num_rows($a[$i]);
[...]
while($zeile=mysql_fetch_object($a[$i]))
[...]
{
if($ergebnisse=0){echo 'Nix gefunden';}
Gibt es eigentlich einen Besonderen Grund alle 10 Suchergebnisse gleichzeitig im Speicher zu halten? Kann man doch auch wunderbar nacheinander abarbieten...
CU Borlander
denke borlanders vorschlag sollte gehen, aber ich kann nicht alle tabellen gleichzeitig abfrage, weil die andere spalten haben, sie sind nicht alle gleich aufgebaut, brauche ich in der Tabelle1 die spalte TEXT, so brauche ich in Tabelle2 die Spalte Gerburtsdatum also daher muss ich alle abfragen
ob die spalten gleich sind oder nicht ist absolut egal bei einer abfrage über mehrere tabellen, du kannst auch aus einer tabelle 20 spaltenwerte und aus einer anderen nur einen holen, das interessiert nicht.
wie macht man das denn genau? gibs im netz ein beispiel? möglichst ein vollständiges wie zb. eine vollständige select abfrage?
Was genau willst Du denn abfragen?
Wenn ich das richtig verstanden habe sind deine Abfragen alle ähnlich? Dann zieh die Abfrage selbst mit in die Schleife, dann benötigst Du nur eine Ergebnisvariable und nicht gleich ein ganzes Array.
gibs im netz ein beispiel? möglichst ein vollständiges wie zb. eine vollständige select abfrage?
Such mal nach SQL im Netz, oder lade Dir die Refrenz von der MySQL-Seite.
CU Borlander
Hallo, ich habe eine ähnliche Suchabfrage auf einer meiner seiten allerdings nur mit 2 Tabellen, bei borlanders vorschlag zeigt er dann allerdings folgendes an:
wird in Tabelle 1 ein ergebnis gefunden zu einem suchstring, so zeigt er das ergebnis an, doch für tabelle 2 wo zum beispiel kein ergebnis gefunden wird, zeigt er dann an, dass kein ergebnis gefunden wird. ich weiss nicht ob er das so wollte, aber er schrieb
nun will ich eine ausgabe machen, wie "Keine Ergebnisse" wenn KEINE Tabelle
einen Datensatz zurückgibt, aber nur dann, nicht wenn 10 keinen zurückgeben und
1 tabelle einen zurückgibt, also wirklich nur, wenn nichts gefunden wird.
ich würde das auch so wie X lösen aber ich weiss nicht was noch dranhängt an deinem suchstring. allerdings würde mich das Beispiel von Borlander interessieren
Ok, habe etwas rumprobiert um mal das Beispiel von Borlander zu kapieren. Es war der Fehler meiner Benennung der Variablen.
ich habe das also oder würde das demnach also so machen:
ergebnisse = 0;
for($i=0;$i [...]
{
$ergebnisse_ += mysql_num_rows($a[$i]);
[...]
while($zeile=mysql_fetch_object($a[$i]))
[...]
{
if(ergebnisse_=0){echo 'Nix gefunden';}
Wenn ich $ergebnisse ausgebe, nicht $ergebnisse_ bekomme ich jedesmal 0 als Resultat.