BLOB in sql
ik ben een website aan het maken over muziek en zou graag willen dat mensen nummers in kunnen sturen, nu ben ik daarmee aan de slag gegaan, maar het blijkt een moeilijke opgave.
Zouden jullie mij kunnen helpen?
invoegen.php:
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
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
<?php
include('voting/config.php');
$artiest = htmlspecialchars('$_POST[NaamArtiest]');
$naam = htmlspecialchars('$_POST[NaamNummer]');
$file = htmlspecialchars('$_POST[Nummer]');
if((isset($_POST["NaamArtiest"]) == FALSE) OR (isset($_POST["NaamNummer"]) == FALSE) OR (isset($_POST["Nummer"]) == FALSE))
{
$sql="INSERT INTO nummers (naam_artiest, naam_nummer, nummer)
VALUES
('$_POST[NaamArtiest]','$_POST[NaamNummer]','$_POST[Nummer]')";
if($sql === FALSE) {
die(mysql_error());
}
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
}
?>
include('voting/config.php');
$artiest = htmlspecialchars('$_POST[NaamArtiest]');
$naam = htmlspecialchars('$_POST[NaamNummer]');
$file = htmlspecialchars('$_POST[Nummer]');
if((isset($_POST["NaamArtiest"]) == FALSE) OR (isset($_POST["NaamNummer"]) == FALSE) OR (isset($_POST["Nummer"]) == FALSE))
{
$sql="INSERT INTO nummers (naam_artiest, naam_nummer, nummer)
VALUES
('$_POST[NaamArtiest]','$_POST[NaamNummer]','$_POST[Nummer]')";
if($sql === FALSE) {
die(mysql_error());
}
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
}
?>
html code:
<html>
<form action="invoegen.php" method="post">
<p>Naam nummer: <br><input type="text" name="NaamNummer" /><br /><p>
<p>Naam Artiest: <br><input type="text" name="NaamArtiest" /><br /></p>
<p>Nummer: <br><input type="file" name="Nummer" /><br /></p>
<input type="submit" value="sumbit" /><br /><br />
</form>
</html>
Gewijzigd op 16/01/2014 16:53:24 door Tom Stock
moet zijn
$artiest = htmlspecialchars($_POST['NaamArtiest']);
Maar los daarvan: dat wil je helemaal niet: je gebruikt htmlspecialchars normaal alleen in combinatie met echo of print. Dus daar waar je iets naar het scherm stuurt.
niet bij SQL, daar gebruik je de escape functie van je database, bijvoorbeel mysqli_real_escape_string()
---
regels 15, 16 en 17 zijn zinloos (en fout want je maakt vast geen verbinding met een mysql_connect())
Toevoeging op 16/01/2014 17:00:18:
oh en je doet alleen een insert, als de $_POST elementen helemaal niet bestaan?
Ik ben pas net begonnen en weet nog niet hoe :) daarom moet ik t leren :P
En waarom wil je BLOB gebruiken? Je kan de nummers die ze insturen toch door hen laten uploaden naar het filesystem op de server?
- Aar - op 16/01/2014 17:08:34:
En waarom wil je BLOB gebruiken? Je kan de nummers die ze insturen toch door hen laten uploaden naar het filesystem op de server?
ik wil de nummers ook met ORDER BY weergeven in een lijst
Dan hoef je alsnog geen BLOB te gebruiken, maar een verwijzing naar de bestanden opslaan in de database.
- Aar - op 16/01/2014 17:15:58:
Dan hoef je alsnog geen BLOB te gebruiken, maar een verwijzing naar de bestanden opslaan in de database.
dan vind ik alsnog gewoon handig bij elkaar staan in de database :P
Voor kleine bestanden is het te overwegen, maar MP3's en andere grote bestanden zou ik lekker op de server zetten i.p.v. in MySQL. Makkelijker te backuppen ook nog eens. Ook met het bijkomende voordeel dat je ze makkelijker kan verhuizen naar een andere server, om ze bijv. te verspreiden over de aanwezige schijven.
Gewijzigd op 16/01/2014 17:25:17 door - Ariën -
Ten eerste: Hoe moet ik mijn mp3 bestand meesturen en ten tweede: klopt het?
Allemaal bedankt voor alle moeite die jullie doen voor mij :')
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
92
93
94
95
96
97
98
99
100
101
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
<?php
include('voting/config.php');
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset($_POST['NaamNummer'], $_POST['NaamArtiest'], $_POST['Nummer']) )
{
// We gaan de errors in een array bijhouden
$aErrors = array();
if ( !isset($_POST['NaamNummer']) or !preg_match( '~^[\w ]{3,}$~', $_POST['NaamNummer'] ) ) {
$aErrors['name'] = 'Please fill in your name';
}
if ( !isset($_POST['NaamAriest']) or !preg_match( '~^[\w ]{3,}$~', $_POST['NaamArtiest'] ) ) {
$aErrors['name'] = 'Please fill in your name';
}
}
if ( count($aErrors) == 0 ) {
$sQuery = "INSERT INTO messages
(naam_nummer, naam_artiest, address1, second_address, town, postcode)
VALUES (
'".mysql_real_escape_string($_POST['NaamNummer'])."',
'".mysql_real_escape_string($_POST['NaamArtiest'])."'
)";
}
?>
<style type="text/css">
.errorlist, .error input{
border: 1px solid #f00;
background: #fdd;
}
form.cmxform fieldset {
margin-bottom: 10px;
}
form.cmxform legend {
padding: 0 2px;
font-weight: bold;
}
form.cmxform label {
display: inline-block;
line-height: 1.8;
vertical-align: top;
}
form.cmxform fieldset ol {
margin: 0;
padding: 0;
}
form.cmxform fieldset li {
list-style: none;
padding: 5px;
margin: 0;
}
form.cmxform em {
font-weight: bold;
font-style: normal;
color: #f00;
}
form.cmxform label {
width: 120px; /* Width of labels */
}
</style>
</head>
<body>
<form action="invoegen.php" method="post" class="cmxform">
<?php
if ( isset($aErrors) and count($aErrors) > 0 ) {
print '<ul class="errorlist">';
foreach ( $aErrors as $error ) {
print '<li>' . $error . '</li>';
}
print '</ul>';
}
?>
<p>Please complete the form below. Mandatory fields marked <em>*</em></p>
<fieldset>
<legend>Delivery Details</legend>
<ol>
<?php echo isset($aErrors['NaamNummer']) ? '<li class="error">' : '<li>' ?>
<label for="name">Naam Nummer:<em>*</em></label>
<input id="name" name="name" value="<?php echo isset($_POST['NaamNummer']) ? htmlspecialchars($_POST['NaamNummer']) : '' ?>" />
</li>
<?php echo isset($aErrors['Naamartiest']) ? '<li class="error">' : '<li>' ?>
<label for="name">Naam Artiest:<em>*</em></label>
<input id="name" name="name" value="<?php echo isset($_POST['NaamArtiest']) ? htmlspecialchars($_POST['NaamArtiest']) : '' ?>" />
</li>
</ol>
<input type="submit" value="Verstuur" />
</fieldset>
</form>
include('voting/config.php');
if ( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset($_POST['NaamNummer'], $_POST['NaamArtiest'], $_POST['Nummer']) )
{
// We gaan de errors in een array bijhouden
$aErrors = array();
if ( !isset($_POST['NaamNummer']) or !preg_match( '~^[\w ]{3,}$~', $_POST['NaamNummer'] ) ) {
$aErrors['name'] = 'Please fill in your name';
}
if ( !isset($_POST['NaamAriest']) or !preg_match( '~^[\w ]{3,}$~', $_POST['NaamArtiest'] ) ) {
$aErrors['name'] = 'Please fill in your name';
}
}
if ( count($aErrors) == 0 ) {
$sQuery = "INSERT INTO messages
(naam_nummer, naam_artiest, address1, second_address, town, postcode)
VALUES (
'".mysql_real_escape_string($_POST['NaamNummer'])."',
'".mysql_real_escape_string($_POST['NaamArtiest'])."'
)";
}
?>
<style type="text/css">
.errorlist, .error input{
border: 1px solid #f00;
background: #fdd;
}
form.cmxform fieldset {
margin-bottom: 10px;
}
form.cmxform legend {
padding: 0 2px;
font-weight: bold;
}
form.cmxform label {
display: inline-block;
line-height: 1.8;
vertical-align: top;
}
form.cmxform fieldset ol {
margin: 0;
padding: 0;
}
form.cmxform fieldset li {
list-style: none;
padding: 5px;
margin: 0;
}
form.cmxform em {
font-weight: bold;
font-style: normal;
color: #f00;
}
form.cmxform label {
width: 120px; /* Width of labels */
}
</style>
</head>
<body>
<form action="invoegen.php" method="post" class="cmxform">
<?php
if ( isset($aErrors) and count($aErrors) > 0 ) {
print '<ul class="errorlist">';
foreach ( $aErrors as $error ) {
print '<li>' . $error . '</li>';
}
print '</ul>';
}
?>
<p>Please complete the form below. Mandatory fields marked <em>*</em></p>
<fieldset>
<legend>Delivery Details</legend>
<ol>
<?php echo isset($aErrors['NaamNummer']) ? '<li class="error">' : '<li>' ?>
<label for="name">Naam Nummer:<em>*</em></label>
<input id="name" name="name" value="<?php echo isset($_POST['NaamNummer']) ? htmlspecialchars($_POST['NaamNummer']) : '' ?>" />
</li>
<?php echo isset($aErrors['Naamartiest']) ? '<li class="error">' : '<li>' ?>
<label for="name">Naam Artiest:<em>*</em></label>
<input id="name" name="name" value="<?php echo isset($_POST['NaamArtiest']) ? htmlspecialchars($_POST['NaamArtiest']) : '' ?>" />
</li>
</ol>
<input type="submit" value="Verstuur" />
</fieldset>
</form>
Toevoeging op 16/01/2014 17:34:27:
- Aar - op 16/01/2014 17:21:30:
Kost een hoop performance, en lever enge traagheid op.
Voor kleine bestanden is het te overwegen, maar MP3's en andere grote bestanden zou ik lekker op de server zetten i.p.v. in MySQL. Makkelijker te backuppen ook nog eens. Ook met het bijkomende voordeel dat je ze makkelijker kan verhuizen naar een andere server, om ze bijv. te verspreiden over de aanwezige schijven.
Voor kleine bestanden is het te overwegen, maar MP3's en andere grote bestanden zou ik lekker op de server zetten i.p.v. in MySQL. Makkelijker te backuppen ook nog eens. Ook met het bijkomende voordeel dat je ze makkelijker kan verhuizen naar een andere server, om ze bijv. te verspreiden over de aanwezige schijven.
En hoe moet dat dan? ik heb daar al helemaal geen ervaring mee :/
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Alvast bedankt!
Alvast bedankt!
Gewijzigd op 16/01/2014 17:35:40 door - Ariën -
maar klopt de code hierboven?
Je moet er wel uploadfuncties in bouwen....
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sQuery = "INSERT INTO messages
(naam_nummer, naam_artiest, address1, second_address, town, postcode)
VALUES (
'".mysql_real_escape_string($_POST['NaamNummer'])."',
'".mysql_real_escape_string($_POST['NaamArtiest'])."'
)";
?>
$sQuery = "INSERT INTO messages
(naam_nummer, naam_artiest, address1, second_address, town, postcode)
VALUES (
'".mysql_real_escape_string($_POST['NaamNummer'])."',
'".mysql_real_escape_string($_POST['NaamArtiest'])."'
)";
?>
En buiten dat deze query fout is (te weinig waardes voor de benoemde kolommen) doe je verder ook helemaal niets met hem. Daarmee is het dus technisch ook geen query, maar gewoon een ongebruikte string.