Database benaderen met php
Pauline
Toevoeging op 03/01/2015 19:48:21:
Maakt het btw uit in welke map je je database opslaat op je computer?
Wanneer de database niet gevonden kan worden kan de tabel ook niet gevonden worden. De tabel zit namelijk in de database.
PHPMyAdmin is freeware dus je kunt rustig de volledige en definitieve versie gebruiken. Ik wist trouwens niet eens dat er een demoversie van was. Heeft ook weinig nut bij freeware volgens mij.
Pauline Straaten op 03/01/2015 19:21:14:
Ik werk trouwens met de demo versie van phpmyadmin.
Bedoel je daarmee 'Try Demo' op phpmyadmin.net? Ik vrees dat je daar weinig aan hebt. Dat is echt alleen maar een demo-site om een beetje mee te spelen en het zou me niet verbazen als de inhoud regelmatig wordt weggegooid. (Sterker nog, het zou me verbazen als ze dat níet deden.)
Je vraag of het uitmaakt in welke map op je computer je de database opslaat doet me vermoeden dat je na het aanmaken van je database de Export-functie gebruikt om een backup te maken. Wat daaruit komt is echter niet iets dat bruikbaar is als database.
Om echt aan de gang te kunnen, zou je een hosting-abonnement moeten hebben waarmee je databases kunt gebruiken. Je hoeft je dan ook niet af te vragen waar je de databases moet opslaan, want alle data staat dan bij je webhoster.
Gewijzigd op 04/01/2015 12:11:56 door Willem vp
Als beginner zijnde zou ik niet meteen alles bij een host onderbrengen maar zou ik eerst XAMPP eens installeren op mijn eigen PC zodat ik kosteloos en eindeloos kan experimenteren met MySQL en PHP (en phpMyAdmin).
Heel erg bedankt voor deze reacties, ik heb nu de volledige versie van phpmyadmin en heb een database gemaakt. Deze heb ik nu wel gevonden want er is een map aangemaakt met de naam van deze database. Hoe verwijs ik nu mn localhost naar deze database?
http://php.net/mysqli_connect.
En lees ook de genoemde tutorial van phptuts.nl.
Met de aangemaakte map hoef je niks te doen. De database kan je beheren via phpmyadmin.
Kijk eens naar En lees ook de genoemde tutorial van phptuts.nl.
Met de aangemaakte map hoef je niks te doen. De database kan je beheren via phpmyadmin.
Gewijzigd op 04/01/2015 14:08:58 door - Ariën -
Zelf ben ik bezig met een kleine website om mijn basiskennis van php te oefenen.
Ik kan je aanraden om je ook eens te verdiepen het gebruik van PDO en 'prepared statements' om met je database te werken.
Deze uitleg vond ik zelf heel handig: http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
Heel erg bedankt iedereen. Het is mij inmiddels gelukt om de database te benaderen vanuit php. Het lukt mij ook om een nieuw record toe te voegen of te verwijderen, alleen bij het wijzigen gaat er iets mis. Ik kan namelijk een oud record wijzigen, dit wordt ook weergeven, maar als ik dit record wijzig dan vallen de karakters in ieder veld na de eerste spatie weg. Hoe los ik dit op?
Kan je precies uitleggen wat je doet, en wat je aan PHP-code nu hebt?
!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Gegevens wijzigen</title>
</head>
<body>
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
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
<?php
// Maken van verbinding
try {
$db = new PDO('mysql:host=localhost;dbname=Boekenlijst3', 'root','');
}
catch(PDOException $e) {
echo $e->getMessage();
}
// De SQL opdracht
// Hier wordt het boek geselecteerd om de gegevens op
// te halen die je wilt wijzigen. Het veld boeknummer zit
// in $_POST[verstopt]
$sql = "SELECT * FROM Boeken3 WHERE BoekNummer = $_POST[verstopt]";
$resultaat = $db->query($sql);
// De gegevens worden in variabelen gestopt zodat
// we ze in het formulier kunnen zien
foreach($resultaat as $row) {
$BoekNummer = $row['BoekNummer'];
$Auteur = $row['Auteur'];
$Titel = $row['Titel'];
$PlaatsNaam = $row['PlaatsNaam'];
$Jaar = $row['Jaar'];
$AantalPunten = $row['AantalPunten'];
$NaamLeerling = $row['NaamLeerling'];
}
// Sluiten van verbinding
$db = NULL;
echo "<form action='wijzigdefinitief.php' method='post'>
<p>Boeknummer: <br>
<input name='BoekNummer' type='text' size='30' value=$BoekNummer tabindex='1'>
</p>
<p>Auteur: <br>
<input name='Auteur' type='text' size='30' value=$Auteur tabindex='2'>
</p>
<p>Titel: <br>
<input name='Titel' type='text' size='30' value=$Titel tabindex='3'>
</p>
<p>Plaatsnaam: <br>
<input name='PlaatsNaam' type='text' size='30' value=$PlaatsNaam tabindex='4'>
</p>
<p>Jaar: <br>
<input name='Jaar' type='text' size='30' value=$Jaar tabindex='5'>
</p>
<p>Aantal punten: <br>
<input name='AantalPunten' type='text' size='30' value=$AantalPunten tabindex='6'>
</p>
<p>Naam: <br>
<input name='NaamLeerling' type='text' size='30' value=$NaamLeerling tabindex='7'>
</p>
<p><input type='submit' name='submit' ??
value='Opslaan gegevens' title='Verstuur dit formulier' tabindex='8'>
</p>
</form>"
?>
// Maken van verbinding
try {
$db = new PDO('mysql:host=localhost;dbname=Boekenlijst3', 'root','');
}
catch(PDOException $e) {
echo $e->getMessage();
}
// De SQL opdracht
// Hier wordt het boek geselecteerd om de gegevens op
// te halen die je wilt wijzigen. Het veld boeknummer zit
// in $_POST[verstopt]
$sql = "SELECT * FROM Boeken3 WHERE BoekNummer = $_POST[verstopt]";
$resultaat = $db->query($sql);
// De gegevens worden in variabelen gestopt zodat
// we ze in het formulier kunnen zien
foreach($resultaat as $row) {
$BoekNummer = $row['BoekNummer'];
$Auteur = $row['Auteur'];
$Titel = $row['Titel'];
$PlaatsNaam = $row['PlaatsNaam'];
$Jaar = $row['Jaar'];
$AantalPunten = $row['AantalPunten'];
$NaamLeerling = $row['NaamLeerling'];
}
// Sluiten van verbinding
$db = NULL;
echo "<form action='wijzigdefinitief.php' method='post'>
<p>Boeknummer: <br>
<input name='BoekNummer' type='text' size='30' value=$BoekNummer tabindex='1'>
</p>
<p>Auteur: <br>
<input name='Auteur' type='text' size='30' value=$Auteur tabindex='2'>
</p>
<p>Titel: <br>
<input name='Titel' type='text' size='30' value=$Titel tabindex='3'>
</p>
<p>Plaatsnaam: <br>
<input name='PlaatsNaam' type='text' size='30' value=$PlaatsNaam tabindex='4'>
</p>
<p>Jaar: <br>
<input name='Jaar' type='text' size='30' value=$Jaar tabindex='5'>
</p>
<p>Aantal punten: <br>
<input name='AantalPunten' type='text' size='30' value=$AantalPunten tabindex='6'>
</p>
<p>Naam: <br>
<input name='NaamLeerling' type='text' size='30' value=$NaamLeerling tabindex='7'>
</p>
<p><input type='submit' name='submit' ??
value='Opslaan gegevens' title='Verstuur dit formulier' tabindex='8'>
</p>
</form>"
?>
</body>
</html>
En welk type heeft het veld in de database dan?
hier wijzigen de gegevens.
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
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
<?php
// Maken van verbinding
try {
$db = new PDO('mysql:host=localhost;dbname=Boekenlijst3', 'root','');
}
catch(PDOException $e) {
echo $e->getMessage();
}
// De update opdracht
$sql = "UPDATE Boeken3
SET BoekNummer = '$_POST[BoekNummer]', Auteur = '$_POST[Auteur]', Titel = '$_POST[Titel]', PlaatsNaam = '$_POST[PlaatsNaam]', Jaar = '$_POST[Jaar]', AantalPunten = '$_POST[AantalPunten]', NaamLeerling = '$_POST[NaamLeerling]' WHERE BoekNummer = $_POST[BoekNummer]";
$aantalregelsgewijzigd = $db->exec($sql);
// Het wijziging bekijken
$sql = "SELECT * FROM Boeken3
WHERE BoekNummer = $_POST[BoekNummer]";
$resultaat = $db->query($sql);
foreach($resultaat as $row) {
echo '<p>';
echo 'BoekNummer: '.$row['BoekNummer'].'<br>';
echo 'Auteur: '.$row['Auteur'].'<br>';
echo 'Titel: '.$row['Titel'].'<br>';
echo 'Plaatsnaam: '.$row['PlaatsNaam'].'<br>';
echo 'Jaar: '.$row['Jaar'].'<br>';
echo 'AantalPunten: '.$row['AantalPunten'].'<br>';
echo 'Naam leerling: '.$row['NaamLeerling'].'<br>';
echo '</p>';
}
echo "<p>is nu gewijzigd!</p>";
echo "<p><form action='bekijken.php' method='post'>
<input type='submit' name='submit' value='Terug'>
</form></p>";
$db = NULL;
?>
// Maken van verbinding
try {
$db = new PDO('mysql:host=localhost;dbname=Boekenlijst3', 'root','');
}
catch(PDOException $e) {
echo $e->getMessage();
}
// De update opdracht
$sql = "UPDATE Boeken3
SET BoekNummer = '$_POST[BoekNummer]', Auteur = '$_POST[Auteur]', Titel = '$_POST[Titel]', PlaatsNaam = '$_POST[PlaatsNaam]', Jaar = '$_POST[Jaar]', AantalPunten = '$_POST[AantalPunten]', NaamLeerling = '$_POST[NaamLeerling]' WHERE BoekNummer = $_POST[BoekNummer]";
$aantalregelsgewijzigd = $db->exec($sql);
// Het wijziging bekijken
$sql = "SELECT * FROM Boeken3
WHERE BoekNummer = $_POST[BoekNummer]";
$resultaat = $db->query($sql);
foreach($resultaat as $row) {
echo '<p>';
echo 'BoekNummer: '.$row['BoekNummer'].'<br>';
echo 'Auteur: '.$row['Auteur'].'<br>';
echo 'Titel: '.$row['Titel'].'<br>';
echo 'Plaatsnaam: '.$row['PlaatsNaam'].'<br>';
echo 'Jaar: '.$row['Jaar'].'<br>';
echo 'AantalPunten: '.$row['AantalPunten'].'<br>';
echo 'Naam leerling: '.$row['NaamLeerling'].'<br>';
echo '</p>';
}
echo "<p>is nu gewijzigd!</p>";
echo "<p><form action='bekijken.php' method='post'>
<input type='submit' name='submit' value='Terug'>
</form></p>";
$db = NULL;
?>
Gewijzigd op 05/01/2015 20:10:14 door Pauline Straaten
Verder raad ik aan om variabelen buiten quotes te halen:
Code (php)
1
2
3
4
2
3
4
<?php
$sql = "UPDATE Boeken3
SET BoekNummer = '".$_POST['BoekNummer']."', Auteur = '".$_POST['Auteur']."' WHERE BoekNummer = '".$_POST['BoekNummer']'";
?>
$sql = "UPDATE Boeken3
SET BoekNummer = '".$_POST['BoekNummer']."', Auteur = '".$_POST['Auteur']."' WHERE BoekNummer = '".$_POST['BoekNummer']'";
?>
Gewijzigd op 05/01/2015 20:26:30 door - Ariën -
$Titel staat hier niet tussen '' en dan wordt alleen het eerste woord verwerkt. De overige woorden zullen door de validator worden gezien als invalid properties of iets dergelijks.
Ook bij de andere input-velden komt dit overigens voor.
Gewijzigd op 05/01/2015 20:30:40 door Willem vp
Jaa het is gelukt! Het waren de " die ik inderdaad vergeten was. Super bedankt iedereen!
Vrouwelijke developer +1
Maar even on topic, is nu voor de rest alles duidelijk?
Haha Jaa tot nu toe is alles duidelijk, deze opdracht moet ik woensdag inleveren dus ik ga er vandaag ook nog aan werken, dus misschien dat ik nog wat vragen krijg maar voor nu lijkt het erop dat alles werkt!????