Database phpMyadmin

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Twan de Langen

Twan de Langen

17/05/2015 18:06:29
Quote Anchor link
Ik heb een database gemaakt in phpMyadmin
deze database bestaat uit :
1 lidnr
2 naam
3 achternaam
4 woonplaats
4 leeftijd


Nu heb ik een pagina waarmee ik leden kan toevoegen. Die werkt prima.
Nu moet ik een pagina maken waarmee ik de gegevens over de leden kan updaten.
Het liefst zoek ik een formulier waar ik de naam kan invoeren en dat een andere pagina de naam met de overige gegevens weergeeft en aanpassingen kan doen.

het formulier waarmee ik leden kan toevoegen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
  $host
="localhost";
  $gebruiker="xxxxxx";
  $wachtwoord="xxxxx$";
  $verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
  if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
  de gegevens worden niet vastgelegd in de leden-tabel"
);


  $naam=strip_tags(stripslashes(trim($_POST["naam"])));
  $achternaam=strip_tags(stripslashes(trim($_POST["achternaam"])));
  $woonplaats=strip_tags(stripslashes(trim($_POST["woonplaats"])));
  $leeftijd=strip_tags(stripslashes(trim($_POST["leeftijd"])));



$sql = "INSERT INTO twandatabase.leden( naam, achternaam, woonplaats, leeftijd ) VALUES ('$naam','$achternaam','$woonplaats','$leeftijd')";


echo "<p>$sql</p>";
#mysql_select_db('twandatabase');
echo "<p>OK</p>";
  $retval = mysql_query($sql);
echo "<p>OK</p>";
  if (! $retval)
  {

     die("Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: ".mysql_error());
  }

  else
  {
     echo "De gegevens werden correct weggeschreven naar de database";  
  }

mysql_close($verbinding);
?>
Gewijzigd op 17/05/2015 18:07:25 door Twan de Langen
 
PHP hulp

PHP hulp

16/11/2024 11:45:48
 
- Ariën  -
Beheerder

- Ariën -

17/05/2015 18:30:27
Quote Anchor link
Lees ook eens deze tutorial: http://phptuts.nl/view/41/1/
 
Eddy E

Eddy E

17/05/2015 19:46:07
Quote Anchor link
Regel 2 t/m 5 kunnen in 1 regel. Dit is nodeloos kopieren met het risico dat je later (per ongeluk of wat dan ook) toch worden getoond ergens. Waarom het risico lopen?
Regel 5: gebruik mysqli, de oude mysql_-functies gaan binnenkort verdwijnen.
Regel 6: gebruik een gewone afhandeling. Je footer mag best verschijnen als de verbinding niet lukt. Komt niet vaak voor, maar toch.

Regel 10 t/m 13: ga mysqli_escape_string() gebruiken met een foreach():
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($_GET as $key => $value)
 {

 $$key = mysqli_escape_string(trim(strip_tags($value)));
 }

?>


Regel 17: haal je variabelen uit de quote. Dat voorkomt gedoe met add_slashes() etc:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "INSERT INTO twandatabase.leden ( naam, achternaam, woonplaats, leeftijd ) VALUES ('".$naam."','".$achternaam."','".$woonplaats."','".$leeftijd."'); ";
?>


Regel 23 en 25 kunnen in 1:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  if (mysqli_query($con, $sql))
?>


Regel 33 is onnodig. Dat gebeurt vanzelf aan het einde van het script.
mysqli_close() gebruik je vooral als je langdurende queries gebruikt.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/05/2015 19:46:33
Quote Anchor link
Beste Twan,

Probeer het begrip database en tabellen van elkaar te onderscheiden.

Op een database-server kunnen meerdere databases aanwezig zijn. In deze databases kunnen verschillende tabellen aanwezig zijn. Een tabel bestaat uit een aantal kolommen. Bijv. id, naam, lidnr enz.
Elke regel of rij die aan een tabel wordt toegevoegd heet een record.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
[sql-server]
     |
     |- [database] webshop
     |       |
     |       |---- [tabel] customers
     |       |        |
     |       |        |---- [kolom] customer_id
     |       |        |---- [kolom] name
     |       |        |---- [kolom] email
     |       |
     |       |---- [tabel] orders
     |                |
     |                |---- [kolom] order_id
     |                |---- [kolom] description
     |                |---- [kolom] amount
     |
     |- [database] webshop_backup
             |
             |---- [tabel] customers
             |        |
             |        |---- [kolom] customer_id
             |        |---- [kolom] name
             |        |---- [kolom] email
             |
             |---- [tabel] orders
                      |
                      |---- [kolom] order_id
                      |---- [kolom] description
                      |---- [kolom] amount

Daarnaast krijg ik vlekken in mijn nek als ik een kolom met de naam 'leeftijd' zie. :P Dit kun je beter omzetten naar geboortedatum. Je kunt dan de leeftijd uitrekenen en je hoeft niet het hele jaar de verjaardagskalender bij te houden :-)

Dan iets in trant van antwoord op je vraag: CRUD
Create
Read
Update
Delete

Create query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO leden (lidnr, naam, achternaam, woonplaats, geb_datum) VALUES (12345, 'Frank', 'NB', 'Lisse', '2001-01-02')


Read query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT naam, achternaam FROM leden WHERE lidnr=12345


Update query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE leden SET lidnr=67890, woonplaats='Leiden' WHERE lidnr=12345


Delete query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
DELETE leden WHERE lidnr=12345
Gewijzigd op 17/05/2015 20:08:48 door Frank Nietbelangrijk
 
Twan de Langen

Twan de Langen

17/05/2015 20:48:36
Quote Anchor link
ik dacht aan onderstaande code. Helaas werkt dit niet.
Iemand sugesties ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
  $host
="localhost:3307";
  $gebruiker="xxxxxx";
  $wachtwoord="xxxx";
  $verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
  if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
  de gegevens worden niet vastgelegd in de leden-tabel"
);


$lidnr = $_POST['lidnr'];
$naam = $_POST['Naam'];
$achternaam = $_POST['achternaam'];
$woonplaats = $_POST['woonplaats'];
$leeftijd = $_POST['leeftijd'];


$SQL = "UPDATE twandatabase.leden ".
"SET lidnr = $lidnr ".
"WHERE lidnr = $lidnr" ;

$result = mysql_query($SQL);
 
echo "<h2>Er is content aangepast!</h2>";
?>
 
- Ariën  -
Beheerder

- Ariën -

17/05/2015 20:52:36
Quote Anchor link
Wat werkt er niet aan? Zet altijd error-reporting aan bovenaan je script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
?>


Verder raad ik aan om foutafhandeling in te bouwen:
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/algemene-structuur/1930/

Los daarvan ben je ook gevoelig voor SQL-injection, waarmee anderen je query kunnen manipuleren met gevaarlijke gevolgen van dien. Gebruik dus mysql_real_escape_string() om je $_POST-variabelen.

Verder raad ik aan om je te verdiepen in de MySQLi-functies.
 
Eddy E

Eddy E

17/05/2015 21:22:57
Quote Anchor link
Dus je zegt: bij lidnummer 6 moet het lidnummer 6 worden.
Beetje.... onnodig?
 
Twan de Langen

Twan de Langen

17/05/2015 21:24:53
Quote Anchor link
ben al wat verder. Heb nu onderstaande code


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
  $host
="localhost:3307";
  $gebruiker="werknemer1";
  $wachtwoord="1Kliko123$";
  $verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
  if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
  de gegevens worden niet vastgelegd in de leden-tabel"
);

  $naam=strip_tags(stripslashes(trim($_POST["naam"])));
  $achternaam=strip_tags(stripslashes(trim($_POST["achternaam"])));
  $woonplaats=strip_tags(stripslashes(trim($_POST["woonplaats"])));
  $leeftijd=strip_tags(stripslashes(trim($_POST["leeftijd"])));



$sql = " Update twandatabase.leden SET `Naam`=$naam,`Achternaam`=$achternaam,`Woonplaats`=$woonplaats,`Leeftijd`=$leeftijd WHERE naam =$naam  ";


echo "<p>$sql</p>";
#mysql_select_db('twandatabase');
echo "<p>OK</p>";
  $retval = mysql_query($sql);
echo "<p>OK</p>";
  if (! $retval)
  {

     die("Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: ".mysql_error());
  }

  else
  {
     echo "De gegevens werden correct weggeschreven naar de database";  
  }

mysql_close($verbinding);
?>



daarbij krijg ik deze foutcode. De naam Piet bestaat wel in de database


Update twandatabase.leden SET `Naam`=Piet,`Achternaam`=Piraatje,`Woonplaats`=spijkenisse,`Leeftijd`=23 WHERE naam =Piet

OK

OK
Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: Unknown column 'Piet' in 'where clause'
 
- SanThe -

- SanThe -

17/05/2015 21:28:24
Quote Anchor link
SET `Naam`=$naam,............

SET Naam='".$naam."',...........
 
Twan de Langen

Twan de Langen

17/05/2015 21:37:43
Quote Anchor link
ik krijg nu onderstaande foutmelding


Update twandatabase.leden SET `Naam`=Piet,`Achternaam`=Piraatje,`Woonplaats`=spijkenisse,`Leeftijd`=23 WHERE naam ='Piet'

OK

OK
Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: Unknown column 'Piet' in 'field list'
 
- Ariën  -
Beheerder

- Ariën -

17/05/2015 21:41:05
Quote Anchor link
Piet in je SET is een string, en hoort tussen single-quotes. Net als de andere SET-waardes.
Bij je WHERE doe je het wel goed.
 
Twan de Langen

Twan de Langen

17/05/2015 21:44:33
Quote Anchor link
oke, hoe hoort die waarde dan te zijn? dit is de 1e dag dat ik me met php bezig houd
 
- SanThe -

- SanThe -

17/05/2015 21:45:50
Quote Anchor link
En je hebt Naam en naam, dat lijkt mij ook niet goed.
 
- Ariën  -
Beheerder

- Ariën -

17/05/2015 21:56:18
Quote Anchor link
Twan de Langen op 17/05/2015 21:44:33:
oke, hoe hoort die waarde dan te zijn? dit is de 1e dag dat ik me met php bezig houd

Zo moet het:
- SanThe - op 17/05/2015 21:28:24:
SET Naam='".$naam."',...........
 
Twan de Langen

Twan de Langen

17/05/2015 22:06:30
Quote Anchor link
mooi het is gelukt
Iedereen bedankt voor het reageren
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/05/2015 22:11:08
Quote Anchor link
Good luck Twan.
 
Ivo P

Ivo P

18/05/2015 11:19:50
Quote Anchor link
Je hebt een kolom "leeftijd"

Dat is niet handig, want die is morgen al weer achterhaald.

Geboortedatum is beter om op te slaan (in een kolom van het type DATE), zodat je altijd de juiste leeftijd kunt bepalen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.