2009-09-04 4 views
1

J'ai un enregistrement PHP qui appelle un db mysql pour une liste déroulante. Pas de soucis, ça marche bien. Ce que je ne peux pas comprendre cependant est la suivante:MySQL Drop Down to Return résultat ... semble simple?

La boîte doit remplir avec un nom, mais le POST doit aller à un champ d'identification. Ce que je veux dire est ceci:

registration.php

function generate_business_selections($default = '') 
{ 
    $output = ''; 
    $application =& application(); 
    $sql =& sql(); 
    $lang_col = $application->get_language(LANG_COLUMN); 
    $query = "SELECT id, name_en, {$lang_col} FROM ".DB_DEFAULT_PREFIX."members WHERE profile_type='Business'"; 
    $results = $sql->query($query); 
    $num_rows = $sql->num_rows(); $sql_counter = 0; 
    while($num_rows>$sql_counter++) 
    { 
     $this_result = $sql->fetch(MYSQL_ASSOC,$results); 
     $output .= "\t" . '<option value="'.$this_result["name_en"].'"'.($default==$this_result["name_en"] ? ' selected' : '').'>'.$this_result[$lang_col].'</option>' . "\n"; 
    } 
    return $output; 
} 

REGISTRATIONCOMPLETE.PHP

$member_array["linkedid"] = $application->clean_input('register_business_selection','trim'); 

Cela permet d'atteindre en tirant le nom dans la zone, mais ce que je dois savoir est comment revenir juste l'id à un autre champ dans le db. Ce champ est des nombres délimités par des virgules (je n'ai pas conçu le db, alors ne me blâmez pas pour celui-là!). Il doit remplir le champ avec l'ID de l'objet nommé. Pour l'amour de l'argument:

id = 2

NAME_EN = Bob Jones

champ

à insérer à = linkedid Et cela doit être avec l'ID, pas le NAME_EN.

Gosh, c'est tellement discombobulé. J'espère que cela a du sens pour quelqu'un! :)

Merci!

+0

Un peu trop déconcertant pour moi - pouvez-vous clarifier ce que vous avez l'intention de faire un peu plus loin? – Meep3D

+0

Kit ... Je pense que tu as raison. Je vais donner un coup de feu. –

Répondre

1

Je pense que vous voulez que l'ID de la personne soit la valeur de votre liste déroulante.

$output .= "\t" . '<option value="'.$this_result["id"].'"'.($default==$this_result["name_en"] ? ' selected' : '').'>'.$this_result[$lang_col].'</option>' . "\n"; 
+0

Je veux que id soit la valeur postée sur mysql db, mais je ne veux pas que l'identifiant soit affiché dans la liste déroulante. Je suis désolé, c'est tellement confus. Je déteste ce projet. HA! –

+0

Si je vous comprends bien, je ne pense pas que cela puisse être fait, sauf si vous cryptez l'ID en quelque sorte. – Meep3D

+0

Merci Meep ... Je pense que j'étais trop vague. Je suis étonné que Kit ait choisi ce que j'ai posé. J'ai juste besoin de la valeur que le formulaire retourne à la base de données pour être l'id, pas le nom_en. Pensez que nous l'avons compris. Vous êtes géniaux! –

0

vous voulez ce qui suit dans votre sortie html:

<option value="ID">display name</option> 

nom d'affichage apparaît sous la forme mais ID sera envoyé lorsque le formulaire est soumis.

Je pense que Kit a le bon code pour le faire.

+0

Cette fonction est pleine si, où la valeur de l'option est écrit dans le PHP, ne serait pas mon HTML lire: \t \t \t