php abfrage vereinfachen..?

marcey

Mitglied
Hey Leute ich habe in Problem mit einer Radiobutton abfrage .... und zwar möchte ich aus verschiedenen Kategorien(Form,Farbe,Größe,Gewicht,Preis) eine Unterkategorie Auswahl treffen können und diese verschieden Unterkategorien sollen dann den entsprechenden Inhalt wieder geben z.B. wen ich
bei From = Würfel
bei Farbe= Blau
bei Größe=Klein
bei Gewicht=Schwer
bei Preis = Niedrig
sollte das kommen

"Hier sind alle blauen Würfel die klein schwer und billig sind"

Falls aber eine Kategorie nicht angeklickt wurde sollte der Inhalt auch nicht mit drin sein.

bisher habe ich das problem mit einer if elseif abfrage gelöst aber das wird immer schwieriger bei jeder neuen Kategorie.


<br>
<form action= "<?php echo$_SERVER['PHP_SELF']?>" method="post" >

Form
<input type=radio name="From" value="Würfel" >
Würfel<br>
<input type=radio name="Form" value="Ball" >
Ball<br>
<br />
Farbe
<input type=radio name="Farbe" value="Blau" >
Blau<br>
<input type= radio name="Farbe" value="Rot" />
Rot<br />
<input type=radio name="Farbe" value="Gelb">
Gelb<br>
<input type=radio name="Farbe" value="Grün">
Grün<br>
<input type=radio name="Farbe" value="Schwarz">
Schwarz<br>
<input type= radio name="Farbe" value="Weiß" />
Weiß<br />
<br>
Größe
<input type= radio name="Größe" value="Klein" />
Klein<br />
<br />
<input type=radio name="Größe" value="Mittel">
Mittel<br>
<input type=radio name="Größe" value="Groß">
Groß<br>
Preis
<input type=radio name="Preis" value="Niedrig">
Niedrig<br>
<input type=radio name="Preis" value="Mittel">
Mittel<br>
<input type= radio name ="Preis" value="Hoch">
Hoch<br>
.
.
.
.
.
.
<br />
und php mit if elseif abfrage

if($_POST['From']=='Würfel' && $_POST['Größe']=='Klein'&& $_POST['Farbe']=='Blau')
{
echo "alle blauen Würfel die klein sind";
}
elseif($_POST['Form']=='Würfel' && $_POST['Größe']=='Groß'&& $_POST['Farbe']=='Blau')
{
echo "alle blauen würfel die groß sind";
}
.
.
.

und so weiter ich muss alle Möglickeiten abdecken das dauert lange ausserdem fallen mir öfter neue Untekategorien ein die ich dan wieder alle neu abdecken muss ....
kann mann das nicht irgendwie einfacher regeln.****?
 
Setze doch den Satz aus Fragmenten zusammen, so wie beispielsweise hier:
PHP:
$categories = array(
    'from' => array('Würfel'),
    'size' => array('klein', 'groß'),
    'color' => array('blau', 'rot', 'grün')
    );

$result = 'Alle';
if(in_array($_POST['color'], $categories['color']))
    $result .= ' ' . $_POST['color'] . 'en';
if(in_array($_POST['from'], $categories['from']))
    $result .= ' ' . $_POST['from'] . ', die';
if(in_array($_POST['size'], $categories['size']))
    $result .= ' ' . $_POST['size'] . ' sind.';

echo $result;
 
Zuletzt bearbeitet:
Benutz bitte die entsprechenden Code-Tags [code=html][/code] bzw. [code=php][/code] damit es leichter zu lesen ist.

ich will ja kein satz ausgeben sondern inhalte
Ist "Hier sind alle blauen Würfel die klein schwer und billig sind" kein Satz oder hast du einfach nicht verstanden was der Code von einfach nur crack bewirkt?

Ich würde mich einfach nur crack's Lösung nämlich anschliessen.

P.s. Was sollen diese ganzen *****. Klemmt die Taste?
 
Hallo,

also, ich glaube er will nicht unbedingt nur einen Text ausgeben. Wäre etwas sinnfrei. Und hier geht das spekulieren los ....

Wenn du innerhalb der einzelnen if-Abfragen z.B. Produkte auflisten willst, dann wäre das ne schöne Datenabank-Abfrage. Dann must du aber auch nicht jede Abfrage einzeln starten, sondern kannst für nicht ausgewählte Kategorien einfach ein * einsetzen. Das könntest du dann mit der oben genannten Ausgabe verbinden .... Aber wie gesagt, ist reine Spekulation ob des eigentlichen Problems.
Daher wäre es schon hilfreich, etwas mehr Infos über die Aufgabenstellung zu bekommen, vielleicht liegt die Lösung ja ganz wo anders.

Gruß
Gardiner
 
Der Ansatz von "einfach nur crack" liefert doch alles was er benötigt. Ich denke mal er möchte anhand der Angaben eine DB-Anfrage absenden, welche dann nur diese Würfel auflistet, wäre für mich das einzig logische.

Obwohl eine extra Prüfung in diesem Fall nicht nötig wäre.

PHP:
$categories = array(
    'from' => array('Würfel'),
    'size' => array('klein', 'groß'),
    'color' => array('blau', 'rot', 'grün')
    );
$result = array();
if(in_array($_POST['from'], $categories['from'])){
    $result[] = "form = {$_POST['from']}"
} 
if(in_array($_POST['size'], $categories['size'])){
    $result[] = "size = {$_POST['size']}"
} 
// etc.
$qry = implode(" AND ", $result);

SQL:
SELECT * 
FROM tabelle
WHERE $qry
 
Zuletzt bearbeitet von einem Moderator:
Zurück