INSERT INTO mysterie
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
//contact zoeken met mysql
$mysql = mysql_connect("localhost", "username", "wachtwoord") or die ("Fout: geen verbinding met de server");
//contact zoeken met de database
mysql_select_db("quiz", $mysql) or die ("Fout: geen contact met database");
//nummer toewijzen aan vraag
$query = "SELECT MAX(vraagnummer)+1 as newID FROM vragen;";
$resultaat = mysql_query($query) or die ("Fout: nieuwe vraaggegevens niet gevonden..");
$rij = mysql_fetch_array($resultaat, MYSQL_NUM);
$newnummer = $rij[0];
// vraag inserten
$query = "INSERT INTO vragen (vraagnummer, vraag, antwoord1, antwoord2, antwoord3, antwoord4, categorie) VALUES ('$newnummer', '$_POST[vraag]', '$_POST[antwoord1]', '$_POST[antwoord2]','$_POST[antwoord3]','$_POST[antwoord4]','$_POST[categorie]');";
//echo $query; //DEBUGREGEL
// goede antwoord inserten
$query = "INSERT INTO antwoorden (vraagnummer, goede_antwoord) VALUES ('$newnummer', $goede_antwoord');";
//feedback
$query = "SELECT * FROM vragen WHERE vraagnummer = $newnummer";
$resultaat = mysql_query($query) or die ("Fout: nieuwe vraaggegevens niet gevonden..");
// deze gegevens in een array plaatsen.
$rij = mysql_fetch_array($resultaat, MYSQL_NUM);
// mysql verbinding sluiten
mysql_close($mysql);
?>
//contact zoeken met mysql
$mysql = mysql_connect("localhost", "username", "wachtwoord") or die ("Fout: geen verbinding met de server");
//contact zoeken met de database
mysql_select_db("quiz", $mysql) or die ("Fout: geen contact met database");
//nummer toewijzen aan vraag
$query = "SELECT MAX(vraagnummer)+1 as newID FROM vragen;";
$resultaat = mysql_query($query) or die ("Fout: nieuwe vraaggegevens niet gevonden..");
$rij = mysql_fetch_array($resultaat, MYSQL_NUM);
$newnummer = $rij[0];
// vraag inserten
$query = "INSERT INTO vragen (vraagnummer, vraag, antwoord1, antwoord2, antwoord3, antwoord4, categorie) VALUES ('$newnummer', '$_POST[vraag]', '$_POST[antwoord1]', '$_POST[antwoord2]','$_POST[antwoord3]','$_POST[antwoord4]','$_POST[categorie]');";
//echo $query; //DEBUGREGEL
// goede antwoord inserten
$query = "INSERT INTO antwoorden (vraagnummer, goede_antwoord) VALUES ('$newnummer', $goede_antwoord');";
//feedback
$query = "SELECT * FROM vragen WHERE vraagnummer = $newnummer";
$resultaat = mysql_query($query) or die ("Fout: nieuwe vraaggegevens niet gevonden..");
// deze gegevens in een array plaatsen.
$rij = mysql_fetch_array($resultaat, MYSQL_NUM);
// mysql verbinding sluiten
mysql_close($mysql);
?>
We zijn hier wat betreft php en sql redelijk oppervlakkig, dus zal nog heel wat verbeterd kunnen worden, en heb gemerkt dat hier van andere termen worden gebruikt. Bij uitvoer van script geen error, word alleen niks ge"insert", heb de query laten echoën, resultaat van echo in phpmyadmin bij tabblad sql uitgevoerd, en dat werkte prima.
Mijn dank is groot voor jullie medewerking
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
// vraag inserten
$query = "INSERT INTO vragen (vraagnummer, vraag, antwoord1, antwoord2, antwoord3, antwoord4, categorie) VALUES ('$newnummer', '$_POST[vraag]', '$_POST[antwoord1]', '$_POST[antwoord2]','$_POST[antwoord3]','$_POST[antwoord4]','$_POST[categorie]');";
//echo $query; //DEBUGREGEL
// goede antwoord inserten
$query = "INSERT INTO antwoorden (vraagnummer, goede_antwoord) VALUES ('$newnummer', $goede_antwoord');";
//feedback
?>
// vraag inserten
$query = "INSERT INTO vragen (vraagnummer, vraag, antwoord1, antwoord2, antwoord3, antwoord4, categorie) VALUES ('$newnummer', '$_POST[vraag]', '$_POST[antwoord1]', '$_POST[antwoord2]','$_POST[antwoord3]','$_POST[antwoord4]','$_POST[categorie]');";
//echo $query; //DEBUGREGEL
// goede antwoord inserten
$query = "INSERT INTO antwoorden (vraagnummer, goede_antwoord) VALUES ('$newnummer', $goede_antwoord');";
//feedback
?>
Je hebt wel leuk een $query gemaakt, maar die $query word niet uitgevoerd (mysql_query()) en vervolgens overschreven.
Verder ontbreekt -iedere- controle en ik betwijfel dus ook of je hiermee je eindopdracht gaat halen.
Het concept controle is nog niet nodig geweest aangezien onze/mijn scripts enorm eenvoudig zijn. Het zou voor mijzelf leuk zijn om het wel te implementeren, maar kon het even niet vinden. Dus mocht je een linkje hebben waar een beschrijving kan vinden van controle gedoe, zeer welkom.
Ik begrijp dat je duidelijk wilt maken dat dit van kinderlijk niveau is, maar je toekomstverwachting is niet zo gewenst als je antwoord. Desalniettemin, mijn dank is groot :)
Deze query mag je NOOIT uitvoeren om een volgend id aan te maken, dat is smeken om problemen. Ga maar eens met 10 man tegelijk een id opvragen, krijg je alle 10 hetzelfde resultaat...
Gebruik een auto_increment, dat is de enige veilige manier om unieke id's aan te maken in MySQL. Je kunt na het aanmaken van het nieuwe record, dus ná de INSERT, met mysql_insert_id() het aangemaakte nummertje opvragen in PHP.
Zie verder de opmerkingen van Arjan, het script is nog niet voor de helft klaar. Vrij logisch dat er dan nog het e.e.a. fout gaat.
SQL Beginnershandleiding. Daar wordt foutafhandeling ook in besproken, en dingen als prepared statements waar je pluspuntjes voor zou moeten krijgen van je docent :)
PDO heeft trouwens nog een leuk dingetje: het kan exceptions gooien (en daarmee je script stoppen en een handige melding weergeven) wanneer er iets mis gaat. Gebruik je dat, in combinatie met foreign key constraints (relaties in je database definiëren en afdwingen) en MySQL in de juiste modus zetten, dan heb je eigenlijk geen extra code voor foutafhandeling nodig. Echt een aanrader, maar misschien iets te veel voor beginners.
All the basics & de dingetjes die leuk zijn om te weten: PDO heeft trouwens nog een leuk dingetje: het kan exceptions gooien (en daarmee je script stoppen en een handige melding weergeven) wanneer er iets mis gaat. Gebruik je dat, in combinatie met foreign key constraints (relaties in je database definiëren en afdwingen) en MySQL in de juiste modus zetten, dan heb je eigenlijk geen extra code voor foutafhandeling nodig. Echt een aanrader, maar misschien iets te veel voor beginners.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
pgFrank schreef op 05.04.2009 14:35:
Deze query mag je NOOIT uitvoeren om een volgend id aan te maken, dat is smeken om problemen. Ga maar eens met 10 man tegelijk een id opvragen, krijg je alle 10 hetzelfde resultaat...
Gebruik een auto_increment, dat is de enige veilige manier om unieke id's aan te maken in MySQL. Je kunt na het aanmaken van het nieuwe record, dus ná de INSERT, met mysql_insert_id() het aangemaakte nummertje opvragen in PHP.
Zie verder de opmerkingen van Arjan, het script is nog niet voor de helft klaar. Vrij logisch dat er dan nog het e.e.a. fout gaat.
Deze query mag je NOOIT uitvoeren om een volgend id aan te maken, dat is smeken om problemen. Ga maar eens met 10 man tegelijk een id opvragen, krijg je alle 10 hetzelfde resultaat...
Gebruik een auto_increment, dat is de enige veilige manier om unieke id's aan te maken in MySQL. Je kunt na het aanmaken van het nieuwe record, dus ná de INSERT, met mysql_insert_id() het aangemaakte nummertje opvragen in PHP.
Zie verder de opmerkingen van Arjan, het script is nog niet voor de helft klaar. Vrij logisch dat er dan nog het e.e.a. fout gaat.
Nog een grappig verhaal. Groot deel van m'n systeem komt van iemand anders, was een script drama (als dát nog eens onder jullie ogen zou komen.....), en die had bij aanmaken database niet gebruik gemaakt van auto increment. Ondertussen wel gedaan, dus snap je kritiek ook zeker ;)
Geeft trouwens aan dat jullie het hoofdstuk normaliseren ook gemist hebben.
Arjan Kapteijn schreef op 05.04.2009 16:51:
INSERT INTO vragen (vraagnummer, vraag, antwoord1, antwoord2, antwoord3, antwoord etc etc etc)
Geeft trouwens aan dat jullie het hoofdstuk normaliseren ook gemist hebben.
Geeft trouwens aan dat jullie het hoofdstuk normaliseren ook gemist hebben.
En ook daar heb je een punt, Maar zoals ik zei, is mijn systeem gebasseerd (met toestemming) op die van iemand anders, dus valt daar gelukkig weer een verwijt weg.