2016-04-24 12 views
0

Jungs, was ich hier zu implementieren versuche, habe ich 5 Tasten (mit verschiedenen Optionen, die nacheinander mit jquery angezeigt werden und Daten mit Ajax gesendet werden).PHP-Logik, ob sonst Bedingungen oder Polymorphismus zu verwenden

<div id="div1"> 
<button value="1" class="div1button">1</button> 
<button value="2" class="div1button">2</button> 
<button value="3" class="div1button">3</button> 
<button value="4" class="div1button">4</button> 
</div> 
<div id="div2"> 
<button value="a" class="div2button">a</button> 
<button value="b" class="div2button">b</button> 
<button value="c" class="div2button">c</button> 
<button value="d" class="div2button">d</button> 
</div> 

Jetzt 2 die div ausgeblendet, wenn der Benutzer auf div1 ... irgendeine der Schaltfläche klickt div2 angezeigt wird, wird der Wert der Schaltfläche geklickt Abfrage mit Jquery und SQL übergeben wird Ajax Ausgeführt mit .. Nun ist die pHP, die die Abfrage ausführen enthält

$_GET['valDiv1'] 
$_GET['valDiv2'] 

die pHP-Kontrollen, wo val1 definiert ist oder nicht, und die umgekehrt nach val von div 2 erhalten ... das Problem ist hier ....

Ich habe ungefähr 5 divs die ich jetzt die Werte überprüfen muss aller div existieren oder nur 1 oder 2 .. etc .... WIE man das löst? Um dies zu überprüfen, muss ich zu vielen implementieren, wenn sonst LIKE :: wenn Div1 definiert ist ... tun Sie dies wenn Div1 und Div2 definiert ist ... tun, dass wenn Div1 und Div2 und Div3 definiert ist ... etwas tun wenn div2 und div3 und div5 definiert ist

Also das ist, wo ich feststecke.

Ich bin ein Anfänger bitte helfen, gibt es einen besseren Weg zu erreichen, was ich will?

Gelöst

Dank

$selected = array('val1' => null, 'val2' => null, ...); 
$selected['val1'] = $_GET['valDiv1']; 
$selected['val2'] = $_GET['valDiv2']; 
foreach($elements as $val => $key) { 
    if($val == 'val1' && $key == 'any') { 
     $sql = "SELECT * FROM details"; 
    } else { 
    if($key != null) { 
      if($key != 'any') { 
       if($i>0) { 
       $sql .= " AND $val='$key'"; 
       } else { 
       $sql = "SELECT * FROM details WHERE $val='$key'"; 
       $i++; 
       } 
      } 
     } 
    } 
} 
+0

könnte Überprüfung Es würde helfen, wenn Sie erklärt, was Sie brauchen statt div1 div2 button1 button2 zu tun. Sie können alles vereinfachen, wenn der Unterschied in den Effekten gering ist, aber wenn jede Schaltfläche ein sehr spezifisches Ergebnis hat, dann müssen Sie einen Fall oder eine Menge verschachtelter if-Anweisungen verwenden. – Chris

+0

Es ist nicht ganz klar, was Sie hier mit Polymorphie meinen. Ist dies ein einfacher Fall von Voraussetzungen, bei denen einer der gültigen Werte für Teil 1 ausgefüllt werden muss, bevor Teil 2 akzeptiert werden kann? Wenn ja, müssen Sie möglicherweise eine Abfrage mit jedem Schritt wie 'SELECT ID FROM valid_values ​​WHERE Name IN (...)', wo der letzte Teil die Liste der Werte ist. – tadman

+0

@Chris ok Danke wäre da ein Problem, wenn ich viel verschachtelte, wenn ich sonst etwa 15-20 meine? –

Antwort

0

Ich bin sicher, es gibt viele Ansätze, um es zu optimieren, um @Igor. Einer von ihnen könnte sein, alle Möglichkeiten speichern nicht in separaten Variablen, sondern in einem Array, zum Beispiel:

$selected = array('val1' => null, 'val2' => null, ...); 
$selected['val1'] = $_GET['valDiv1']; 
$selected['val2'] = $_GET['valDiv2']; 
... 

Und wenn Sie das tun

if (array_search(null, $selected) === false) { 
    ... 
} 
+0

Das ist worüber ich nachgedacht habe! Noch eine Frage, wenn ich zu viele verschachtelte, wenn sonst würde es ein Problem geben? –

+0

Vielen Dank für Ihre Antwort. Das war sehr hilfreich! –

Verwandte Themen