• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Schleife = Bessere Lösung?

RMS

Neues Mitglied
Hallo zusammen,

ich bin sehr neu im Bereich PHP und habe leider noch nicht so viel Ahnung, deswegen möchte ich euch bitten, mir mal unter die Arme zu greifen.
Folgendes Problem; Ich habe eine MySQL Datenbank, auf die ich auch ohne Probleme zugreifen kann. Mit dem Befehl

$spalten=mysql_num_fields(mysql_query("SELECT * FROM $liste LIMIT 1"));

lese ich aus, wieviele Spalten in der aktuellen Tabelle vorhanden sind (In der Datenbank sind sehr viele Tabellen mit bis zu 30 Spalten). Die Spaltennamen sind immer Feld1, Feld2, Feld3, Feld4 etc.pp.

Bislang lese ich die Daten so aus;

if ($spalten == 1) { $daten = mysql_query('SELECT * FROM '.$liste.' WHERE `Feld1` LIKE \'%'.$suche.'%\'' , $conID); }
if ($spalten == 2) { $daten = mysql_query('SELECT * FROM '.$liste.' WHERE `Feld1` LIKE \'%'.$suche.'%\' OR `Feld2` LIKE \'%'.$suche.'%\'' , $conID); }

usw usf....
aber das ist ja nun mal keine elegante Lösung.

Gibt es soetwas in der Art wie z.B. bei VB oder C++? Sowas in der Richtung?

for i = 1 to Spalten
(code um das nächste Feld auszulesen)
next i

Habt vielen Dank!
 
Werbung:
Hallo zusammen,

ich bin sehr neu im Bereich PHP und habe leider noch nicht so viel Ahnung, deswegen möchte ich euch bitten, mir mal unter die Arme zu greifen.
Folgendes Problem; Ich habe eine MySQL Datenbank, auf die ich auch ohne Probleme zugreifen kann. Mit dem Befehl

$spalten=mysql_num_fields(mysql_query("SELECT * FROM $liste LIMIT 1"));

lese ich aus, wieviele Spalten in der aktuellen Tabelle vorhanden sind (In der Datenbank sind sehr viele Tabellen mit bis zu 30 Spalten). Die Spaltennamen sind immer Feld1, Feld2, Feld3, Feld4 etc.pp.

Bislang lese ich die Daten so aus;

if ($spalten == 1) { $daten = mysql_query('SELECT * FROM '.$liste.' WHERE `Feld1` LIKE \'%'.$suche.'%\'' , $conID); }
if ($spalten == 2) { $daten = mysql_query('SELECT * FROM '.$liste.' WHERE `Feld1` LIKE \'%'.$suche.'%\' OR `Feld2` LIKE \'%'.$suche.'%\'' , $conID); }

usw usf....
aber das ist ja nun mal keine elegante Lösung.

Gibt es soetwas in der Art wie z.B. bei VB oder C++? Sowas in der Richtung?

for i = 1 to Spalten
(code um das nächste Feld auszulesen)
next i

Habt vielen Dank!

PHP:
for($i = 1; $i <= $spalten; $i++) {
  // ...
}
 
Danke Dir! Soweit war ich auch mal fast, aber hatte dann Probleme mit dem "Pointer" Feld(1)...
Wie kann ich das denn lösen?

for($i = 1; $i <= $spalten; $i++) {
$daten = mysql_query('SELECT * FROM '.$liste.' WHERE `Feld(1)` LIKE \'%'.$suche.'%\'' , $conID); }
echo $daten;
}

So funktioniert es leider nicht :(
 
Werbung:
wenn ich das richtig verstanden habe, was du erreichen willst, müsstest du doch eigentlich einfach nur den feldnamen mit dem index zusammenbasteln
PHP:
for($i = 1; $i <= $spalten; $i++) {
  $daten = mysql_query('SELECT * FROM '.$liste.' WHERE `Feld'.$i.'` LIKE \'%'.$suche.'%\'' , $conID); }
 echo $daten;
}
btw. ist mysql deprecated, da solltest du mittelfristig lieber mysqli oder PDO verwenden
 
  • Like
Reaktionen: RMS
Rein aus interesse... was ist der Use-Case für so einen Fall? Das sieht mir stark nach einem fehlerhaften DB-Design aus...
 
Vielen Dank F13nS und scbawik! So funktioniert es einwandfrei! :)

Rein aus interesse... was ist der Use-Case für so einen Fall? Das sieht mir stark nach einem fehlerhaften DB-Design aus...

Es wird ein Suchbegriff eingegeben und dieser dann in jedem Feld gesucht. Bsp;

Feld1 Feld2 Feld3 Feld4
A B C D
E F G H


Ich weiß, es ist sicher "stümperhafte" Programmierung, aber für meine Zwecke völlig ausreichend und das wichtigste; Es funktioniert jetzt so, wie ich es mir vorstelle :)

Danke nochmals!
 
Werbung:
Zurück
Oben