de id opzoeken via tekstveld
ik heb dit script nog niet omgezet naar mysqli maar ga dat wel doen.
Ik heb 2 tabellen, de eerste heet "liedjes" en de ander "artiesten" bij liedjes is een kolom genaamd artiestnaam waar nummers staan. bijvoorbeeld nummer 2 is gelijk aan Ariana grande in de tabel artiesten.
met dit script wil ik dat je een artiest kan invullen en dat het script kijkt welk id die artiest heeft
dus als je "Ariana grande" invult moet 2 zijn. Is dat überhaupt mogelijk? en het werkt nu niet (alweer niet :P) als het mogelijk is, hoe moet ik dat doen dan??
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
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
<?php
if(isset($_POST['submit']))
{
$naam = mysql_real_escape_string($_POST['naam']);
$sort = mysql_real_escape_string($_POST['sort']);
$genre = mysql_real_escape_string($_POST['genre']);
if(intval($_GET['id'])) {
$id = mysql_real_escape_string($_GET['id']);
}
else {
$artiest = mysql_real_escape_string($_POST['artiest']);
$id = mysql_real_escape_string($_GET['id']);
$sql = "
SELECT id
FROM artiesten
WHERE artiest=".$artiest."
";
}
$songtekst = mysql_real_escape_string($_POST['songtekst']);
$sql = "INSERT INTO liedjes
(naam, sort, genre, favoriet, profiel, position, artiestnaam, songtekst, mp3 )
VALUES('$naam', '$sort', '$genre', 'nee', 'nee', '', '$id', '$songtekst', '$naam')
";
$retval = mysql_query( $sql, $mysql_connect );
if(! $retval )
{
die('FOUT ' . mysql_error());
}
?>
<a href="http://web-stars.nl/muziek/artiest.php?id=<?php echo $_GET['id']; ?>" style="color:#000000;">gelukt <br /> klik hier om naar de artiest te gaan</a>
<?php
}
else
{
?>
<div class="row">
<div class="col-md-5">
<form method="post" action="<?php $_PHP_SELF ?>">
<div class="form-group">
<label for="naam">liedjes naam</label>
<input type="text" name="naam" class="form-control" id="naam">
</div>
<div class="form-group">
<label for="sort">sorteren op alfabet als eerste letter van liedjesnaam</label>
<input type="text" name="sort" class="form-control" id="sort">
</div>
<div class="form-group">
<label for="genre">genre</label>
<input type="text" name="genre" class="form-control" id="genre" >
</div>
<?php
if(intval($_GET['id'])) {
}
else {
?>
<div class="form-group">
<label for="artiest">artiest</label>
<input type="text" name="artiest" class="form-control" id="artiest" >
</div>
<?php }
?>
if(isset($_POST['submit']))
{
$naam = mysql_real_escape_string($_POST['naam']);
$sort = mysql_real_escape_string($_POST['sort']);
$genre = mysql_real_escape_string($_POST['genre']);
if(intval($_GET['id'])) {
$id = mysql_real_escape_string($_GET['id']);
}
else {
$artiest = mysql_real_escape_string($_POST['artiest']);
$id = mysql_real_escape_string($_GET['id']);
$sql = "
SELECT id
FROM artiesten
WHERE artiest=".$artiest."
";
}
$songtekst = mysql_real_escape_string($_POST['songtekst']);
$sql = "INSERT INTO liedjes
(naam, sort, genre, favoriet, profiel, position, artiestnaam, songtekst, mp3 )
VALUES('$naam', '$sort', '$genre', 'nee', 'nee', '', '$id', '$songtekst', '$naam')
";
$retval = mysql_query( $sql, $mysql_connect );
if(! $retval )
{
die('FOUT ' . mysql_error());
}
?>
<a href="http://web-stars.nl/muziek/artiest.php?id=<?php echo $_GET['id']; ?>" style="color:#000000;">gelukt <br /> klik hier om naar de artiest te gaan</a>
<?php
}
else
{
?>
<div class="row">
<div class="col-md-5">
<form method="post" action="<?php $_PHP_SELF ?>">
<div class="form-group">
<label for="naam">liedjes naam</label>
<input type="text" name="naam" class="form-control" id="naam">
</div>
<div class="form-group">
<label for="sort">sorteren op alfabet als eerste letter van liedjesnaam</label>
<input type="text" name="sort" class="form-control" id="sort">
</div>
<div class="form-group">
<label for="genre">genre</label>
<input type="text" name="genre" class="form-control" id="genre" >
</div>
<?php
if(intval($_GET['id'])) {
}
else {
?>
<div class="form-group">
<label for="artiest">artiest</label>
<input type="text" name="artiest" class="form-control" id="artiest" >
</div>
<?php }
?>
Fabian
Gewijzigd op 07/07/2015 10:27:49 door Fabian webstars
Teken het eens met wat lijnen.
Dan zie je dat van je logica geen bal klopt.
2 Als er een submit-knop is ingedrukt (fout #1: wat als ze op enter drukken?)
3 DAN
4 $naam pak ik uit iets waarvan ik niet weet of het er is (fout #2: kijk of deze ook echt bestaat)
5 $sort pak ik uit iets waarvan ik niet weet of het er is (fout #2)
6 $genre pak ik uit iets waarvan ik niet weet of het er is (fout #2)
7 als $_GET['id'] (die er misschien niet eens is? Fout #3) een getal is...
DAN
8 $id pak ik uit een string met tekst die ik beveilig (fout #4: stom, want het is al een INTEGER, zie regel 7)
9 EINDE DAN
10 ALS $_GET['id'] geen integer is...
DAN
11 $artiets pak ik uit iets wat niet bestaat (fout #2)
12 $id pak ik uit iets wat geen integer is... wellicht bestaat hij niet eens? (fout #5
13 Ik maak een $sql aan, waarin ik iets doe met $artiest, maar niets met het $id
14 EINDE DAN
Je doet later niets met $sql?
Ja, overschrijven met een INSERT die je niet controleert etc.
Ga eerst je logica eens uitschrijven, gewoon op papier met een potlood.
Teken dan zo'n diagram met JA/NEE:
En ga daar mee aan de slag.
Pas als dat rond is, ga je hem uitwerken in PHP.
maar hij werkt wel als ik op enter druk
Gewijzigd op 07/07/2015 10:54:32 door Fabian webstars
Wat dus niet zegt dat je echt van het formulier af komt ;)
Het is redelijk simpel: als je niet wilt dat mensen fouten kunnen maken bij het invullen, bied hun dan deze keuze gewoon niet, maar bied een set van vaste waarden aan.
Oftewel: maak van het artiest-veld een (multi)select en sla (for the love of God) een artiest-id op bij een album/nummer, in plaats van een of andere foutgevoelige lijpe lookup in de verwerking.
Maak voor het toevoegen van een artiest een apart formulier. Wil je albums/nummers toevoegen, moet je eerst zorgen dat de artiest toegevoegd is. Daardoor krijgen dingen een beetje een volgorde.
En liedjes staan meestal op een album? :/
Een artiest heeft een of meer albums
Een album bestaat uit een of meer tracks
etc.
(uitzondering: singles)
?
Gewijzigd op 07/07/2015 19:52:03 door Thomas van den Heuvel
ik ben bezig met albums, maar ben al druk genoeg :P dus ik doe het lekker op mijn eigen tempo, stap voor stap en ben trouwens niet alleen met de muziekpagina bezig. ook met alle andere en dat zijn er voor mijn doen best veel :)
maar je hebt wel gelijk ja. tis niet echt handig.
Als je voor een zoekfunctie een waarde wilt invullen, die ergens gelijk aan moet zijn, bied dan een auto-suggest systeem aan. Dit kan eenvoudig met jQueryUI.