Foto uploaden in php
Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 101
Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 102
Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 103
Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 104
Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 105
Dit is mijn code:
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
75
76
77
78
79
80
81
82
83
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
<?php
// Is er op de verzendbutton gedrukt?
if (isset($_POST ['auto-voegtoe-submit']))
{
// Post variabelen
$auto_naam = $_POST ['naam'];
$auto_omschrijving = $_POST ['omschrijving'];
$auto_prijs = $_POST ['prijs'];
// Verwerk upload image
$errors = array(); //Fouten array
$foto_naam = $_FILES ['foto']['name'];
$foto_grootte = $_FILES ['foto']['size'];
$foto_tmp = $_FILES ['foto']['tmp_name']; //Tijdelijke opslag op webserver
$foto_type = $_FILES ['foto']['type'];
$foto_ext = strtolower (end (explode ('.', $_FILES ['foto']['name'])));
//toegestane bestandsextensies
$extensions = array ('jpeg', 'jpg', 'png');
//Check bestandsextensies
if ( in_array($foto_ext, $extensions) === false )
{
$errors[] ='Extensie niet toegestaan alleen JPEG of PNG.' ;
}
// Check bestandsgrootte
if ($foto_grootte >= 2097152)
{
$errors[] ='Bestand mag niet groter zijn dan 2MB.' ;
}
// Check of fouten aanwezig zijn
if ( empty($errors) === true)
{
// Maak images directory getcwd() = get current working directory
$foto_dir = getcwd() . '/autos/';
//Verplaats van tijdelijke opslag op server
// naar definitieve directory met juiste naam
move_uploaded_file ($foto_tmp, $foto_dir . $foto_naam) ;
// CHECK NU OP MYSQL
if (FALSE !== ($db_connect =@mysql_connect('127.0.0.1', 'root','')) || die (mysql_error() ) )
// Functie die() stopt uitvoer script als connectie met server mislukt
{
// CHECK NU OP DATABASE
if (FALSE !== @mysql_select_db ('autobedrijf')
|| die(mysql_error() )
){
//succesvolle connectie met database, maak nu de SQL query
$query = "
INSERT INTO auto (naam, omschrijving, prijs, foto)
VALUES ('$auto_naam','$auto_omschrijving', $auto_prijs,'./images/$foto_naam'); " ;
//Voer de MySQL query uit
if ( FALSE !== @mysql_query($query) || die(mysql_error())
)
{ // echo '<p> Gegevens succesvol in de database ingevoerd! </h3>'; //Klaar
header ("Location: index.php");
}
}
}
}
}
?>
// Is er op de verzendbutton gedrukt?
if (isset($_POST ['auto-voegtoe-submit']))
{
// Post variabelen
$auto_naam = $_POST ['naam'];
$auto_omschrijving = $_POST ['omschrijving'];
$auto_prijs = $_POST ['prijs'];
// Verwerk upload image
$errors = array(); //Fouten array
$foto_naam = $_FILES ['foto']['name'];
$foto_grootte = $_FILES ['foto']['size'];
$foto_tmp = $_FILES ['foto']['tmp_name']; //Tijdelijke opslag op webserver
$foto_type = $_FILES ['foto']['type'];
$foto_ext = strtolower (end (explode ('.', $_FILES ['foto']['name'])));
//toegestane bestandsextensies
$extensions = array ('jpeg', 'jpg', 'png');
//Check bestandsextensies
if ( in_array($foto_ext, $extensions) === false )
{
$errors[] ='Extensie niet toegestaan alleen JPEG of PNG.' ;
}
// Check bestandsgrootte
if ($foto_grootte >= 2097152)
{
$errors[] ='Bestand mag niet groter zijn dan 2MB.' ;
}
// Check of fouten aanwezig zijn
if ( empty($errors) === true)
{
// Maak images directory getcwd() = get current working directory
$foto_dir = getcwd() . '/autos/';
//Verplaats van tijdelijke opslag op server
// naar definitieve directory met juiste naam
move_uploaded_file ($foto_tmp, $foto_dir . $foto_naam) ;
// CHECK NU OP MYSQL
if (FALSE !== ($db_connect =@mysql_connect('127.0.0.1', 'root','')) || die (mysql_error() ) )
// Functie die() stopt uitvoer script als connectie met server mislukt
{
// CHECK NU OP DATABASE
if (FALSE !== @mysql_select_db ('autobedrijf')
|| die(mysql_error() )
){
//succesvolle connectie met database, maak nu de SQL query
$query = "
INSERT INTO auto (naam, omschrijving, prijs, foto)
VALUES ('$auto_naam','$auto_omschrijving', $auto_prijs,'./images/$foto_naam'); " ;
//Voer de MySQL query uit
if ( FALSE !== @mysql_query($query) || die(mysql_error())
)
{ // echo '<p> Gegevens succesvol in de database ingevoerd! </h3>'; //Klaar
header ("Location: index.php");
}
}
}
}
}
?>
Gewijzigd op 26/06/2017 15:32:42 door Ralph Klunder
Wat krijg je dan?
waar moet ik die dan neerzetten?
Bij regel 15 in .bovenstaand.
Array ( )
Dan is of de name fout of je form mist enctype.
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
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
<div id="content">
<h1>Auto toevoegen</h1>
<form method="post" action="auto-voegtoe.php">
<p>
<label for="naam">Model: </label>
<p>
<input type="text"
placeholder="Voer modelnaam in"
name="naam"
id="naam"
required />
</p>
</p>
<p>
<label for="omschrijving">Omschrijving: </label>
<p>
<textarea type="text"
rows="4"
cols="50"
placeholder="Zet hier een omschrijving neer"
name="omschrijving"
id="omschrijving"
required ></textarea>
</p>
</p>
<p>
<label for="prijs">Prijs: </label>
<p>
<input type="number"
placeholder="Voer hier een prijs in"
name="prijs"
id="prijs"
required />
</p>
</p>
<p>
<label for="foto">Foto: </label>
<p>
<input type="file"
name="foto"
id="foto" />
</p>
</p>
<p>
<button name="auto-voegtoe-submit">Auto Toevoegen</button>
</p>
</form>
<h1>Auto toevoegen</h1>
<form method="post" action="auto-voegtoe.php">
<p>
<label for="naam">Model: </label>
<p>
<input type="text"
placeholder="Voer modelnaam in"
name="naam"
id="naam"
required />
</p>
</p>
<p>
<label for="omschrijving">Omschrijving: </label>
<p>
<textarea type="text"
rows="4"
cols="50"
placeholder="Zet hier een omschrijving neer"
name="omschrijving"
id="omschrijving"
required ></textarea>
</p>
</p>
<p>
<label for="prijs">Prijs: </label>
<p>
<input type="number"
placeholder="Voer hier een prijs in"
name="prijs"
id="prijs"
required />
</p>
</p>
<p>
<label for="foto">Foto: </label>
<p>
<input type="file"
name="foto"
id="foto" />
</p>
</p>
<p>
<button name="auto-voegtoe-submit">Auto Toevoegen</button>
</p>
</form>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 26/06/2017 20:47:03 door - Ariën -
<form method="post" action="auto-voegtoe.php" enctype="multipart/form-data">
volgens mij is het inderdaad de enctype. deze heb ik zojuist toegevoegd en nu stuurt die hem door. Hartstikke bedankt!
Verder hoort er een exit(); na je location-header, en wil je juist geen fouten tonen met die(). Waarom moet je script dan zo rigoreus dood gaan?
Gewijzigd op 26/06/2017 19:02:33 door - Ariën -
Ik ben bezig met het laten weergeven wat hij dus in de vraag van gister in de database zette. Daar zie je de code zo van. Nu heb ik het probleem dat die het plaatje niet weergeeft en deze tekst laat zien in de tabel: style='font-size: 30px'> Merk:
Dit doet die bij alles wat die ophaalt. Wat doe ik hier precies verkeerd?
Code:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Teradruk BV.</title>
<link rel="stylesheet" type="text/css" href="home.css">
</head>
<body>
<div id="header"></div>
<div id="menu">
<?php
if (isset($_SESSION["functie"])){
if ($_SESSION["functie"] == 2){
echo "Welkom ". $_SESSION['naam'] ." | ";
echo "<a href='index.php'>Home</a> | ";
echo "<a href='auto-voegtoe.php'>Auto toevoegen</a> | ";
echo "<a href='uitloggen.php'>Uitloggen</a>";
}
else {
header("location: uitloggen.php");
}
}
?>
</div>
<div id="content">
<h1>Advertentie</h1>
<?php
// pagina voor de bewerking van de auto gegevens in de database
$connection = mysql_connect('127.0.0.1', 'root', ''); //The Blank string is the password
mysql_select_db('autobedrijf');
$query = "SELECT * FROM auto";
$result = mysql_query($query);
echo "<div class='auto-update-container'>" ;
echo "<table>";
while($row = mysql_fetch_array($result) ) {
// $foto_path = $row ['foto'];
echo
"<tr><td>"
. "<p> style='font-size: 30px'> Merk: </p> " . " "
. $row ['naam']
. "<p> style='font-size: 30px'> Beschrijving: </p> "
. $row['omschrijving']
. "</td><td>"
. "<p> style='font-size: 15px'> Prijs: </p> "
. "<p> € </p>"
. $row ['prijs']
. "</td><td>"
. '<img src= "'. $row ['foto'] . '" height="200" width="300" /> '
. "</td> </tr>"
;
}
echo "</table>";
echo "</div>" ;
mysql_close();
?>
</body>
</html>
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Teradruk BV.</title>
<link rel="stylesheet" type="text/css" href="home.css">
</head>
<body>
<div id="header"></div>
<div id="menu">
<?php
if (isset($_SESSION["functie"])){
if ($_SESSION["functie"] == 2){
echo "Welkom ". $_SESSION['naam'] ." | ";
echo "<a href='index.php'>Home</a> | ";
echo "<a href='auto-voegtoe.php'>Auto toevoegen</a> | ";
echo "<a href='uitloggen.php'>Uitloggen</a>";
}
else {
header("location: uitloggen.php");
}
}
?>
</div>
<div id="content">
<h1>Advertentie</h1>
<?php
// pagina voor de bewerking van de auto gegevens in de database
$connection = mysql_connect('127.0.0.1', 'root', ''); //The Blank string is the password
mysql_select_db('autobedrijf');
$query = "SELECT * FROM auto";
$result = mysql_query($query);
echo "<div class='auto-update-container'>" ;
echo "<table>";
while($row = mysql_fetch_array($result) ) {
// $foto_path = $row ['foto'];
echo
"<tr><td>"
. "<p> style='font-size: 30px'> Merk: </p> " . " "
. $row ['naam']
. "<p> style='font-size: 30px'> Beschrijving: </p> "
. $row['omschrijving']
. "</td><td>"
. "<p> style='font-size: 15px'> Prijs: </p> "
. "<p> € </p>"
. $row ['prijs']
. "</td><td>"
. '<img src= "'. $row ['foto'] . '" height="200" width="300" /> '
. "</td> </tr>"
;
}
echo "</table>";
echo "</div>" ;
mysql_close();
?>
</body>
</html>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 27/06/2017 11:27:04 door - Ariën -
moet zijn
"<p style='font-size: 30px'> Merk: </p> " . " "
bedankt, stomme fout inderdaad! nu zit ik alleen nog met die foto. In de eerdere vraag is te zien waar die geüpload wordt, alleen nu krijgt die hem niet uit de database.
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
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
<?php
// pagina voor de bewerking van de auto gegevens in de database
$connection = mysql_connect('127.0.0.1', 'root', ''); //The Blank string is the password
mysql_select_db('autobedrijf');
$query = "SELECT * FROM auto";
$result = mysql_query($query);
?>
<div class='auto-update-container'>
<table>
<?php while($row = mysql_fetch_array($result) ): ?>
// $foto_path = $row ['foto'];
<tr><td>
<p style='font-size: 30px'> Merk: </p>
<?= htmlspecialchars( $row ['naam'] ) ?>
<p style='font-size: 30px'> Beschrijving: </p>
<?= htmlspecialchars( $row ['omschrijving'] ) ?>
</td><td>
<p> style='font-size: 15px'> Prijs: </p>
. "<p> </p>
<?= $row ['prijs'] ?>
</td><td>
<img src="<?= $row ['foto'] ?>' height="200" width="300" />
</td> </tr>
<?php endwhile; ?>
</table>
</div>;
// pagina voor de bewerking van de auto gegevens in de database
$connection = mysql_connect('127.0.0.1', 'root', ''); //The Blank string is the password
mysql_select_db('autobedrijf');
$query = "SELECT * FROM auto";
$result = mysql_query($query);
?>
<div class='auto-update-container'>
<table>
<?php while($row = mysql_fetch_array($result) ): ?>
// $foto_path = $row ['foto'];
<tr><td>
<p style='font-size: 30px'> Merk: </p>
<?= htmlspecialchars( $row ['naam'] ) ?>
<p style='font-size: 30px'> Beschrijving: </p>
<?= htmlspecialchars( $row ['omschrijving'] ) ?>
</td><td>
<p> style='font-size: 15px'> Prijs: </p>
. "<p> </p>
<?= $row ['prijs'] ?>
</td><td>
<img src="<?= $row ['foto'] ?>' height="200" width="300" />
</td> </tr>
<?php endwhile; ?>
</table>
</div>;
Toevoeging op 27/06/2017 10:01:13:
ah phphulp herkent de short tag <¿= niet. dat is gelijk <¿php echo
Gewijzigd op 27/06/2017 11:06:08 door Ivo P
heeft iemand een idee waarom mijn plaatje niet weergegeven wordt?
probeer het eens zonder de spaties na src=
Of doe eens bron weergeven en kijk wat je werkelijk als output krijgt, inclusief de url's naar plaatjes. De gevraagde url's kun je ook via het developer console opzoeken.
ik zal het even verder uitleggen.
Ik heb een foto geüpload uit de map ./images/(fotonaam). Deze foto komt door mijn eerdere code in een tmp map terecht en daarna sla ik hem op in de map ./autos/(fotonaam). In de database komt alleen niet de URL: ./autos/(fotonaam) te staan maar de URL: ./images/(fotonaam). Wat de bedoeling is, is dat een foto geüpload van meerdere plekken en dus ook met meerdere URL's te maken heeft. Dus wat ik eigenlijk wil is dat de URL in de database aangepast wordt naar ./autos/ omdat hij daar daadwerkelijk goed opgeslagen staat. Als ik dat verhaal opgelost heb moet ik hem daarna dus ook nog weergeven. Iemand een idee?
Ben van Velzen op 27/06/2017 11:11:56:
Of doe eens bron weergeven en kijk wat je werkelijk als output krijgt, inclusief de url's naar plaatjes. De gevraagde url's kun je ook via het developer console opzoeken.
Hier laat die dus inderdaad zien dat die foto van ./images/ gepakt wordt. dit is alleen de url waarvan die geüpload wordt en niet waar die wordt opgeslagen
Gewijzigd op 27/06/2017 11:16:51 door Ralph Klunder
Waarom laat je het uploadscript dan in de database zetten dat de plaatjes in ./images staan?
daar zeg je /images/....
wel handig om zo iets in je vraag te melden. Straks kom je nog met de vraag waarom er een verkeerde foto staat, en blijkt dat je foto's van vissen wilt zien en auto's geupload hebt.
Terug naar je vraag: het is niet per se heel handig om de url compleet op te slaan: mocht je een andere bestandsstructuur gaan gebruiken, moet je alle recors aanpassen.
Sowieso plaats ik alle foto's en andere uploads altijd in 1 map.
het is niet echt heel belangrijk dat duidelijk is dat het een foto van een auto.
daarbij zou ik niet de naam hanteren die de gebruiker gaf.
meerdere foto's genaam audi.jpg geven problemen.
daar zeg je /images/....
daar zat inderdaad de fout! bedankt. Het gedeelte dat foto's met een dubbele naam komen maakt niet heel veel uit aangezien dit niet daadwerkelijk online komt. Ik heb nu nog 1 laatste vraag en dan ben ik klaar.
Bij prijs in dit gedeelte
. "<p> style='font-size: 15px'> Prijs: </p> "
. "<p> € </p>"
. $row ['prijs']
. "</td><td>"
probeer ik er een euroteken in te verwerken, deze komt alleen niet tevoorschijn voor het getal. hebben jullie een idee?
In ieder geval al heel erg bedankt voor de hulp. Hierdoor een flink stuk verder.