Problem bei Auswahl funktion
Peter Hanze
- programmiertechnik
0 dedlfix0 Peter Hanze0 dedlfix
hi leute...
in meiner Datenbank will ich einigen leuten eine kleine suchfunktion anbieten...! das ganze sieht dann so aus:
WHERE typ = '".$typ."'
der typ wir anfangs einfang mit geliefert...!
Problem:
die datei soll anfangs alle typen ausgeben! wenn ich nun keinen wert mitsende kommt logischerweise ein fehler! also meine lösung:
if(!$typ)
{
$letzten10 = mysql_query("SELECT
....
FROM
...
ORDER BY
stamp DESC
LIMIT
30") or die(mysql_error());
}
else
{
$letzten10 = mysql_query("SELECT
...
FROM
...
WHERE
typ = '".$typ."'
ORDER BY
stamp DESC
LIMIT
30") or die(mysql_error());
}
$noc = mysql_num_rows($letzten10);
ich finde allerdings das, dass ganze sehr unschön aussieht, ... gibts da evt. nen zeichen oder so für den ich als typ einsetzen könnte der alles ausgibt habs jetzt noch net mit nem (*) versucht aber ich denke es wird auf das gleiche hinaus kommen!
mit freundlichen grüßen,
Peter
Wie wärs damit?
... = mysql_query(sprintf('SELECT ... FROM ... %s ORDER ...',
($typ ? "WHERE typ='$typ'" : '')) or die...
Wie wärs damit?
... = mysql_query(sprintf('SELECT ... FROM ... %s ORDER ...',
($typ ? "WHERE typ='$typ'" : '')) or die...
erst einmal danke für die schnelle antwort,
sieht ganz gut aus - aber wofür steht das %s?
mit freundlichen grüßen
Peter
Wie wärs damit?
... = mysql_query(sprintf('SELECT ... FROM ... %s ORDER ...',
($typ ? "WHERE typ='$typ'" : '')) or die...erst einmal danke für die schnelle antwort,
sieht ganz gut aus - aber wofür steht das %s?
Das findest du im Handbuch zur Funktion sprintf(). Es gibt da noch mehr Möglichkeiten...
$letzten10 = mysql_query("SELECT
...
FROM
...
%s
ORDER BY
stamp DESC
LIMIT
30, ($typ ? "WHERE typ='$typ'" : '')) ") or die(mysql_error());
also so will es nicht ganz funktionieren... was mach ich nur falsch?
mfg
peter
hi,
$letzten10 = mysql_query("SELECT
...
FROM
...
%s
ORDER BY
stamp DESC
LIMIT
30, ($typ ? "WHERE typ='$typ'" : '')) ") or die(mysql_error());also so will es nicht ganz funktionieren... was mach ich nur falsch?
du hast das sprintf, welches sich im beispielcode nicht ohne grund befand, unterschlagen ...
aber ich würde eh abraten, es so zu machen - nicht gerade übersichtlich, erschwert das debuggen, späteres erweitern, etc.
ich würde mir eher vorher eine variable $where definieren, die entweder ganz leer bleibt, oder eben 'WHERE bedingung' zugewiesen bekommt, und diese dann in den query-string einsetzen:
$query = "SELECT x,y FROM tabelle ".$where." ORDER BY ...";
gruß,
wahsaga
du hast das sprintf, welches sich im beispielcode nicht ohne grund befand, unterschlagen ...
aber ich würde eh abraten, es so zu machen - nicht gerade übersichtlich, erschwert das debuggen, späteres erweitern, etc.
Das ist sicherlich Geschmackssache. Ich z.B. finde solche Konstrukte
$s = "foo: '" . $bar . "', bla: '" . $fasel . "'";
unübersichtlicher als solche:
$s = sprintf("foo: '%s', bla: '%s'", $bar, $foo);