2011-01-04 6 views
0

Ich arbeite seit Wochen an diesem Thema. Ich erstelle eine Webseite, die Informationen vom MsSQL-Server abruft. Mein Problem ist, wo es einen Bereich mit wenigen Kontrollkästchen gibt. Die Kontrollkästchen sollen überprüft werden, wenn sie in der SQL-Datenbank gefunden werden. Wenn der Kreditnehmer Geld aus "Savings", "Checking" und "Stock" verwendet, sollten diese Checkboxen auf der HTML-Seite überprüft werden. In meinem Fall wird nur geprüft, was in der ersten Zeile der SQL-Suchliste steht. Wenn also die Liste "Speichern" in der ersten Zeile enthält, wird nur das Kontrollkästchen "Speichern" aktiviert, nicht der Rest in der Liste. Ich habe versucht mit loop (while ($ r-> EOF)), aber dann wählt es was auch immer am Ende der Liste ist. Hier ist, was ich verwende, um Daten vom SQL-Server zu ziehen. Vielen Dank im Voraus für Ihre Hilfe. Schätze es wirklich!PHP + MsSQL = Checkbox Probleme. Brauche Hilfe!

function __construct($_ldid, $_lrid) 

      $this->ldid = $_ldid; 
      $this->lrid = $_lrid; 

//$loan is defined in the PHP.class (which is shown below). 

$q = ("SELECT * FROM Tabel_name where loan_id = 885775") 
$v = array($_ldid, $_lrid); 
$r = $db->Execute($q, $v); 
$this->downpaymenttype = $r->fields; //<- I think I have this line done wrong because it is suppose to store the outputs to an array. 

//So wherever the "$loan" is in HTML page, it will take the outputs from the above statement. 

//The above code, which is in PHP.class file, outputs the following(or suppose to): 
1 885775 Checking 
2 885775 Saving 
3 885775 Gift 

In der HTML-Webseite, sollten die folgenden Codes Kontrollkästchen markieren die Ausgänge nach:

<input type="checkbox" name="DPS1[]" id="DPS1-{$key}" {if $loan-> downpaymenttype.downpaymentsource == "Checking"} checked {/if}/> 

<input type="checkbox" name="DPS2[]" id="DPS2-{$key}" {if $loan-> downpaymenttype.downpaymentsource == "Saving"} checked {/if}/> 

<input type="checkbox" name="DPS3[]" id="DPS3-{$key}" {if $loan-> downpaymenttype.downpaymentsource == "Gift"} checked {/if}/> 

Nur die „Überprüfung“ Checkbox aktiviert ist immer da, dass der eine in der ersten Reihe ist.

ich auch eine Schleife versucht, aber es ist die Speicherung nicht in Array (Ich glaube, ich weiß nicht, wie das Array für Sitzung verwenden)

$q = ("SELECT Tabel_name FROM loan_downpaymentsource where loan_id = 885775"); 
$v = array($_ldid, $_lrid)); 
$r = $db->Execute($q, $v); 
while(!$r->EOF) { 
$this->downpaymenttype = $r->fields; 
$r->MoveNext(); 
} 

Antwort

2

eine Schleife hinzufügen durch Ihre Ergebnisse zu gehen, bevor die Anzeige und setze Fahnen. $ r-> Felder werden nur die Felder für die aktuelle Zeile aufnehmen. Sie müssen das gesamte Rowset durchlaufen, um zu sehen, ob die anderen gesetzt sind.

So etwas wie (es sieht aus wie Sie adodb oder etwas ähnliches verwenden)

$checking = false; 
$saving = false; 
$gift = false; 

while(!$r->EOF){ 
    $row = $r->fields; 
    switch($row->downpaymenttype){ 
     case 'Checking': 
      $checking=true; 
      break; 
     case 'Saving': 
      $saving=true; 
      break; 
     case 'Gift': 
      $gift=true; 
      break; 
     default: 
     break; 
    } 
    $r->moveNext(); 
} 

auf Ihrer Ansicht nach nun die Fahnen überprüfen. Ich habe Smarty nicht verwendet, aber Sie müssen diese Flags an Ihre Vorlage weitergeben, und ich bin mir sicher, dass Sie das wissen, und dann ändern Sie Ihre Checkbox-Zeilen, um zu prüfen, ob jedes Flag wahr/falsch ist.

Hoffe, dass hilft!

+0

er hat recht. Wenn Sie Spalten aus einer Datenbank ziehen, kommt das Ergebnis in einem Array zurück, ein Element für jede Spalte. Das bedeutet, wenn Sie nur eine Spalte ziehen, ist die Ergebniszeile ein Ein-Element-Array, das diese eine Spalte enthält. Sie müssen weiterhin Zeilen aus dem Ergebnis ziehen, um mehrere Zeilen zu erhalten (jede Zeile ist ein Array mit mehreren Spalten). – dqhendricks

+0

Danke fredley für die Antwort und den Code und dqhendricks, wirklich geschätzt. Ich versuche deine Vorschläge zu verwenden. Bisher hatte ich kein Glück, es zur Arbeit zu bringen. Ich werde veröffentlichen, sobald ich mehr Verständnis für die Situation habe. Ja, ich benutze Smarty und Adodb. – user3116474