[PHP] Simpel Update form werk niet.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MrVegeta
  • Registratie: September 2002
  • Laatst online: 11-09 20:46

MrVegeta

! Dolf is rechtvaardig !

Topicstarter
Na mij (geweldige) log-in systeem dat ik heb gemaakt met PHP (danwel via een tutorial) heb ik besloten eens serieus met PHP bezig te gaan en hoewel het best moeilijk is en veel debugged is, is het best leuk en interessant.

Maar goed, ik ben nu bezig met een (heel simpel) CMS systeem. Ik heb al een form gemaakt waarmee ik records in een database kan posten. Maar nu wil ik graag een manier hebben om die records te editten, dat moet ook wel eens.

Uiteindelijk ben ik hier op uit gekomen maar het werkt niet 100%.
Dit is mijn form die ik heb staan in de index.php pagina.

HTML:
1
2
3
4
5
6
7
8
<center>
UpdateForm.
<form action="cms/update.php" method="post" name="update"  />
Firstname:<input type="text" name="firstname" /><br  />
Lastname:<input type="text" name="lastname" /><br  />
<input type="submit" name="Submit" value="update" />
</form>
</center>


En dit is mijn update.php pagina.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
mysql_connect("localhost", "root", "") or die("Connection Failed");
mysql_select_db("cms")or die("Connection Failed");

$FirstName = $_POST['FirstName'];
$LastName = $_POST['LastName'];
$query = "UPDATE persons SET LastName = '$LastName' WHERE firstname = '$FirstName'";
if(mysql_query($query)){
echo "updated";}
else{
echo "fail";}
?>


Wat er moet gebeuren is dat de info die in de index pagina wordt meegegeven gepost moet worden in de database "cms" en de table "persons". Als het goed is wordt er op deze manier alleen maar de LastName record geupdate waar de FirstName van klopt.

Dus als er in de tabel;

Peter de Vries.
Peter de Bruin
Peter de Jong
Jan Keesma

Staat, en je voert in het updateform "Peter" (als FirstName) en "Stijgerman" (als LastName) dan zouden alle achternamen van Peter moeten veranderen naar "Stijgerman"

Maar als ik dit script uitvoer krijg ik wel een "updated" echo terug maar de records worden niet geupdate.

//edit, even een img van de persons table.
Afbeeldingslocatie: http://www.no-illusions.nl/random/database.jpg

Geeft steekhoudelijke argumenten terwijl hij niet weet waar het over gaat. BlizzBoys, HD casts van StarCraft II gemaakt door Tweakers! Het begint, Zombiepocalyps


Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

Wat is er zo lastig aan even kijken hoe je query er uiteindelijk uit ziet? :) Gewoon even echo'en dus, en jezelf eens gaan inlezen over SQL injection, want als je dit form publiek zet gooi ik graag je database helemaal leeg. :P

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

  • MrVegeta
  • Registratie: September 2002
  • Laatst online: 11-09 20:46

MrVegeta

! Dolf is rechtvaardig !

Topicstarter
--MeAngry-- schreef op vrijdag 16 januari 2009 @ 14:55:
Wat is er zo lastig aan even kijken hoe je query er uiteindelijk uit ziet? :) Gewoon even echo'en dus, en jezelf eens gaan inlezen over SQL injection, want als je dit form publiek zet gooi ik graag je database helemaal leeg. :P
Ik snap wel hoe mijn query er uit ziet ik heb het ook al werkend gehad maar nu edit ik wat gegevens om bij mijn doeleinde te komen en dan werkt het niet. Terwijl ik dus wel een echo terug krijg met update.

En het is nog gewoon lokaal dus veiligheid etc bemoei ik me even niet mee.

Geeft steekhoudelijke argumenten terwijl hij niet weet waar het over gaat. BlizzBoys, HD casts van StarCraft II gemaakt door Tweakers! Het begint, Zombiepocalyps


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 15:13
Is php case sensitive eigenlijk?
HTML:
1
2
Firstname:<input type="text" name="firstname" /><br  /> 
Lastname:<input type="text" name="lastname" /><br  />

PHP:
1
2
$FirstName = $_POST['FirstName']; 
$LastName = $_POST['LastName'];

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20-09 23:58

TeeDee

CQB 241

Even een aantal zaken:

• echo je query (is FirstName wel gevuld?)
• SQL Injection
• Is er in de DB nog een mogelijkheid tot een unieke sleutel, want dit is een beetje een vreemde indeling

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • MrVegeta
  • Registratie: September 2002
  • Laatst online: 11-09 20:46

MrVegeta

! Dolf is rechtvaardig !

Topicstarter
sig69 schreef op vrijdag 16 januari 2009 @ 14:59:
Is php case sensitive eigenlijk?
HTML:
1
2
Firstname:<input type="text" name="firstname" /><br  /> 
Lastname:<input type="text" name="lastname" /><br  />

PHP:
1
2
$FirstName = $_POST['FirstName']; 
$LastName = $_POST['LastName'];
Ja blijkbaar is PHP ook case sensetive, net alles naar niet caps gezet en presto. Ach ja weer wat geleerd.

Geeft steekhoudelijke argumenten terwijl hij niet weet waar het over gaat. BlizzBoys, HD casts van StarCraft II gemaakt door Tweakers! Het begint, Zombiepocalyps


Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

MrVegeta schreef op vrijdag 16 januari 2009 @ 15:02:
[...]


Ja blijkbaar is PHP ook case sensetive, net alles naar niet caps gezet en presto. Ach ja weer wat geleerd.
Oftewel, als je de query had ge-echo'ed, dan had je al meteen gezien dat die variabelen niet gevuld waren. ;) Als er onverwachte resultaten uit een SQL query komen is dat het eerste wat je controleert. :) Je moet er nooit vanuit gaan dat hij wel klopt zo, dat zie je wel weer.

"Assumption is the mother of all fuck-ups."

[ Voor 12% gewijzigd door --MeAngry-- op 16-01-2009 15:05 ]

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

mysql_query geeft een reference terug, niet het aantal gewijzigde records!
Zie ook http://nl2.php.net/mysql_query

Middels mysql_affected_records kun je aan de hand van de resource opvragen hoeveel records er zijn gewijzigd (of toegevoegd/verwijderd).

PHP:
1
2
3
4
5
6
$res = mysql_query("update ...");
$affectedRecords = mysql_affected_records($res);
if ($affectedRecords > 0)
  echo("Update OK");
else
  echo("Error updating database");

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Je wil niet gaan updaten aan de hand van een naam. Je wil daar een unique key voor pakken, vaak een userid oid. Zoals je zelf al aangeeft in je voorbeeld, wat nou wanneer je 2 Peters hebt, of zelfs 2 Peter de Boers? Daarbij, ga een keer een boek halen (volgens mij al eens eerder aangeraden) zoals The PHP5 & MySQL Bible (PHP5 & MySQL - het complete handboek voor de NL versie) en ga dat doorwerken. Dit losse geklooi van je gaat je problemen opleveren als je een groter project dan enkel "hey leuk een formpje" wil maken. Met dat CMS wat je pleegt te maken, bijvoorbeeld.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • MrVegeta
  • Registratie: September 2002
  • Laatst online: 11-09 20:46

MrVegeta

! Dolf is rechtvaardig !

Topicstarter
Yes ik snap ook wel dat ik daar een key voor moet gebruiken maar ik pak de dingen gewoon als zoals ik dat wil :). Dit losse geklooi, ach valt wel mee. Ik heb in een week al behoorlijk wat van PHP geleerd en ik zet gewoon een doel en dat wil ik dan behalen.

Ik ben erg blij met de meeste reacties op dit forum tuurlijk is het makkelijk om te zeggen, pak er een boek bij en begin daarmee maar dat ligt me een stuk minder dan zoals ik zei , een doel kiezen en daarnaar toe werken.

En ik snap ook wel dat ik met dit werk geen grote projecten kan aanpakken, dat hoeft ook nog helemaal niet.

//edit. Trouwens hoe werken jullie met localhost en online? Ik begin me er behoorlijk aan te ergeren dat ik vaak mijn DB settins weer moet veranderen in een PHP file omdat mijn online database en locale db verschillend zijn.

[ Voor 20% gewijzigd door MrVegeta op 16-01-2009 15:45 ]

Geeft steekhoudelijke argumenten terwijl hij niet weet waar het over gaat. BlizzBoys, HD casts van StarCraft II gemaakt door Tweakers! Het begint, Zombiepocalyps


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20-09 23:58

TeeDee

CQB 241

MrVegeta schreef op vrijdag 16 januari 2009 @ 15:38:
//edit. Trouwens hoe werken jullie met localhost en online? Ik begin me er behoorlijk aan te ergeren dat ik vaak mijn DB settins weer moet veranderen in een PHP file omdat mijn online database en locale db verschillend zijn.
Met een los config file waar je dit soort zaken in zet. Vervolgens is het met een wijziging erg makkelijk om dat op 1 plek aan te passen.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • MrVegeta
  • Registratie: September 2002
  • Laatst online: 11-09 20:46

MrVegeta

! Dolf is rechtvaardig !

Topicstarter
Dat gebruik ik opzich ook met base.php daar staat alles in. Mjah was net ook mijn main page aan het updaten en daar is wat mis gegaan waardoor ik alles weer moest uitzoeken.

Geeft steekhoudelijke argumenten terwijl hij niet weet waar het over gaat. BlizzBoys, HD casts van StarCraft II gemaakt door Tweakers! Het begint, Zombiepocalyps


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

MrVegeta schreef op vrijdag 16 januari 2009 @ 15:38:
Ik heb in een week al behoorlijk wat van PHP geleerd en ik zet gewoon een doel en dat wil ik dan behalen.

Ik ben erg blij met de meeste reacties op dit forum tuurlijk is het makkelijk om te zeggen, pak er een boek bij en begin daarmee maar dat ligt me een stuk minder dan zoals ik zei , een doel kiezen en daarnaar toe werken.
Dus, jij stelt als doel om een form te kunnen maken wat je met php vult uit een DB. Dat lukt je. Leuk. Heb je nagedacht over security, best practices, encoding? Nee. Waarom niet? Dat maakt geen deel uit van de beperkte visie in je doel. Dat een boek je niet ligt moet je zelf weten, maar dan mis je vrij kritieke aandachtspunten. Neem nou eens advies aan van iemand die op dezelfde manier is begonnen, maar wel wijs genoeg was om een keer een boek te gaan lezen. Ik weet dat lezen moeilijk is voor de jeugd van tegenwoordig (zei ik met mn 22), maar het gaat je wel helpen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

MrVegeta schreef op vrijdag 16 januari 2009 @ 15:38:
Trouwens hoe werken jullie met localhost en online? Ik begin me er behoorlijk aan te ergeren dat ik vaak mijn DB settins weer moet veranderen in een PHP file omdat mijn online database en locale db verschillend zijn.
Voor apache projecten maken we altijd een soort 'home' directory in /var/www/[fqdn].
In deze directory hebben wij dan de directories conf, htdocs, cronjobs en templates.

In de code kun je dan voldoen met een require_once( $_SERVER["DOCUMENT_ROOT"] . "../conf/website.conf");
website.conf is een PHP script welke verschillende constanten defineerd waaronder de connectionstring naar de database.

Omdat je config buiten je htdocs staat zul je deze ook niet snel overschrijven als je je lokale bestanden naar de remote server kopieert. In conf staan ook eventueel site.passwd wachtwoord bestanden voor beveiligde directories.

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • MrVegeta
  • Registratie: September 2002
  • Laatst online: 11-09 20:46

MrVegeta

! Dolf is rechtvaardig !

Topicstarter
MueR schreef op vrijdag 16 januari 2009 @ 16:18:
[...]

Dus, jij stelt als doel om een form te kunnen maken wat je met php vult uit een DB. Dat lukt je. Leuk. Heb je nagedacht over security, best practices, encoding? Nee. Waarom niet? Dat maakt geen deel uit van de beperkte visie in je doel. Dat een boek je niet ligt moet je zelf weten, maar dan mis je vrij kritieke aandachtspunten. Neem nou eens advies aan van iemand die op dezelfde manier is begonnen, maar wel wijs genoeg was om een keer een boek te gaan lezen. Ik weet dat lezen moeilijk is voor de jeugd van tegenwoordig (zei ik met mn 22), maar het gaat je wel helpen.
Lezen moeilijk? Welnee, ik ben momenteel bezig met een erg leuk boek namelijk een bio van Frank Sinatra, maar als het op websites maken etc aankomt dan is het al een stuk minder leuk om er over te lezen etc. Ik ben ook 22 trouwens...

Ik zal eens op school kijken of dat we exemplaar hebben liggen.

Geeft steekhoudelijke argumenten terwijl hij niet weet waar het over gaat. BlizzBoys, HD casts van StarCraft II gemaakt door Tweakers! Het begint, Zombiepocalyps

Pagina: 1