[PHP] 2x Dropdown menu (Javascript) + doorgeven variabelen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Cerntje
  • Registratie: September 2003
  • Laatst online: 09-09 06:57
Ik heb een Oracle database waar regelmatig gegevens overgezet worden naar een MySQL database. Als de gegevens overgezet zijn moet er nog extra informatie toegevoegd worden in de MySQL database per record.

Ik heb nu een pagina waar de nieuwe elementen in de database getoond worden. Dit middels een tabel met een checkbox ervoor. De gebruiker klikt op de checkbox voor een nieuw apparaat en klikt op 'Add specifications'. De barcode van het apparaat moet bij deze doorgegeven worden om te weten voor welk apparaat extra gegevens toegevoegd gaan worden.

Vervolgens wordt de pagina opgeschoond en wordt er middels javascript een dropdown menu getoond waar de gebruiker een hoofdcategorie moet selecteren. Vervolgens verschijnt er een dropdown menu waar de gebruiker een type moet selecteren. Als de gebruiker dan op 'ok' klikt moeten de 2 variabelen 'categorie' en 'type' doorgegeven worden.

Het probleem zit hem in het doorgeven van de barcode. Het wil niet lukken om dit correct door te geven, hieronder wat code om te verduidelijken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
global $Equipment_array; 
global $Equipment;

/*  Javascript functies voor drop-down menu's  */


    echo "  <SCRIPT TYPE='text/javascript' LANGUAGE='JavaScript'><!--
    function categorySelected(){
        var selectedCategory = document.search.Category.options[document.search.Category.selectedIndex].value;
        var selectedCategoryURL = './index2.php?pageId=9&searchtype=advanced&search=duh&selectedCategory='+selectedCategory;
        location.reload(selectedCategoryURL);
    }
    function typeSelected(){
        var selectedType = document.search.CategoryType.options[document.search.CategoryType.selectedIndex].value;
        var selectedTypeURL = './index2.php?pageId=9&searchtype=advanced&search=duh&selectedCategory=$selectedCategory&selectedType='+selectedType;
        location.reload(selectedTypeURL);
    }
    //--></SCRIPT>";


/* Get New equipment, max. of 10 new equipment displayed on page */


if(!$addequip=='SUBMIT' && !$addequipment=='SUBMIT' && $selectedCategory==''){
    $queryData = "SELECT BARCODE, TYPENR, DESCRIPTION FROM EQUIPMENT LIMIT 0 , 5";
    $result = mysql_query ($queryData);
    echo "<FORM method=POST name=NewEquipment>";
    echo "<TABLE CLASS=C ><CAPTION><B><BR><CENTER>Overview new equipment</CENTER></CAPTION>";
    if(mysql_num_rows($result) == 0){
            echo "<TR><B><TD>NO new equipment found</TD></TR>";
        }
    else{
        echo "<TR><TD>Barcode</TD><TD>Typenummer</TD><TD>Description</TD></TR>";
        for ($i = 0; $i < mysql_num_rows($result); $i++){
            echo("<TR>");
            $row_array = mysql_fetch_row($result);
            for ($j = 0; $j < mysql_num_fields($result); $j++){
                //$Equipment = $row_array[0]; 
                $Typenr = $row_array[1];
                if ($j == 0){
                  echo "<TD><input type='checkbox' name='Equipment_array[]' hidden value='$Equipment'>$row_array[$j]</TD>";
                } else {
                echo("<TD>" . $row_array[$j] . "</TD>");
                }
            }
            echo("</TR>");

        }
    }
    echo "<TD COLSPAN=3><CENTER>
        <input type='submit' name='addequip' value='Submit'>
        </CENTER></TD>
        </TR></TABLE></FORM>";
}


/*  Start of function to add new equipment
    Displays the GUI for adding new equipment  */

if(isset($addequip) || $selectedCategory!=''){ 

/* GEEN SPATIES IN $NoPreference, of andere waarden die via JavaScript gaan!    
$noPreferenceClean is de versie waarin de underscores '_' zijn vervangen door spaties ' ' */
$noPreference = "====___No_Preference___====";
$noPreferenceClean = str_replace ("_", "&nbsp;", $noPreference);

echo "<FORM method=POST name=search>";
$Equipment = $_POST['Equipment'];
echo "<TABLE Width=60%><CAPTION>Selecting Category and Type [GUI]</CAPTION><TR><TD>";
echo "test barcode: ". $Equipment;


/* Advanced search, category als opties in drop-downbox                                                 */


echo"
<TR>
<TD>Category:</TD><TD><select name=Category onchange='categorySelected()'><OPTION value=\"$noPreference\">$noPreferenceClean</OPTION>";
$queryData = "SELECT DISTINCT CATEGORY FROM CATEGORY_TYPE ORDER BY CATEGORY ASC";
$result = mysql_query ($queryData);
for ($i = 0; $i < mysql_num_rows($result); $i++){
        $row_array = mysql_fetch_row($result);
        for ($j = 0; $j < mysql_num_fields($result); $j++){
                echo "<OPTION value=\"$row_array[$j]\"";
                if ($selectedCategory == $row_array[$j]){
                     echo " SELECTED";
                }
                echo ">$row_array[$j]</OPTION>";
        }
}
/* Kijken aan de hand van de typeID welke typen bij de geselecteerde (door 
middel van javascript) category horen, deze als opties in drop-downbox printen. */
mysql_free_result($result);
echo "</select></TD></TR>";
if ($selectedCategory != $noPreference){
     if ($selectedCategory != ''){
            echo "<TR>
            <TD>Type of $selectedCategory:</TD><TD><select name=CategoryType onchange='typeSelected()'><OPTION value=\"$noPreference\">$noPreferenceClean</OPTION>";
            $queryData = "SELECT DISTINCT TYPE FROM CATEGORY_TYPE WHERE CATEGORY='$selectedCategory' ORDER BY TYPE ASC";
            $result = mysql_query ($queryData);
            for ($i = 0; $i < mysql_num_rows($result); $i++){
                    $row_array = mysql_fetch_row($result);
                    for ($j = 0; $j < mysql_num_fields($result); $j++){
                            echo "<OPTION value=\"$row_array[$j]\"";
                            if ($selectedType == $row_array[$j]){
                                  echo " SELECTED";
                            }
                            echo ">$row_array[$j]</OPTION>";
                    }
            }
            mysql_free_result($result);
            echo "</select></TD></TR>";

     }

}
    echo"   <TR><TD COLSPAN=2><CENTER><input type='submit' name='addequipment' value='Add Specs'></CENTER></TD></TR>";

echo "</TABLE></FORM>";

echo "test". $selectedCategory; 
echo $selectedType; 
echo $Equipment;
}


if (isset($addequipment) && count($Equipment_array)>0) { 
    $Equipment_arrayCount=0;
    foreach($Equipment_array as $Equipment){ $count++;
        $Equipment_arrayCount++;

        $Equip = $Equipment;
        
        echo "<BR><FORM ACTION='./index2.php?pageId=9' method=POST name=equipmentadd> 
        <TABLE Width=90%><CAPTION><CENTER>Add new equipment</CENTER></CAPTION>
        <TR><TD>Barcode: </TD><TD><input type='text' size='25' maxlength='50' name='Equip' value= '$Equip'></TD>
        <TD>TypeID: </TD><TD><input type='text' size='10' maxlength='25' name='typeID' value= '$Typenr' DISABLED></TD></TR> 
        <TR><TD>Category: </TD><TD><input type='text' size='25' maxlength='50' name='Category' value= '$Category' DISABLED></TD>
        <TD>Type: </TD><TD><input type='text' size='25' maxlength='50' name='Type' value= '$Type' DISABLED ></TD></TR> 
        
        <TR><TD COLSPAN=4>Specifications for barcode: $Equip</TD></TR>
        <TR><TD>Handleidinglink: </TD><TD><input type='text' size='25' maxlength='50' name='handleidingADD'></TD>
        <TD>Datasheetlink: </TD><TD><input type='text' size='25' maxlength='50' name='datasheetADD'></TD></TR> 
        <TR><TD>Fotolink: </TD><TD><input type='text' size='25' maxlength='50' name='fotoADD'></TD>
        <TD>Driverlink: </TD><TD><input type='text' size='25' maxlength='50' name='driverADD'></TD></TR> 
        <TR><TD COLSPAN=4>&nbsp</TD></TR> 


Ook al defineer ik de variabelen $Equipment of $Equip als Global, de variabelen zijn na de eerste submit leeg waar de category en type gekozen kunnen worden.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

global is niet voor het definieren van variabalen als globaal, slechts om quasi-globale variablen te importeren in een functie

code:
1
2
3
4
5
6
$bla = 'test';

function oy () {
   global $bla;
   echo $bla;
}


Haal die global dus weg (tenzij je deze hele zooi include in een functie :P en je die variabelen al buiten de functie hebt gedeclareerd).

Initialiseer je variabelen gewoon als

$Equipment_array = array ();
$Equipment = '';

of als je toch direct de post variabelen wilt hebben:

$Equipment = isset ($_POST['equipment']) ? $_POST['equipment'] : '';

[ Voor 24% gewijzigd door Bosmonster op 23-11-2004 10:18 ]


Acties:
  • 0 Henk 'm!

  • Cerntje
  • Registratie: September 2003
  • Laatst online: 09-09 06:57
Ik heb beide adviezen geprobeerd, maar dat mocht niet baten. Wat wel is gelukt, is de variabele $Equipment een sessievariabele te maken. Op deze manier is de variabele in de 2e form wel opvraagbaar.

In dit deel van de code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if(!$addequip=='SUBMIT' && !$addequipment=='SUBMIT' && $selectedCategory==''){
    $queryData = "SELECT BARCODE, TYPENR, DESCRIPTION FROM EQUIPMENT LIMIT 0 , 5";
    $result = mysql_query ($queryData);
    echo "<FORM method=POST name=NewEquipment>";
    echo "<TABLE CLASS=C ><CAPTION><B><BR><CENTER>Overview new equipment</CENTER></CAPTION>";
    if(mysql_num_rows($result) == 0){
            echo "<TR><B><TD>NO new equipment found</TD></TR>";
        }
    else{
        echo "<TR><TD>Barcode</TD><TD>Typenummer</TD><TD>Description</TD></TR>";
        for ($i = 0; $i < mysql_num_rows($result); $i++){
            echo("<TR>");
            $row_array = mysql_fetch_row($result);
            for ($j = 0; $j < mysql_num_fields($result); $j++){
                //$Equipment = $row_array[0]; 
                $Typenr = $row_array[1];
                if ($j == 0){
                  echo "<TD><input type='checkbox' name='Equipment_array[]' hidden value='$Equipment'>$row_array[$j]</TD>";
                } else {
                echo("<TD>" . $row_array[$j] . "</TD>");
                }
            }
            echo("</TR>");

        }
    }
    echo "<TD COLSPAN=3><CENTER>
        <input type='submit' name='addequip' value='Submit'>
        </CENTER></TD>
        </TR></TABLE></FORM>";
}


Hier wordt $Equipment gevuld met uiteindelijk de laatste opgehaalde variabele uit de database. Als de gebruiker een apparaat geselecteerd heeft en op submit geklikt heeft zou er een array 'Equipment_array[]' moeten zijn. Maar als ik dan het eerste element in die array aan $Equipment koppel blijkt de array leeg te zijn.

Maar terug naar het eerste probleem. Waarom worden de variabelen niet gewoon tussen deze 2 forms verzonden? Zelfs met $_POST['equipment'] is de variabele niet terug te halen. Alleen als $Equipment als sessievariabele gekenmerkt wordt is de variabele bekent binnen de 2e form. :X

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
als je 2 formulieren heb en je post er daar 1 van dan zie je alleen wat er binnen dát formulier staat

doe gewoon eens print_r($_POST) om inzicht te krijgen wat er precies door je formulier gepost wordt

En gebruik $_POST ook om de variabelen aan te spreken