[PHP/SQL] Nieuwe velden toevoegen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • dbzokphp
  • Registratie: Juni 2006
  • Laatst online: 12:05
Ik ben bezig met telecomsite waarbij het mogelijk is om extra bundels (voor providers) in de database toe te voegen.
Het staat op: http://www.abbie.nl/telecomhouse/bundels.php

Alleen het probleem is, als ik op "Nog een rij toevoegen" klik, voegt ie wel een nieuwe rij toe, maar dat doet ie maar 1 malig. Dus als je daarna nog een keer op "Nog een rij toevoegen" klikt, gaat ie over de oude heen..

Het script werkt sowieso nog niet vlekkeloos en is nog lang niet af, maar ik kom nu niet verder!

Mijn code:
code:
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
<?
if(!empty($_POST[submit]))
    {
        if(!empty($_POST[cat_new]))
            {
                $insert = "INSERT INTO `bundel_cat` (
                    id,
                    name
                )VALUES(
                    '',
                    '$_POST[cat_new]'
                )";
                mysql_query($insert)or die(mysql_error());
                
                $query = mysql_query("SELECT * FROM bundel_cat ORDER BY id DESC LIMIT 1");
                $row = mysql_fetch_object($query);
                
                $cat_id = $row->id;
            }
        else
            {
                $cat_id = $cat;
            }
        $abbo = serialize($_POST['abonnementen']);
        
        $insert = "INSERT INTO `bundel` (
            id,
            cat_id,
            abonnement_id,
            name,
            prijs
        )VALUES(
            '',
            '$cat_id',
            '$abbo',
            '$_POST[naam]',
            '$_POST[prijs]'
        )";
        mysql_query($insert)or die(mysql_error());

    }
?>
T-Mobile<br />
<fieldset>
                <legend>Nieuw</legend>
<form method="post" name="form1" action="bundels.php">
    <table width="100%" cellpadding="3" cellspacing="0">
        <tr>
            <td>
                <?php
                    $query = "SELECT * FROM bundel_cat ORDER BY name";
                    $result = mysql_query($query);
                    $aantal = mysql_num_rows($result);
                        echo "Categorie:
            </td>
            <td colspan=\"4\">
                <select name=\"cat\" onchange=\"if(this.selectedIndex==" . $aantal . "){ javascript:enableField(); }else{ javascript:disableField(); }\">";
                        while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
                            {
                                echo "<option value=\"" . $row[id] . "\">" . $row[name] . "</option>";
                        
                            }
                        echo "<option>Anders..</option>
                 </select>
                 <input type=\"text\" name=\"cat_new\" disabled=\"true\" value=\"Naam van de categorie\" />
            </td>
        </tr>
        <tr>
            <td>
                Opties:
            </td>
            <td valign=\"top\">Optie 1:<br />
                <input type=\"text\" name=\"naam\">
            </td>
            <td valign=\"top\">Prijs per maand:<br />
                <input type=\"text\" name=\"prijs\">
            </td>
            <td>
                Is mogelijk bij voor de volgende abonnementen:<br />
                <select name=\"abonnementen[]\" size=\"5\" multiple=\"multiple\">";
                    $query = "SELECT * FROM abonnementen WHERE provider = 7";
                    $result = mysql_query($query);
                    while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
                            {
                                echo "<option>" . $row[naam] . "</option>";
                            }   
                echo "</select><br />(Meerdere mogelijk door de CTRL toets ingedrukt te houden)
            </td>
            <td valign=\"bottom\">
                <div align=\"right\">
                    <input type=\"submit\" name=\"submit\" value=\"Toevoegen\"> of <input type=\"submit\" name=\"submit2\" value=\"Nog een rij toevoegen\">
                </div>
            </td>
        </tr>";
if(!empty($_POST[submit2]))
    {
        $abbo = serialize($_POST['abonnementen']);
        $rij[] = array($_POST['naam'],$_POST['prijs'],$abbo);
    }
for ($i=0; $i < count($rij); $i++)
{
    echo"<tr>
            <td>
                Opties:
            </td>
            <td valign=\"top\">Optie 1:<br />
                <input type=\"text\" name=\"naam\" value=\"".$rij[$i][0]."\">
            </td>
            <td valign=\"top\">Prijs per maand:<br />
                <input type=\"text\" name=\"prijs\" value=\"".$rij[$i][1]."\">
            </td>
            <td>
                Is mogelijk bij voor de volgende abonnementen:<br />
                <select name=\"abonnementen[]\" size=\"5\" multiple=\"multiple\">";
                    $query = "SELECT * FROM abonnementen WHERE provider = 7";
                    $result = mysql_query($query);
                    while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
                            {
                                echo "<option>" . $row[naam] . "</option>";
                            }   
                echo "</select><br />(Meerdere mogelijk door de CTRL toets ingedrukt te houden)
            </td>
            <td valign=\"bottom\">
                <div align=\"right\">
                    <input type=\"submit\" name=\"submit\" value=\"Toevoegen\"> of <input type=\"submit\" name=\"submit2\" value=\"Nog een rij toevoegen\">
                </div>
            </td>
        </tr>";
}
    echo "</table>";
?>
</form>


Weet iemand hoe ik die kan oplossen?

Acties:
  • 0 Henk 'm!

Verwijderd

Je zit in het verkeerde forum.

Dat even terzijde. Als het via PHP wil oplossen moet je ergens een teller bijhouden hoeveel velden er al open staan. Bij het posten check je wat er gepost is "toevoegen" of "Nog een nieuwe rij". In het geval van de laatste verhoog je de counter en print je met een for loop de velden uit. Dit om je een zetje in de goede richting te geven. ow wacht dat doe je al ;) Maar waar hou je bij hoeveel rijen er zijn? Je kan beter gaan werken met arrays in de input name's bv <input name="optie[]" value="" />. Zoek maar eens op

Persoonlijk zou ik een javascript oplossing beter vinden. Maar daarmee maak je het misschien te ingewikkeld

[ Voor 16% gewijzigd door Verwijderd op 13-03-2007 13:20 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Is het id veld in de Database een automatisch oplopend nummer?

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 09-09 22:26

André

Analytics dude

En wat heb je zelf al geprobeerd? Het is niet de bedoeling dat wij je script gaan fixen.
Verder hoort dit in Programming