SQL Functie
In de tabel 'boeken' staan de volgende waardes: naam,achternaam,username,klas,titel,schrijver
In het formulier vul je de titel en schrijver in:
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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Boek toevoegen</title>
</head>
<body>
<form method="post" action="insert.php">
<input type="text" name="Schrijver" /> <br>
<input type="text" name="Titel" /> <br>
<input type="submit" value="Submit">
</form>
</body>
</html>
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Boek toevoegen</title>
</head>
<body>
<form method="post" action="insert.php">
<input type="text" name="Schrijver" /> <br>
<input type="text" name="Titel" /> <br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Dit wordt er op de volgende manier in gestopt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$host=""; //your host name
$username=""; //your user name
$password=""; // your password
$db_name=""; // your database name
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); //mysql connection
mysql_select_db("$db_name")or die("cannot select DB"); //select your database
$titel = $_POST['Titel'];
$schrijver = $_POST['Schrijver'];
if(empty($titel) || empty($schrijver)) die('Vul een Schrijver <strong>en</strong> Titel in op <a href="boektoevoegen.html">het formulier</a>.');
$query = "INSERT INTO Boeken (Titel,Schrijver) VALUES ('$name', '$email')";
mysql_query($query) or die('Query "' . $query . '" failed: ' . mysql_error());
echo 'Boek toegevoegd';
?>
$host=""; //your host name
$username=""; //your user name
$password=""; // your password
$db_name=""; // your database name
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); //mysql connection
mysql_select_db("$db_name")or die("cannot select DB"); //select your database
$titel = $_POST['Titel'];
$schrijver = $_POST['Schrijver'];
if(empty($titel) || empty($schrijver)) die('Vul een Schrijver <strong>en</strong> Titel in op <a href="boektoevoegen.html">het formulier</a>.');
$query = "INSERT INTO Boeken (Titel,Schrijver) VALUES ('$name', '$email')";
mysql_query($query) or die('Query "' . $query . '" failed: ' . mysql_error());
echo 'Boek toegevoegd';
?>
Nu wil ik dat ook de naam, achternaam, username en klas in de tabel boeken worden gezet. Ik werk met sessies, de gebruikersnaam valt op te vragen met $_SESSION['username']
Kan iemand mij opweg helpen of een link sturen hoe ik dit kan doen? Alleen de SQL functie helpt mij al opweg.
Ik zou sowieso een aantal dingen anders doen.
De twee regels met $titel = $_POST['Titel'] en $schrijver = $_POST['Schrijver']; zijn overbodig maar daarnaast ook onveilig omdat je later niet meer weet dat $titel en $schrijver uit $_POST data komen.
Daarnaast is het niet aan te raden om bij een empty $titel 'die' te gebruiken.
Als je het vertaalt naar het normale leven is het ook wat onaardig om te zeggen 'sterf' als iemand iets verkeerd doet.
Wil je de gegevens die je al in een andere SQL tabel hebt staan letterlijk kopieren naar deze boeken tabel? Misschien is het verstandiger om een relatie ertussen aan te geven en bij het ophalen van de gegeven deze relatie te JOINEN.
Frank Martens op 10/08/2013 18:12:32:
Momenteel ben ik bezig om waarden uit een andere tabel te verplaatsen én iets toe te voegen. In de tabel 'members' staan de volgende waardes: naam,achternaam,username,klas,wachtwoord,email
In de tabel 'boeken' staan de volgende waardes: naam,achternaam,username,klas,titel,schrijver
In de tabel 'boeken' staan de volgende waardes: naam,achternaam,username,klas,titel,schrijver
Wat wil precies? Dezelfde gegevens in 2 verschillende tabellen opslaan?!
Lijkt me niet goed.
Verder t.a.v. je code:
Controleer of een formulier verzonden is met
Controleer of variabelen bestaan: isset.
Controleer of ze niet leeg zijn.
Kopiëren van $_POST waarden is niet nodig (zoals Ramon ook uitlegt).
Variabelen buiten quotes.
Je query is 'lek' -> je gebruikt zonder beveiliging de invoer vanuit het formulier (kijk naar mysql_real_escape_string).
Ramon van Dongen op 10/08/2013 19:21:07:
Hallo Frank,
Ik zou sowieso een aantal dingen anders doen.
De twee regels met $titel = $_POST['Titel'] en $schrijver = $_POST['Schrijver']; zijn overbodig maar daarnaast ook onveilig omdat je later niet meer weet dat $titel en $schrijver uit $_POST data komen.
Ik zou sowieso een aantal dingen anders doen.
De twee regels met $titel = $_POST['Titel'] en $schrijver = $_POST['Schrijver']; zijn overbodig maar daarnaast ook onveilig omdat je later niet meer weet dat $titel en $schrijver uit $_POST data komen.
Kan ik deze weglaten en gewoon in de SQL code $_POST['Schrijver'] plakken?
Ramon van Dongen op 10/08/2013 19:21:07:
Als je het vertaalt naar het normale leven is het ook wat onaardig om te zeggen 'sterf' als iemand iets verkeerd doet.
Je bedoelt dat ik hier een if / else optie moet gebruiken? Wat is het voordeel daarvan mbt een 'die' functie?
Ramon van Dongen op 10/08/2013 19:21:07:
Wil je de gegevens die je al in een andere SQL tabel hebt staan letterlijk kopieren naar deze boeken tabel? Misschien is het verstandiger om een relatie ertussen aan te geven en bij het ophalen van de gegeven deze relatie te JOINEN.
Ik wil de regristratiegegevens (members-tabel) letterlijk kopieëren naar die tabel, zodat een leraar op school deze kan zien.
Groet,
Frank
Obelix en Idefix op 10/08/2013 19:31:19:
Wat wil precies? Dezelfde gegevens in 2 verschillende tabellen opslaan?!
Lijkt me niet goed.
Frank Martens op 10/08/2013 18:12:32:
Momenteel ben ik bezig om waarden uit een andere tabel te verplaatsen én iets toe te voegen. In de tabel 'members' staan de volgende waardes: naam,achternaam,username,klas,wachtwoord,email
In de tabel 'boeken' staan de volgende waardes: naam,achternaam,username,klas,titel,schrijver
In de tabel 'boeken' staan de volgende waardes: naam,achternaam,username,klas,titel,schrijver
Wat wil precies? Dezelfde gegevens in 2 verschillende tabellen opslaan?!
Lijkt me niet goed.
Deze gegevens wil ik inderdaad in 2 tabellen opslaan, maar de ene tabel is alleen zichtbaar voor mij, de andere voor een leraar.
Obelix en Idefix op 10/08/2013 19:31:19:
Zal ik gaan gebruiken, controleren of ze niet leeg zijn gebeurt al, zie 2e script.
Obelix en Idefix op 10/08/2013 19:31:19:
Je query is 'lek' -> je gebruikt zonder beveiliging de invoer vanuit het formulier (kijk naar mysql_real_escape_string).
Je hebt gelijk, hier heb ik niet aan gedacht.
Groet,
Frank
Frank Martens op 10/08/2013 21:14:22:
Ik wil de regristratiegegevens (members-tabel) letterlijk kopieëren naar die tabel, zodat een leraar op school deze kan zien.
Deze gegevens wil ik inderdaad in 2 tabellen opslaan, maar de ene tabel is alleen zichtbaar voor mij, de andere voor een leraar.
Ramon van Dongen op 10/08/2013 19:21:07:
Wil je de gegevens die je al in een andere SQL tabel hebt staan letterlijk kopieren naar deze boeken tabel? Misschien is het verstandiger om een relatie ertussen aan te geven en bij het ophalen van de gegeven deze relatie te JOINEN.
Ik wil de regristratiegegevens (members-tabel) letterlijk kopieëren naar die tabel, zodat een leraar op school deze kan zien.
Obelix en Idefix op 10/08/2013 19:31:19:
Wat wil precies? Dezelfde gegevens in 2 verschillende tabellen opslaan?!
Lijkt me niet goed.
Lijkt me niet goed.
Deze gegevens wil ik inderdaad in 2 tabellen opslaan, maar de ene tabel is alleen zichtbaar voor mij, de andere voor een leraar.
En dit heb je geregeld met priveleges op die tabellen?
En dan nog doe je het niet goed, want beter is om de members tabel op te splitsen in twee tabellen, één met de publieke gegevens en de andere met wachtwoord en email.
Gewijzigd op 11/08/2013 08:35:35 door Ger van Steenderen
Ik heb dit niet geregeld met privileges, maar de tabel 'Boeken' laat ik uitlezen op een beveiligde pagina. Ik ben de enige die de members tabel ziet, dus het lijkt mij niet nodig 2 tabellen te maken voor de members.
Maakt kans op fouten groter en is bewerkelijker.
Gegevens leg je doorgaans maar op 1 plek vast in een database.
In de boeken tabel moet één persoon bijvoorbeeld 10 boeken toevoegen. Dat zijn 10 aparte Boek_ID's, en in de tabel members komen maar één keer de registratiegegevens. Daarom moeten de gegevens worden overgezet, naar de tabel boeken, zodat als de leraar in het zoek formulier 'Piet' intikt, alle boeken van 'Piet' komen te staan.
ander topic van jou?.
Want das namelijk de enige GOEDE methode!
Dus het correcte antwoord op jou vraag hoe gegevens over te zetten van de ene tabel naar de andere is:
Dat doe je niet want dat is niet nodig.
Wat is er gebeurd met de data opzet uit een Want das namelijk de enige GOEDE methode!
Dus het correcte antwoord op jou vraag hoe gegevens over te zetten van de ene tabel naar de andere is:
Dat doe je niet want dat is niet nodig.
Aah, die was ik even vergeten. Nu heb ik die methode toegevoegd, alleen nu moet ik op een pagina uitlezen welke boeken bij welke gebruiker horen. Er wordt een username en book_id opgeslagen in de tabel. Hoe doe ik dat?
Dan krijg je ongeveer deze query:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
----members----
|id |naam |achternaam|klas|username|password|email |
|324|Frank|Martens |H2C |donfrank|- |[email protected]|
----Boeken----
|book_id|Titel |Schrijver |
|45 |Kappen!|Carry Slee|
----user_book----
|id|user_id|book_id|
|1 |324 |45 |
|id |naam |achternaam|klas|username|password|email |
|324|Frank|Martens |H2C |donfrank|- |[email protected]|
----Boeken----
|book_id|Titel |Schrijver |
|45 |Kappen!|Carry Slee|
----user_book----
|id|user_id|book_id|
|1 |324 |45 |
Met de query zal ik even gaan puzzelen.
Toevoeging op 11/08/2013 22:49:26:
Ger, buiten dat er nog al wat mis is met het script (beveiliging, etc.), krijg ik het member_id er maar niet in. Kan jij mij daarbij helpen?
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
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
<?php
$host=""; //yout host name
$username=""; //yout user name
$password=""; // your password
$db_name=""; // your database name
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); //mysql connection
mysql_select_db("$db_name")or die("can not select DB"); //select your database
$titel = $_POST['Titel'];
$schrijver = $_POST['Schrijver'];
$user = $_SESSION['username'];
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="members"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$query = mysql_query("SELECT id FROM members WHERE username = '".$_SESSION['username']."'");
$row = mysql_fetch_array($query);
$result = mysql_query("INSERT INTO Boeken (Titel,Schrijver)
VALUES ('$titel', '$schrijver')");
if ($result) {
$mb_result = mysql_query("INSERT INTO user_book (user_id, book_id)
VALUES ( '$row', LAST_INSERT_ID())");
if ($mb_result)
echo 'Boek ingevoegd';
else echo mysql_error();
}
?>
$host=""; //yout host name
$username=""; //yout user name
$password=""; // your password
$db_name=""; // your database name
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); //mysql connection
mysql_select_db("$db_name")or die("can not select DB"); //select your database
$titel = $_POST['Titel'];
$schrijver = $_POST['Schrijver'];
$user = $_SESSION['username'];
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="members"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$query = mysql_query("SELECT id FROM members WHERE username = '".$_SESSION['username']."'");
$row = mysql_fetch_array($query);
$result = mysql_query("INSERT INTO Boeken (Titel,Schrijver)
VALUES ('$titel', '$schrijver')");
if ($result) {
$mb_result = mysql_query("INSERT INTO user_book (user_id, book_id)
VALUES ( '$row', LAST_INSERT_ID())");
if ($mb_result)
echo 'Boek ingevoegd';
else echo mysql_error();
}
?>
Hij pakt $row niet op. Ik heb verschillende dingen geprobeerd, maar kom er niet uit. Ik ben er al de hele avond mee bezig... Kan jij mij verder helpen, of iemand anders?
Toevoeging op 11/08/2013 22:57:28:
Toch weer zo;n klein foutje... Sessionstart vergeten en $row moest $row['id'] zijn...