AJAX script: aantal tekst inputs bepalen via een select input zonder de pagina t

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Victor-Jan Goemans

Victor-Jan Goemans

10/01/2010 19:00:00
Quote Anchor link
Hoi, ik heb een klein ajaxscriptje gemaakt (grotendeels mbv van de tutorial van W3schools) om te selecteren hoeveel tracks een muziekalbum telt, en zonder de pagina te vernieuwen x aantal text inputs te tonen. Helaas werkt het niet naar behoren.
PHP-script:http://pastebin.be/22874
JS-script:
http://pastebin.be/22872
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans
 
PHP hulp

PHP hulp

14/11/2024 18:47:21
 
Gerben Jacobs

Gerben Jacobs

10/01/2010 19:25:00
Quote Anchor link
Wat werkt er niet precies..
 
Victor-Jan Goemans

Victor-Jan Goemans

10/01/2010 21:01:00
Quote Anchor link
Wanneer ik een nummer selecteer, verschijnt er niets.
 
Computer

Computer

10/01/2010 21:07:00
Quote Anchor link
Is er ergens een voorbeeld online ofzo?
 
Victor-Jan Goemans

Victor-Jan Goemans

11/01/2010 17:25:00
Quote Anchor link
Nee, ik vrees van niet. Maar ik zal nog eens een poging doen duidelijk uit te leggen wat ik bedoel. Het concept van de site is naast de community het schrijven en lezen van reviews over vanalles en nog wat (films, muziekalbums, evenementen, varia). Die worden door de admins in een database gezet via een script waarvan ik het relevante stuk heb getoond in de pastebin hierboven. Het gaat hier om een muziekalbum. Aangezien het aantal nummers op een muziekalbum verschilt van album tot album, moet degene die de review toevoegt eerst selecteren uit hoeveel tracks de tracklist bestaat. Om het script even eenvoudig te houden, kan je voorlopig nog maar kiezen uit 1,2,3 of 4 tracks. Dit wordt later uiteraard uitgebreid.

Wanneer dit geselecteerd is (met het <button> gedeelte) moeten intern de 1,2,3 of 4 text inputs verschijnen zodat de admins ze zo track voor track kunnen toevoegen. Om de tracks te onderscheiden worden ze in een array gezet (track[1], track[2], enzovoorts).

Is het een beetje duidelijk zo? Alvast op voorhand bedankt voor de hulp!
 
Onbekend Onbekend

Onbekend Onbekend

11/01/2010 17:31:00
Quote Anchor link
Wat je doet is een request naar de server om PHP x aantal velden te laten outputten in html. Dat is niet wat je wil. Je wil dit zonder JS oplossen. Je maakt in JS een for loopje dat x keer rond gaat (dus het aantal wat je uit de select input haalt), die voegt gewoon heel de tijd de zelfde code toe. De veldnamen geef je dan zo: name="track[]" dan krijg je in je POST var een array met alle tracknamen. Niet zo moeilijk. Ik wil vanavond wel wat voor je schrijven, heb nu alleen even geen tijd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
function showUser(x)
{
var output;
for(i=0;i<x;i++) {
output += "<input name="track[]" type="text" value="" /><br />";
document.getElementById("txtHint").innerHTML = output;
}
}


Zo simpel kan het zijn. Je moet het even aan je eigenlijk situatie aanpassen maar het zal niet veel anders zijn dan dit.
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
 
Victor-Jan Goemans

Victor-Jan Goemans

11/01/2010 21:13:00
Quote Anchor link
Hm, ik doe waarschijnlijk iets erg obvious verkeerd; ik heb de JS-code vervangen door wat je hierboven gepost hebt, en in de PHPcode staat gewoon dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
                <form>
                <select name="users" onChange="showUser(this.value)">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                </select>
                </form>


In ieder geval al ontzettend bedankt !
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans
 
Onbekend Onbekend

Onbekend Onbekend

11/01/2010 23:47:00
Quote Anchor link
Ik zal het eens een beetje ombouwen, goed?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if(!isset($_GET['q'])) { ?>

Tracklist<br />
<form>
<select name="users" onchange="showUser(this.value)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</form>
<br />
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    } elseif(isset($_POST['tracklist'])) {
        echo "Tracklist:<br />";
        for($i = 0; $i <= count($_POST['track']); $i++) {
            $track = $_POST['track'][$i];
            echo $_POST['track'][$i] . '<br />';
        }
    }

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
function showUser(x) {
    var output;
    for(i=0;i<x;i++) {
        output += "<input type=\"text\" name=\"track[]\" value=\"Track" + i + "\" /><br />";
    }
    output += "<input type=\"submit\" name=\"verzenden_album\" value=\"Bevestigen\" />";
    document.getElementById("txtHint").innerHTML = output;
}


Dat zou moeten werken.
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
 
Victor-Jan Goemans

Victor-Jan Goemans

12/01/2010 18:14:00
Quote Anchor link
Bedankt! Het werkt echter nog niet, naar ik meen omdat je dit gebruikt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
elseif(isset($_POST['tracklist']))

Die voorwaarde zal nooit juist zijn, aangezien er geen submitknop (meer) is, er is dus nooit een $_POST['tracklist']. Waarschijnlijk is dit wel op te lossen voor $_POST['tracklist'] te vervangen door $_POST['track'][0] ofzo. Ik moet nu weg, maar ik zal het over een halfuurtje proberen en laten weten of het werkt.

Edit: ik heb het geprobeerd, maar werken doet 't helaas niet (geen reactie wanneer ik een nummer selecteer)
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans
 
Victor-Jan Goemans

Victor-Jan Goemans

13/01/2010 19:07:00
Quote Anchor link
Zou het helpen het hele script nog eens te posten?
Edit:(relevante regels:25-33 & 192 - 213)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Review toevoegen</title>
<link rel="stylesheet" type="text/css" href="main.css" />
<script type="text/javascript" src="selectuser.js"></script>
<script type="text/javascript" src="js/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
    mode : "textareas"
});
alert(TinyMCE);
</script>
<script type="text/javascript">
var files = 1;
function addFile() {
        files++;
        var newFile = document.createElement("div");
        newFile.innerHTML = '<br>-------------------<br><label for="addTrack">Foto '+ files +':</label><br><input type="text" name="track[]" id="track" />';
        document.getElementById("uploadFiles").appendChild(newFile);
        document.getElementById("countFiles").value = parseInt((document.getElementById("countFiles").value)) + 1;
}
</script>
<script type="text/javascript">
function showUser(x) {
    var output;
    for(i=0;i<x;i++) {
        output += "<input type=\"text\" name=\"track[]\" value=\"Track" + i + "\" /><br />";
    }
    output += "<input type=\"submit\" name=\"verzenden_album\" value=\"Bevestigen\" />";
    document.getElementById("txtHint").innerHTML = output;
}
</script>
</head>
<body>
<a href="add.php?type=event"><h1>Concertreview toevoegen</h1></a>
<?
session_start();
if(isset($_SESSION['gebruiker']))
{

if($_GET['type'] == "event")
{

    include('connect.php');
    $query = mysql_query("SELECT * FROM concert WHERE concert = '".mysql_real_escape_string($_POST['concert'])."'") or die(mysql_error);
    $tel = mysql_real_escape_string(mysql_num_rows($query));
    if ($tel > 0)
    {

        echo "Deze review staat al in de database.";
    }

    else
    {
                if(isset($_POST['verzenden_event']))
                {

                    if(!isset($_POST['auteur']) || !isset($_POST['review']) || !isset($_POST['concert']) || !isset($_POST['datum']) || !isset($_POST['waardering']) || $_POST['concert'] == "Concert*" || $_POST['auteur'] == "Auteur*" || $_POST['datum'] == "Datum*" || $_POST['review'] == "Review*")
                {

                        echo "Alle velden moeten ingevuld zijn.";                
                    }

                    else
                    {
                        $datum=date("j M Y");
                        $maand['Jan']="januari";  
                        $maand['Feb']="februari";
                        $maand['Mar']="maart";
                        $maand['Apr']="april";
                        $maand['May']="mei";
                        $maand['Jun']="juni";
                        $maand['Jul']="juli";
                        $maand['Aug']="augustus";
                        $maand['Sep']="september";
                        $maand['Oct']="oktober";
                        $maand['Nov']="november";
                        $maand['Dec']="december";
                        
                        foreach($maand as $k=>$v)
                        {
  
                            $datum=str_replace($k, $v, $datum);  
                        }

                        $con = mysql_connect("localhost","skadmin","naaktslak");
                        if (!$con)
                        {

                            die('Could not connect: ' . mysql_error());
                        }
    
                        mysql_select_db("skylinedb1", $con);  
                        
                        mysql_query("INSERT INTO concert (review,auteur,concert,datum,waardering,datumtoegevoegd) VALUES ('".mysql_real_escape_string($_POST['review'])."','".mysql_real_escape_string($_POST['auteur'])."','".mysql_real_escape_string($_POST['concert'])."', '".mysql_real_escape_string($_POST['datum'])."', '".mysql_real_escape_string($_POST['waardering'])."', '".$datum."')") or die (mysql_error());
                        echo "De review is succesvol toegevoegd. ";
                        ?>

                        <form action="upload_multiple.php" method="post">
                        <input type="hidden" name="ID" value=" <?=$_POST['concert']?> " />
                        <input type="submit" name="sendID" value="Klik hier om foto's van dit evenement toe te voegen." />
                        </form>
                        <?
                        }
                }

                else
                {
                    ?>
<div>
                    <form action="add.php?type=event" method="post">
                    <input value="Concert*" type="text" name="concert" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                    <div class="info">De naam van het evenement, indien jaarlijkse happening het jaar ook vermelden. <u>Voorbeeld</u>: Pukkelpop 2009</div>
                    <input value="Auteur*" type="text" name="auteur" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                    <div class="info">De forumnaam van de auteur van de review.</div>
                    <input value="Datum*" type="text" name="datum" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                    <div class="info">De datum van het evenement; dag, maand (voluit) en jaar. Indien meerdaags evenement begin- en einddatum geven. <u>Voorbeeld</u>: 19 augustus 2009 tot 21 augustus 2009.</div>
                    <select name="waardering">
                    <option value="0.5">0.5</option>
                    <option value="1">1</option>
                    <option value="1.5">1.5</option>
                    <option value="2">2</option>
                    <option value="2.5">2.5</option>
                    <option value="3">3</option>
                    <option value="3.5">3.5</option>
                    <option value="4">4</option>
                    <option value="4.5">4.5</option>
                    <option value="5">5</option>
                    </select>
                    <div class="info">De waardering van de auteur voor het evenement, met een maximum van 5.</div>
                    <textarea name="review" rows="5" cols="30" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }">Review*</textarea><br />
                    <div class="info">De review zelf. Enters moeten voorlopig nog aangegeven worden met de &lt;br /&gt; tag.</div>
                    <div class="info">Het aantal foto's dat je hebt van dit evenement (niet verplicht, maximum aantal 5). Het uploaden gebeurt in de volgende stap.</div>
                    <input type="submit" name="verzenden_event" value="Bevestigen" />
                    </form></div>
                <?php
                }
    }
}


?>
        
<hr />
<a href="add.php?type=album"><h1>Albumreview toevoegen</h1></a>
<?
include('connect.php');
$query = mysql_query("SELECT * FROM `album` WHERE `album` = '".mysql_real_escape_string($_POST['album'])."'") or die(mysql_error);
$tel = mysql_real_escape_string(mysql_num_rows($query));
if ($tel > 0)
{

    echo "Deze review staat al in de database.";
}

else
{
            if(isset($_POST['verzenden_album']))
            {

                if(!isset($_POST['band']) || !isset($_POST['auteur']) || !isset($_POST['review']) || !isset($_POST['album']) || !isset($_POST['datum']) || !isset($_POST['waardering']) || $_POST['album'] == "Album*" || $_POST['auteur'] == "Auteur*" || $_POST['datum'] == "Datum*" || $_POST['review'] == "Review*")
            {

                    echo "Alle velden moeten ingevuld zijn.";                
                }

                else
                {
                    $datum=date("j M Y");
                    $maand['Jan']="januari";  
                    $maand['Feb']="februari";
                    $maand['Mar']="maart";
                    $maand['Apr']="april";
                    $maand['May']="mei";
                    $maand['Jun']="juni";
                    $maand['Jul']="juli";
                    $maand['Aug']="augustus";
                    $maand['Sep']="september";
                    $maand['Oct']="oktober";
                    $maand['Nov']="november";
                    $maand['Dec']="december";
                    
                    foreach($maand as $k=>$v)
                    {
  
                        $datum=str_replace($k, $v, $datum);  
                    }
  
                    for($i=0;$i<=($_POST['countFiles']-1);$i++)
                    {

                        $track = $_POST['track'][$i];
                        echo $track;
                    }

                    include('connect.php');
                    mysql_query("INSERT INTO `album` (band,review,auteur,album,datum,waardering,datumtoegevoegd,tracklist) VALUES ('".mysql_real_escape_string($_POST['band'])."','".mysql_real_escape_string($_POST['review'])."','".mysql_real_escape_string($_POST['auteur'])."','".mysql_real_escape_string($_POST['album'])."', '".mysql_real_escape_string($_POST['datum'])."', '".mysql_real_escape_string($_POST['waardering'])."', '".$datum."', '".mysql_real_escape_string($_POST['tracklist'])."')") or die (mysql_error());
                    echo "De review is succesvol toegevoegd.";

                  ?>

                    <form action="upload.php" method="post"
                    enctype="multipart/form-data">
                    <label for="file">Filename:</label>
                    <input type="file" name="file" id="file" />
                    <input type="hidden" name="album" value="<? echo mysql_real_escape_string($_POST['album']); ?>" />
                    <input type="submit" name="upload_cover" value="Opslaan" />
                    </form>
                <br />
                <div class="info">De cover van het album. Vereisten:200x200px en JPEG-extensie (.jpg).</div>
                <?php
                }
            }

            else
            {
                ?>
<div>
                <form action="add.php?type=album" method="post">
                <input value="Album*" type="text" name="album" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                <div class="info">De naam van het album.</div>
                <input value="Band*" type="text" name="band" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                <div class="info">De uitvoerders van het album.</div>
                <input value="Auteur*" type="text" name="auteur" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                <div class="info">De forumnaam van de auteur van de review.</div>
                <input value="Datum*" type="text" name="datum" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                <div class="info">De releasedatum van het album; dag, maand (voluit) en jaar.</div>
                <select name="waardering">
                <option value="0.5">0.5</option>
                <option value="1">1</option>
                <option value="1.5">1.5</option>
                <option value="2">2</option>
                <option value="2.5">2.5</option>
                <option value="3">3</option>
                <option value="3.5">3.5</option>
                <option value="4">4</option>
                <option value="4.5">4.5</option>
                <option value="5">5</option>
                </select>
                <div class="info">De waardering van de auteur voor het album, met een maximum van 5.</div>
                <textarea cols="50" rows="15" name="review" rows="5" cols="30" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }">Review*</textarea><br />
                <div class="info">De review zelf. Enters moeten voorlopig nog aangegeven worden met de &lt;br /&gt; tag.</div>
                <?php if(!isset($_GET['q']))
                {

                ?>
  
                <span>Tracklist</span><br />
                <form>
                <select name="users" onchange="showUser(this.value)" id="track">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                </select>
                </form>
                <?php
                }
                elseif(isset($_GET['q']))
                {

                    echo "Tracklist:<br />";
                    for($i = 0; $i <= count($_POST['track']); $i++)
                    {

                        $track = $_POST['track'][$i];
                        echo $_POST['track'][$i] . '<br />';
                    }
                }

                ?>

                <br />              
                <div id="uploadFiles">
                <label for="addTrack">Track 1:</label><br>
                <input type="text" name="track[]" id="track[]" />
                </div>
                <input type="hidden" name="countFiles" id="countFiles" value="1">
                <a href="javascript:void(0);" onClick="addFile();">Voeg een track toe</a>
                <br />
                <br />
                <br />                
                <input type="submit" name="verzenden_album" value="Bevestigen" />
                </form></div>
            <?php
            }
}

?>

<hr />
<a href="add.php?type=film"><h1>Filmreview toevoegen</h1></a>
<?
include('connect.php');
$query = mysql_query("SELECT * FROM `film` WHERE `film` = '".mysql_real_escape_string($_POST['film'])."'") or die(mysql_error);
$tel = mysql_real_escape_string(mysql_num_rows($query));
if ($tel > 0)
{

    echo "Deze review staat al in de database.";
}

else
{
            if(isset($_POST['verzenden_film']))
            {

                if(!isset($_POST['regisseur']) || !isset($_POST['auteur']) || !isset($_POST['review']) || !isset($_POST['film']) || !isset($_POST['datum']) || !isset($_POST['waardering']) || $_POST['film'] == "Film*" || $_POST['Regisseur'] == "Regisseur*" || $_POST['datum'] == "Datum*" || $_POST['review'] == "Review*" || $_POST['speelduur'] == "Speelduur*")
            {

                    echo "Alle velden moeten ingevuld zijn.";                
                }

                else
                {
                    $datum=date("j M Y");
                    $maand['Jan']="januari";  
                    $maand['Feb']="februari";
                    $maand['Mar']="maart";
                    $maand['Apr']="april";
                    $maand['May']="mei";
                    $maand['Jun']="juni";
                    $maand['Jul']="juli";
                    $maand['Aug']="augustus";
                    $maand['Sep']="september";
                    $maand['Oct']="oktober";
                    $maand['Nov']="november";
                    $maand['Dec']="december";
                    
                    foreach($maand as $k=>$v)
                    {
  
                        $datum=str_replace($k, $v, $datum);  
                    }
  
                    include('connect.php');
                    mysql_query("INSERT INTO `film` (regisseur,review,auteur,film,datum,waardering,datumtoegevoegd,speelduur,youtube,cast) VALUES ('".mysql_real_escape_string($_POST['regisseur'])."','".mysql_real_escape_string($_POST['review'])."','".mysql_real_escape_string($_POST['auteur'])."','".mysql_real_escape_string($_POST['film'])."', '".mysql_real_escape_string($_POST['datum'])."', '".mysql_real_escape_string($_POST['waardering'])."', '".$datum."','".mysql_real_escape_string($_POST['speelduur'])."','".mysql_real_escape_string($_POST['youtube'])."','".mysql_real_escape_string($_POST['cast'])."')") or die (mysql_error());
                    echo "De review is succesvol toegevoegd.";
                  ?>

                    <form action="upload.php" method="post"
                    enctype="multipart/form-data">
                    <label for="file">Filename:</label>
                    <input type="file" name="file" id="file" />
                    <input type="hidden" name="film" value="<? echo mysql_real_escape_string($_POST['film']); ?>" />
                    <input type="submit" name="upload_cover_film" value="Opslaan" />
                    </form>
                <br />
                <div class="info">De cover van de film. Vereisten:200x200px en JPEG-extensie (.jpg).</div>
                <?php
                }
            }

            else
            {
                ?>
<div>
                <form action="add.php?type=film" method="post">
                <input value="Film*" type="text" name="film" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                <div class="info">De naam van de film.</div>
                <input value="Regisseur*" type="text" name="regisseur" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }" /><br />
                <div class="info">De (voor- en achter)naam van de regisseur, voluit.</div>
                <textarea type="text" name="cast" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }">Cast*</textarea><br />
                <div class="info">De cast van de film, de (belangrijkste) acteurs dus. Minimum 2, maximum 5. Voeg een enter tussen de verschillende acteurs (eveneens voor-en achternaam).</div>
                <input value="Auteur*" type="text" name="auteur" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }" /><br />
                <div class="info">De forumnaam van de auteur van de review.</div>
                <input value="Datum*" type="text" name="datum" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                <div class="info">De releasedatum van het album; dag, maand (voluit) en jaar.</div>
                <select name="waardering">
                <option value="0.5">0.5</option>
                <option value="1">1</option>
                <option value="1.5">1.5</option>
                <option value="2">2</option>
                <option value="2.5">2.5</option>
                <option value="3">3</option>
                <option value="3.5">3.5</option>
                <option value="4">4</option>
                <option value="4.5">4.5</option>
                <option value="5">5</option>
                </select>
                <div class="info">De waardering van de auteur voor de film, met een maximum van 5.</div>
                <textarea name="review" rows="5" cols="30" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }">Review*</textarea><br />
                <div class="info">De review zelf. Enters moeten voorlopig nog aangegeven worden met de &lt;br /&gt; tag.</div>
                <input value="Trailer (YouTube)*" type="text" name="youtube" onfocus="if(this.value == this.defaultValue) { this.value = '' }" onblur="if(this.value == '') { this.value = this.defaultValue }"/><br />
                <div class="info">Geef hier - indien mogelijk - de YouTubelink in van de trailer.</div>
                <input type="submit" name="verzenden_film" value="Bevestigen" />
                </form></div>
            <?php
            }
}
}

else { echo "Je moet ingelogd zijn om reviews toe te voegen. Klik <a href=\"modpannel.php\">hier</a> om in te loggen."; }
            ?>
        
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans
 
Onbekend Onbekend

Onbekend Onbekend

14/01/2010 15:58:00
Quote Anchor link
Hey,
dit werkt bij mij:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Review toevoegen</title>
<script type="text/javascript">
function showUser(x) {
    var output = "<form action=\"#\" method=\"POST\">";
    for(i=0;i<x;i++) {
        output += "<input type=\"text\" name=\"track[]\" value=\"Track" + i + "\" /><br />";
    }
    output += "<input type=\"submit\" name=\"verzenden_album\" value=\"Bevestigen\" /></form>";
    document.getElementById("trackfields").innerHTML = output;
}
</script>
</head>
<body>
                <span>Tracklist</span><br />
                <div id="trackfields"><!-- --></div>
                <form>
                <select name="users" onchange="showUser(this.value)" id="track">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                </select>
                </form>
</body>
</html>


Ik heb even al je PHP er tussen uit gesloopt omdat ik daar niet veel mee kan.

Maar is het niet makkelijk om gewoon x velden weer te geven en dan dat gebruikers op een '+' kunnen drukken voor een extra veld?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Review toevoegen</title>
<script type="text/javascript">
var lastTrack = 1;
var maximum = 5;
function addField() {
    if (lastTrack + 1 <= maximum) { /*eventueel een maximum aan velden instellen */
        lastTrack = lastTrack + 1;
        document.getElementById("fields").innerHTML += "<br /><input type=\"text\" name=\"track[]\" value=\"Track" + lastTrack + "\" />";
        if (lastTrack >= maximum) {
            document.getElementById("addField").innerHTML = "";
        }
    }
}
</script>
</head>
<body>
                <span>Tracklist</span><br />
                <form action="#" method="POST">
                  <div id="trackfields">
                    <span id="fields">
                      <input type="text" name="track[]" value="Track 1" />
                    </span>
                    <span id="addField"><a href="#" onclick="addField();">+</a></span>
                  </div>
                  <input type="submit" name="verzenden_album" value="Bevestigen" />
                </form>
</body>
</html>

Dat lijkt met efficiënter.
 
Victor-Jan Goemans

Victor-Jan Goemans

14/01/2010 21:42:00
Quote Anchor link
Wow, hartelijk bedankt, echt! Het werkt nu bijna helemaal. Het enige dat nog niet helemaal werkt is dat als je bijvoorbeeld 3 fields selecteert, en daarna er nog een vierde bijwilt en je klikt op de '+' dan staat er in het vierde veld eveneens Track 2 (zoals het derde veld, hij begint namelijk nog vanaf 0 te tellen). Vreemd, want in je code staat dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
lastTrack = lastTrack + 1;
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans
 
Onbekend Onbekend

Onbekend Onbekend

15/01/2010 21:26:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
function showUser(x) {
    var output = "<form action=\"#\" method=\"POST\">";
    for(i=0;i<x;i++) {
        lastTrack = lastTrack + 1;
        output += "<input type=\"text\" name=\"track[]\" value=\"Track" + lastTrack  + "\" /><br />";
    }
    output += "<input type=\"submit\" name=\"verzenden_album\" value=\"Bevestigen\" /></form>";
    document.getElementById("trackfields").innerHTML = output;
}


Niet getest maar zou het in princiepe moeten doen.
 
Victor-Jan Goemans

Victor-Jan Goemans

15/01/2010 22:22:00
Quote Anchor link
Nogmaals erg bedankt. Ik zal even de zaken die niet helemaal werken op een rijtje zetten:
*Bij het toevoegen van X aantal tracks verschijnt er naar ik meen door deze regel -
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
    output += "<input type=\"submit\" name=\"verzenden_album\" value=\"Bevestigen\" /></form>";
- een 2e submitbutton voor het formulier.
*De eerste standaard track komt bij het toevoegen van meerdere inputs achteraan te staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="track[]" value="Track 1" />

Misschien is het wel 't beste dat die eerste track gewoon weggaat.

Ik heb je ook de link toegestuurd zodat je zelf even kan kijken wat er juist misloopt. :)

Edit: ik heb er nog wat mee geprobeerd en ik dénk dat het nu helemaal werkt. Ik zal het morgen nog wat uittesten en laten weten of het nu definitief werkt. :)
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans
 
Victor-Jan Goemans

Victor-Jan Goemans

17/01/2010 14:19:00
Quote Anchor link
Edit: nog steeds een probleem... wanneer ik x aantal velden heb opgevraagd en klik dan op de '+' komt er na bv. Track 15 weer Track 1 bij.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
var lastTrack = 0;

Dit komt uiteraard door dit stukje tekst, maar wanneer ik dit weg doe, werkt de '+' niet meer! De variabele lastTrack wordt dus blijkbaar niet bewaard vanuit de andere functie... hoe kan ik dit oplossen?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.