2011-01-04 2 views
0

Je travaille sur ce sujet depuis des semaines. Je crée une page Web qui tire des informations à partir du serveur MsSQL. Mon problème est là où il y a une section avec quelques cases à cocher. Les cases à cocher sont supposées être vérifiées si elles sont trouvées dans la base de données SQL. Si l'emprunteur utilisait de l'argent de «Épargne», «Vérification» et «Stock», ces cases à cocher devraient être cochées dans la page HTML. Dans mon cas, il vérifie uniquement ce qui se trouve sur la première ligne de la liste de recherche SQL. Donc si la liste a "Saving" sur la première ligne, seule la case "Saving" sera cochée et non le reste de la liste. J'ai essayé d'utiliser loop (while ($ r-> EOF)), mais il sélectionne tout ce qui se trouve à la fin de la liste. Voici ce que j'utilise pour extraire des données du serveur SQL. Merci d'avance pour votre aide. J'apprécie beaucoup!PHP + MsSQL = Problèmes de case à cocher. Besoin d'aide pour!

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 

Dans la page HTML, les codes suivants doivent vérifier cocher les cases en fonction des sorties:

<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}/> 

Seule la case à cocher « vérifier » est de se vérifier parce que c'est celui sur la première ligne.

J'ai aussi essayé de boucle, mais il ne stocke pas dans le tableau (je suppose que je ne sais pas comment utiliser le tableau pour la session)

$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(); 
} 

Répondre

2

Ajouter une boucle pour parcourir vos résultats avant d'afficher et définir des drapeaux. $ r-> fields ne va que récupérer les champs de la ligne en cours. Vous devez parcourir l'intégralité de votre ensemble de lignes pour voir si les autres sont définis.

Quelque chose comme (On dirait que vous utilisez adodb ou quelque chose comme ça)

$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(); 
} 

maintenant votre point de vue de vérifier les drapeaux. Je n'ai pas utilisé smarty mais vous devrez passer ces drapeaux à votre modèle aussi bien que je suis sûr que vous le savez, et ensuite changer vos lignes de case à cocher pour vérifier si chaque drapeau est vrai/faux.

Espérons que ça aide!

+0

il a raison. Si vous extrayez des colonnes d'une base de données, le résultat revient dans un tableau, un élément pour chaque colonne. cela signifie que si vous tirez seulement une colonne, la ligne de résultat sera un tableau d'un seul élément contenant cette colonne. vous devez continuer à tirer des lignes du résultat afin d'obtenir plusieurs lignes (chaque ligne étant un tableau avec plusieurs colonnes). – dqhendricks

+0

Merci fredley pour la réponse et le code et dqhendricks, vraiment appréciés. J'essaie d'utiliser vos suggestions. Jusqu'à présent, je n'ai pas eu la chance de le faire fonctionner. Je posterai une fois que j'ai plus de compréhension de la situation. oui j'utilise smarty et adodb. – user3116474