2011-09-15 16 views
1

J'ai créé une base de données avec 3 tables étant spusername, splocation, sprecord. spusername a id, splocation_id, nom de famille, prénom. Je veux être en mesure d'avoir un menu déroulant qui a tiré id, nom, prénom de la base de données, et dans le pulldown il montre seulement une liste de tous les noms étant nom, prénom. Puis, une fois que je sélectionne une personne, j'ai une autre liste qui contient des types de formation. Puis, lorsque je clique sur Envoyer, cela génère un enregistrement dans une autre table avec l'ID de personne et le dossier d'entraînement. donc quand je fais une recherche il va tirer l'utilisateur et les dossiers de formation pour cette personne .... J'ai déjà créé une page de soumission dans un .php qui envoie le nom, prénom, splocation_id pour les nouveaux utilisateurs et je pense que je peux créer une recherche qui fait ce que je veux, mais je n'ai jamais fait une entrée de données en faisant un pulldown qui a des valeurs générées à partir de la base de données.base de données mysql menu déroulant en utilisant des données déjà entrées en html/php

EDIT Code: Avec l'aide de la codification de Vegard, j'ai obtenu ceci, et maintenant cela fonctionne très bien après quelques essais et erreurs. Je vous remercie!

code:

<?php 
    if (isset($_REQUEST['Submit'])) { 
    $sql = "INSERT INTO $db_table(spusername_id,sptraining_id) values ('".mysql_real_escape_string(stripslashes($_REQUEST['spusername_id']))."','".mysql_real_escape_string(stripslashes($_REQUEST['sptraining_id']))."')"; 
    if($result = mysql_query($sql ,$db)) { 
    echo '<h1>Thank you</h1>Your information has been entered into the database<br><br>'; 
    } else { 
    echo "ERROR: ".mysql_error(); 
    } 
    } else { 
?> 
<h1>Add Training Information To Database</h1><hr> 
<br><br> 
<form method="post" action=""> 
<select name="spusername_id"> 
    <option value="default">Select Employee</option> 
<?php 
    include("connectspusers.php"); /*file where you have stored your DB conn. settings*/ 
    $result = mysql_query('SELECT id, lastname, firstname FROM spusername ORDER BY lastname ASC') or die (mysql_error()); 

    while ($row = mysql_fetch_array($result)) { 
     echo '<option value="' . $row['id'] . ' ' . $row['lastname'] . ' ' . $row['firstname'] . '">' . $row['lastname'] . ', ' . $row['firstname'] . '</option>'; 
    } 
?> 
</select> 

<select name="sptraining_id"> 
    <option value="default">Select Training</option> 
<?php 
    include("connectsptraining.php"); /*file where you have stored your DB conn. settings*/ 
    $result = mysql_query('SELECT id, trainingtype, level FROM sptraining ORDER BY level ASC') or die (mysql_error()); 

    while ($row = mysql_fetch_array($result)) { 
     echo '<option value="' . $row['id'] . ' ' . $row['trainingtype'] . ' ' . $row['level'] . '">' . $row['trainingtype'] . ' - ' . $row['level'] . '</option>'; 
    } 
?> 
</select> 
<br><br> 
<input type="submit" name="Submit" value="Submit"> 
</form> 
<?php 
} 
?> 
+0

Il semble être une tâche complète ici. Nous sommes ici pour vous aider où vous avez bloqué, alors collez sur votre code si vous en avez? –

Répondre

0

Quelque chose comme ça?

<select name="pulldown1"> 
    <option value="default">Choose an option</option> 
    <?php 
    include("connect.php"); /*file where you have stored your DB conn. settings*/ 
    $result = mysql_query('SELECT id, lastname, firstname FROM spusername ORDER BY firstname ASC') or die (mysql_error()); 

    while ($row = mysql_fetch_array($result)) { 
    echo '<option value="' . htmlentities($row['id'], ENT_QUOTES) . ' ' . htmlentities($row['lastname'], ENT_QUOTES) . ' ' . htmlentities($row['firstname'], ENT_QUOTES) . '">' . htmlentities($row['lastname'], ENT_QUOTES) . ', ' . htmlentities($row['firstname'], ENT_QUOTES) . '</option>'; 
    } 
    ?> 
</select> 

<select name="pulldown2"> 
    <option value="default">Choose and option</option> 
    <?php 

    $result = mysql_query('SELECT traingtype FROM trainingtable ORDER BY trainingname ASC') or die (mysql_error()); 

    while ($row = mysql_fetch_array($result)) { 
     echo '<option value="' . $row['trainingtype'] . '">' . $row['trainingtype'] . '" "' . $row['lastname'] . '</option>'; 
    } 
    ?> 
</select> 

Cela se traduira par deux menus déroulants où la première liste déroulante répertorie les last- utilisateurs et prenom séparés par une virgule + espace et la seconde liste les différents types de formation. L'ID déposé est seulement envoyé via la variable, mais pas affiché à l'utilisateur.

Lorsque vous tirez les valeurs de la variable pulldown1, juste utiliser explode:

$userdetails = $_POST['pulldown1']; 
$values = explode(" " $userdetails); 
$ID = $values[0]; 
$lastname = $values[1]; 
$firstname = $values[2]; 

ai pas testé le code de sorte qu'il pourrait avoir besoin de peaufinage, et bien sûr vous devez changer les noms de variables correspondant à votre réelle db noms de famille. Editer: Dans votre code, vous devez utiliser $ row et non $ row2.

En second lieu, au lieu de cela:

<option value='{$id}'>{$lastname},{$firstname}</option> 

utiliser ceci:

<option value="' . $row['id'] . '">' . $row['lastname'] . ', ' . $row['firstname'] . '</option> 
0

Vous construisez une sélection dans une boucle avec les données de votre base de données.

exemple avec MySQL (n'a pas testé):

$query = "select id, lastname, firstname from spusername"; 
$result = mysql_query($query); 

    echo "<select>"; 

    while($row = mysql_fetch_array($result)){ 
    echo "<option value='".$row['id']."'>".$row['lastname']. " ". $row['firstname']."</option>"; 
    } 

    echo "</select>"; 

EDIT: (réponse à votre modifier) ​​

Dans votre code que vous utilisez $row2 au lieu de $row

0
<select name="id" size="1"> 
<?php 
    $result=mysql_query("select * from spusername;"); 
    while($user=mysql_fetch_array($result)) { 
    echo "<option value=\"".$user['id']."\">".$user['lastname'].", ".$user['firstname']."</option>"; 
?> 
</select> 

Allez en utilisant toujours "id" comme référence à l'utilisateur et essayez d'utiliser post au lieu d'envoyer la requête (conserve l'URL dans le navigateur de votre utilisateur).

0

Juste un additif à la solution de Vegard:

Les guillemets simples peuvent être un peu délicat avec les noms de famille. Cela dépend vraiment de la façon dont vous stockez les données dans votre base de données.

Si vous avez un patronyme O'Leary ou O'Reilly, vous pourriez obtenir des résultats tronqués au fur et à mesure que vous construisez votre boucle de sélection sur les noms. Essaie.

Vous pouvez résoudre ce problème en utilisant

htmlentities($row['lastname'], ENT_QUOTES) dans votre boucle select

Questions connexes