enctype="multipart/form-data" geeft fout
Zo gauw ik de enctype toevoeg aan het formulier, geeft hij een foutmelding bij het toevoegen. Iemand zo enig idee waar dit aan kan liggen.
De foutmelding is:
Notice: Undefined index: afbeelding
Plaats de relevante code eens, ik kan helaas niet ruiken hoe jouw code in elkaar steekt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
<form method="post" action="' .$_SERVER['PHP_SELF']. '?add=true" enctype="multipart/form-data">
<fieldset><legend>Voeg nieuw item toe</legend>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<ul>
<li><label for="titel">Titel</label><input type="text" name="titel" id="titel" value="' .$titel. '" /></li>
<li><label for="afbeelding">Afbeelding</label><input type="file" id="afbeelding" name="afbeelding" /></li>
<li class="radiovak"><span>Actief?</span>
<input class="radio" type="radio" name="actief" id="actiefj" value="j" /><label for="actiefj"> Ja</label>
<input class="radio" type="radio" name="actief" id="actiefn" value="n" /><label for="actiefn"> Nee</label></li>
<li><input class="button" type="submit" name="galerieaddsubmit" value="Toevoegen" /></li>
</ul>
</fieldset>
</form>
?>
<form method="post" action="' .$_SERVER['PHP_SELF']. '?add=true" enctype="multipart/form-data">
<fieldset><legend>Voeg nieuw item toe</legend>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<ul>
<li><label for="titel">Titel</label><input type="text" name="titel" id="titel" value="' .$titel. '" /></li>
<li><label for="afbeelding">Afbeelding</label><input type="file" id="afbeelding" name="afbeelding" /></li>
<li class="radiovak"><span>Actief?</span>
<input class="radio" type="radio" name="actief" id="actiefj" value="j" /><label for="actiefj"> Ja</label>
<input class="radio" type="radio" name="actief" id="actiefn" value="n" /><label for="actiefn"> Nee</label></li>
<li><input class="button" type="submit" name="galerieaddsubmit" value="Toevoegen" /></li>
</ul>
</fieldset>
</form>
?>
Formulier afhandeling
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
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
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
<?php
$titel= $_POST['titel'];
$afbeelding= $_POST['afbeelding'];
// Checken of er wel een radiobutton is gechecked
if(!isset($_POST['actief']))
{
$actief = '';
}
else
{
$actief = $_POST['actief'];
}
// Initialiseer fout variabelen
$fout = false;
$titel_fout = false;
$afbeelding_fout= false;
$actief_fout = false;
// Controleer op fouten
if(!eregi('.{2,}', $titel))
{
$fout = true;
$titel_fout = true;
}
if((!eregi('((.gif|.jpg|.jpeg)$)', $afbeelding)) || ($_FILES['bestand']['size'] > 2000000))
{
$fout = true;
$afbeelding_fout = true;
}
if($actief == '')
{
$fout = true;
$actief_fout = true;
}
if($fout)
{
// Er zijn fouten
// Geef het lijstje van fouten
echo '<strong style="color: #C00;">Het formulier is niet correct ingevuld</strong>';
echo '<ul>';
echo ($titel_fout ? '<li>Titel moet minimaal 2 karakters hebben</li>' : '');
echo ($afbeelding_fout ? '<li>Er is geen juiste afbeelding ingevoerd, of de afbeelding is te groot (max 2 MB)</li>' : '');
echo ($actief_fout ? '<li>Er moet een status van actief gekozen worden</li>' : '');
echo '</ul><br /><br />';
// Geef het formulier opnieuw
ShowGalerieAddForm($titel,$actief);
}
else
{
UploadAfbeelding();
// Er zijn geen fouten, handel formulier af
$titel = mysql_real_escape_string($titel);
$afbeelding = mysql_real_escape_string($afbeelding);
$actief = mysql_real_escape_string($actief);
$sql = "INSERT INTO ec_galerie ( user_id,
titel,
afbeelding,
upload_date,
actief)
VALUES ( " .$_SESSION['s_user_id']. ",
'".$titel."',
'".$afbeelding."',
NOW(),
'".$actief."')";
$result = mysql_query($sql);
echo '<strong>' .$titel. '</strong> is toegevoegd.<br /><a href="galerie.php" title="Galerie">Ga terug naar het overzicht</a>.';
}
?>
$titel= $_POST['titel'];
$afbeelding= $_POST['afbeelding'];
// Checken of er wel een radiobutton is gechecked
if(!isset($_POST['actief']))
{
$actief = '';
}
else
{
$actief = $_POST['actief'];
}
// Initialiseer fout variabelen
$fout = false;
$titel_fout = false;
$afbeelding_fout= false;
$actief_fout = false;
// Controleer op fouten
if(!eregi('.{2,}', $titel))
{
$fout = true;
$titel_fout = true;
}
if((!eregi('((.gif|.jpg|.jpeg)$)', $afbeelding)) || ($_FILES['bestand']['size'] > 2000000))
{
$fout = true;
$afbeelding_fout = true;
}
if($actief == '')
{
$fout = true;
$actief_fout = true;
}
if($fout)
{
// Er zijn fouten
// Geef het lijstje van fouten
echo '<strong style="color: #C00;">Het formulier is niet correct ingevuld</strong>';
echo '<ul>';
echo ($titel_fout ? '<li>Titel moet minimaal 2 karakters hebben</li>' : '');
echo ($afbeelding_fout ? '<li>Er is geen juiste afbeelding ingevoerd, of de afbeelding is te groot (max 2 MB)</li>' : '');
echo ($actief_fout ? '<li>Er moet een status van actief gekozen worden</li>' : '');
echo '</ul><br /><br />';
// Geef het formulier opnieuw
ShowGalerieAddForm($titel,$actief);
}
else
{
UploadAfbeelding();
// Er zijn geen fouten, handel formulier af
$titel = mysql_real_escape_string($titel);
$afbeelding = mysql_real_escape_string($afbeelding);
$actief = mysql_real_escape_string($actief);
$sql = "INSERT INTO ec_galerie ( user_id,
titel,
afbeelding,
upload_date,
actief)
VALUES ( " .$_SESSION['s_user_id']. ",
'".$titel."',
'".$afbeelding."',
NOW(),
'".$actief."')";
$result = mysql_query($sql);
echo '<strong>' .$titel. '</strong> is toegevoegd.<br /><a href="galerie.php" title="Galerie">Ga terug naar het overzicht</a>.';
}
?>
Hij geeft dus een fout bij de afbeelding variabele tijdens het afhandelen. Maar wanneer de enctype weg is, dan niet
Wat je doorstuurt, is $_FILES['afbeelding']
Daarmee moet je voort.
De eerste blok code die je postte, moet trouwens niet tussen staan, maar dat zal ongetwijfeld enkel hier zo zijn, in je script zal je dat wel niet gedaan hebben.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
In regel3 van het tweede codeblok gaat het volgens mij fout (die regel geeft de foutmelding in ieder geval aan). Hij kent de $_post['afbeelding'] op een of andere manier niet.
Gewijzigd op 01/01/1970 01:00:00 door Niek Weevers
Dat klopt, die bestaat ook niet. Als jij een <input type="file"> gebruikt, komt de betreffende informatie in de $_FILES array te staan. In jouw geval dus $_FILES['afbeelding']...
Precies (iets beter uitgelegd dan ik).
dat is em. Thnx