Avatar billede dejbjerg Nybegynder
08. august 2006 - 13:33 Der er 10 kommentarer og
1 løsning

Dynamiske selectboxe - find fejlen

Jeg har stirret mig blind tror jeg, er der en der kan fortælle mig hvorfor min select nummer 2 ikke virker som den skal?

http://d2171880.u51.surftown.dk/timesag/ts_dynamic_select.php

KODE:
<html>
<body>
<?php
//$select_name: The name of the selectbox as in name=""
//$css_class: The css class u use to style the selectbox, "" if you are not using
//$table_name: The name of the table from which you get your selectbox values
//$id_field_name: The name of the id field in the table you get your values from
//$id_from_url: An id used to determine what value is currently selected (either from get or post)
//$face_value_field: The name of the field in the database table that you want to be shown in the selectbox <option>
function KDJ_dynamic_select ($select_name, $css_class, $table_name, $id_field_name, $id_from_url, $face_value_field){
$sql = "SELECT * FROM $table_name";
$res = mysql_query($sql);
    echo'<select name="'.$select_name.'" onChange="Load_id()">';
  while($row = mysql_fetch_array($res)) {
          $selected = ($row[$id_field_name] == $id_from_url)? "SELECTED":"";
      echo"<option value=\"".$row[$id_field_name]."\"". $selected." >".$row[$face_value_field]."</option>";
  }//hile
    echo"</select>";
}//end func

function KDJ_select_from_query ($select_name, $css_class, $table_name, $id_field_name, $field_to_match, $id_to_match, $face_value_field){
$sql = "SELECT * FROM $table_name WHERE $field_to_match == $id_to_match";
echo $sql;
$res = mysql_query($sql);
    echo'<select name ="'.$select_name.'">';
  while($row = mysql_fetch_array($res)) {
      echo"<option value=\"".$row[$id_field_name]."\">".$row[$face_value_field]."</option>";
  }
    echo"</select></form>";
}//end func

$id = $_GET[id];
include_once("connect.php");
include_once("form_lib.php");
echo '<form name="testform">';
KDJ_dynamic_select ("ts_projekt_id", "", "ts_projekter", "ts_projekt_id", $id, "ts_projekt_navn");
KDJ_select_from_query ("ts_opgave_id", "", "ts_opgaver", "ts_opgave_id", "ts_opgave_projekt_id", $id, "ts_opgave_navn");
KDJ_list_table ("ts_projekter");
echo '<hr>';
KDJ_list_table ("ts_opgaver");
echo'</form>';
?>

<script type="text/javascript">
function Load_id()
{
var id = document.testform.ts_projekt_id.options[document.testform.ts_projekt_id.selectedIndex].value
var id_txt = "?id="
location = id_txt + id
}
</script>

<body>
<html>
Avatar billede danish1977 Nybegynder
08. august 2006 - 13:45 #1
while($row = mysql_fetch_array($res)) {
      echo"<option value=\"".$row[$id_field_name]."\">".$row[$face_value_field]."</option>";

prøv at indsætte nedenstående. Du har et par \" for meget, tror det er der den kikser, med escapechars...


while($row = mysql_fetch_array($res)) {
      echo"<option value='".$row[$id_field_name]."'>".$row[$face_value_field]."</option>";

Er naturligtvis ikke afprøvet på egen maskine, but give it a try :o)
Avatar billede dejbjerg Nybegynder
08. august 2006 - 13:49 #2
Det hjalp ikke, men tak alligevel :)
Avatar billede danish1977 Nybegynder
08. august 2006 - 13:57 #3
Hvad gør:
echo $sql;
helt præcis, forstår ikke...
Avatar billede dejbjerg Nybegynder
08. august 2006 - 13:59 #4
Den skriver bare sql sætningen ud, så jeg kan se om den er, som den skal være - og det er den, såvidt jeg kan se.
Avatar billede dejbjerg Nybegynder
08. august 2006 - 14:00 #5
Det er bare til testformål
Avatar billede dejbjerg Nybegynder
08. august 2006 - 14:12 #6
function KDJ_select_from_query ($select_name, $css_class, $table_name, $id_field_name, $field_to_match, $id_to_match, $face_value_field){
$sql = "SELECT * FROM $table_name WHERE $field_to_match == $id_to_match";
echo $sql;//kun til test
$res = mysql_query($sql);
    //echo'<select name ="'.$select_name.'">';
  while($row = mysql_fetch_array($res)) {
      //echo"<option value=\"".$row[$id_field_name]."\">".$row[$face_value_field]."</option>";
      //echo"<option value='".$row[$id_field_name]."'>".$row[$face_value_field]."</option>";
      echo $row[$id_field_name].'---'.$row[$face_value_field];
  }//end while
    //echo"</select>";
}//end func

det ser ud til at $row[$id_field_name] og $row[$face_value_field] er tomme ?
Avatar billede danish1977 Nybegynder
08. august 2006 - 14:26 #7
Hvis jeg vælger jeg er da bare for go' i ddb'en får jeg en selectstatement der siger:
SELECT * FROM ts_opgaver WHERE ts_opgave_projekt_id == 7
ts_opgave_project_id = 7 giver da
ts_opgave_id: 3, 13 og 16 og ts_opgave_navn: hæeja, hej og tester mere

Sidder og kigger lidt med, men forstår ikke helt sammenhængen. Har du ikke en CREAT table til at anskueliggøre tabelstrukturen en anelse, evt. en enkelt insert into også...?
Avatar billede dejbjerg Nybegynder
08. august 2006 - 14:29 #8
tabellerne bliver listet med indhold nedenfor...

Jeg har fundet fejlen ... der skal kun 1 lighedstegn i select sætningen

Tak fordi du prøvede :)
Avatar billede dejbjerg Nybegynder
08. august 2006 - 14:30 #9
nu funker det
Avatar billede danish1977 Nybegynder
08. august 2006 - 14:31 #10
ha ha, det er øjnene man først bliver blind på - god fornøjelse med det du har gang i :o)
Avatar billede dejbjerg Nybegynder
08. august 2006 - 14:34 #11
Takker :)

Der er dels noget en-gang-for-alle-form-halløj og dels et timesagsstyringssystem :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester