2011-09-12 2 views
0

J'ai un gros dilemme, je génère des données de MySQL dans un formulaire, le problème est que tandis que la première ligne générée par SQL est 0 l'option de sélection dans le formulaire est l'interprétation la première valeur comme 1. Ne serait pas un problème si je ne voudrais pas jeter des données à partir de cette requête. Mais voici le code:Select-Option num valeur vs SQL num_row

<select id="exp_address" name="exp_address" onChange="document.getElementById('exp_city').value = this.options[this.selectedIndex].getAttribute('data-exp_city'); document.getElementById('exp_dist').value = this.options[this.selectedIndex].getAttribute('data-exp_distr'); document.getElementById('exp_address_val').value = this.options[this.selectedIndex].getAttribute('data-exp_city_val')"> 
<?php 
for($i = 0; $i < $expselnum; $i++){ 
    $exps_add_id = mysql_result($expsel,$i,'address_id'); 
    $exps_address = mysql_result($expsel,$i, "address"); 
    $exps_city = mysql_result($expsel,$i, "city"); 
    $exps_distr_val = mysql_result($expsel,$i, "district"); 
    echo "<option value=$exps_add_id data-num=$i data-exp_city = '$exps_city' data-exp_distr = '$exps_distr_val' data_exp_city_val = '$exps_city'>$exps_address</option>";  
} 
?> 
</select> 

et voici le code HTML généré:

<select onChange="Here is some JS to change the value of District and City inputs"> 
<option value=1 data-num=0 data-exp_city = 'BUCURESTI' data-exp_distr = 'Bucuresti' data_exp_city_val = 'BUCURESTI' [selected by default]>Another Address in RO</option><option value=2 data-num=1 data-exp_city = 'OTOPENI-IF' data-exp_distr = 'Ilfov' data_exp_city_val = 'OTOPENI-IF'>Some address in RO</option></select> 
<input name="exp_city" type="text" id="exp_city" style="text-align:left;" value="OTOPENI-IF" size="30" readonly="readonly"> 

Si vous comparez la valeur et att données num dans la balise option, vous verrez qu'ils sont différent par une unité, POURQUOI. La première valeur de l'option est sélectionnée à l'atterrissage de la page, mais l'entrée de la ville affiche la valeur suivante de la requête. Comment puis-je contourner ce problème? Merci d'avance.

+0

votre méthode pour obtenir des données de MySQL est ancienne et laid. Obtenez d'abord vos données dans un tableau, puis utilisez-les pour produire du HTML. Je suis sûr qu'il va résoudre tous vos problème actuel comme un effet secondaire –

+0

Merci @ColShrapnel, je vais mettre la main sur un livre PHP & MySQL pour savoir comment obtenir le tableau alternatif, malheureusement, je suis juste un graphique. Designer. – sealview

Répondre

0

Bien que ce ne soit pas dit très subtile, je suis d'accord avec le commentaire de Shrapnel. Cependant, cela pourrait corriger votre « problème » (je ne comprends pas vraiment la question, si):

for($i = 0; $i < $expselnum; $i++){ 

changement:

for($i = 1; $i < $expselnum; $i++){ 
+0

Merci @rijk, ce changement cachera le premier enregistrement de la table. – sealview