MySQL database update niet
Sorry dat ik zoveel topics aanmaak maar ik loop iedere keer weer vast.
Ik krijg met deze code:
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
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
<?php
include 'connect.php';
if(isset($_GET['username'])){
if(!empty($_GET['username'])){
$username = mysql_real_escape_string(strip_tags($_GET['username']));
$sql = mysql_query("SELECT * FROM donations WHERE username='$username' LIMIT 1") or die("MYSQL");
$count = mysql_num_rows($sql);
if($count == 1){
while($row = mysql_fetch_array($sql)){
$claimed = $row["claimed"];
$amount = $row["amount"];
$package = $row["package"];
if($claimed == 0){
$sql = mysql_query("UPDATE claimed SET claimed='1' WHERE username='$username' LIMIT 1");
if($sql){
die($package);
}else{
die("MYSQL");
}
}else{die("CLAIMED");}
}
}else{die("EMPTY");}
}else{die("EMPTY");}
}
?>
include 'connect.php';
if(isset($_GET['username'])){
if(!empty($_GET['username'])){
$username = mysql_real_escape_string(strip_tags($_GET['username']));
$sql = mysql_query("SELECT * FROM donations WHERE username='$username' LIMIT 1") or die("MYSQL");
$count = mysql_num_rows($sql);
if($count == 1){
while($row = mysql_fetch_array($sql)){
$claimed = $row["claimed"];
$amount = $row["amount"];
$package = $row["package"];
if($claimed == 0){
$sql = mysql_query("UPDATE claimed SET claimed='1' WHERE username='$username' LIMIT 1");
if($sql){
die($package);
}else{
die("MYSQL");
}
}else{die("CLAIMED");}
}
}else{die("EMPTY");}
}else{die("EMPTY");}
}
?>
de volgende error:
Notice: Undefined index: amount in /home/luukwa/domains/freedomx.icurse.nl/public_html/donation/check.php on line 16 MYSQL
Wat doe ik NIET goed?
Groet,
Luuk.
Gewijzigd op 12/08/2013 14:29:04 door Luuk Waka
Alvast bedankt.
Gewijzigd op 12/08/2013 13:58:30 door - Ariën -
Ik heb gisteren geprobeert om dat te doen maar dat gaat vreselijk buggen, sorry daarvoor.
$amount = $row["amount"];
waarbij php jou meldt dat $row["amount"] niet bestaat.
Het lijkt er op dat de tabel 'donations' geen veld 'amount' bevat.
Kijk nog eens na of dat veld misschien anders heet in de DB
Gewijzigd op 12/08/2013 14:06:22 door Kris Peeters
Luuk Waka op 12/08/2013 14:00:08:
Ik heb gisteren geprobeert om dat te doen maar dat gaat vreselijk buggen, sorry daarvoor.
Niet als je het tussen code-tags zet.
Toevoeging op 12/08/2013 14:10:39:
En bij voorkeur raad ik daarom ook aan om in het vervolg geen * te gebruiken om alle velden op te halen, maar alle velden ook expliciet te noemen.
@ Kris, dat is inderdaad het geval! Hartelijk bedankt!
Kun je aub de titel van je topic "Nieuwe error, help gezocht!" aanpassen in een zinvolle titel die iets zegt over het probleem? Iedereen hier heeft hulp nodig. (Daarnaast is het "hulp gezocht" en niet "help gezocht".)
http://www.freedomx.icurse.nl/donation/check.php?username=Luukwa
zou die eigenlijk moeten zeggen CLAIMED maar dat doet hij niet hij zegt: MySQL
Mijn code is hier boven gepost, ik kom er niet uit op deze manier..
Aanvullende tabel informatie staat hier: http://pastebin.com/n6dZ5G8p
Ben op het volgende probleem gestuit, als ik deze URL in ga voeren: zou die eigenlijk moeten zeggen CLAIMED maar dat doet hij niet hij zegt: MySQL
Mijn code is hier boven gepost, ik kom er niet uit op deze manier..
Aanvullende tabel informatie staat hier: http://pastebin.com/n6dZ5G8p
En zou je de code in het topic kunnen plaatsen. Zoals ik al eerder gezegd had zal de Pastebin straks niet meer bestaan en heeft niemand wat aan dit topic.
Alvast bedankt
Gewijzigd op 12/08/2013 14:29:24 door - Ariën -
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
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
<?php
include 'connect.php';
if(isset($_GET['username'])){
if(!empty($_GET['username'])){
$username = mysql_real_escape_string(strip_tags($_GET['username']));
$sql = mysql_query("SELECT * FROM donations WHERE username='$username' LIMIT 1") or die("MYSQL");
$count = mysql_num_rows($sql);
if($count == 1){
while($row = mysql_fetch_array($sql)){
$claimed = $row["claimed"];
$amount = $row["amount"];
$package = $row["package"];
if($claimed == 0){
$sql = mysql_query("UPDATE claimed SET claimed='1' WHERE username='$username' LIMIT 1");
if($sql){
die($package);
}else{
die("MYSQL");
}
}else{die("CLAIMED");}
}
}else{die("EMPTY");}
}else{die("EMPTY");}
}
?>
include 'connect.php';
if(isset($_GET['username'])){
if(!empty($_GET['username'])){
$username = mysql_real_escape_string(strip_tags($_GET['username']));
$sql = mysql_query("SELECT * FROM donations WHERE username='$username' LIMIT 1") or die("MYSQL");
$count = mysql_num_rows($sql);
if($count == 1){
while($row = mysql_fetch_array($sql)){
$claimed = $row["claimed"];
$amount = $row["amount"];
$package = $row["package"];
if($claimed == 0){
$sql = mysql_query("UPDATE claimed SET claimed='1' WHERE username='$username' LIMIT 1");
if($sql){
die($package);
}else{
die("MYSQL");
}
}else{die("CLAIMED");}
}
}else{die("EMPTY");}
}else{die("EMPTY");}
}
?>
- Benoem je velden i.p.v. van de * (alles) te gebruiken
- Pas goede foutafhandeling toe, door te kijken met een if op het resultaat van $sql.
Je geeft nu aan dat je 'MYSQL' ziet, maar er zijn twee mogelijkheden in het script die MYSQL tonen.
UPDATE donations SET claimed='1' WHERE username='$username' LIMIT 1
Ik ben nog niet zo goed met dit soort codes, ook deze code heb ik van een source website gehaald.
Daarom vraag ik hier ook om hulp :)!
Met vriendelijke groet,
Luuk.
Eerst kijk je met isset of $_GET['username'] gevult is, vervolgens kijk je met !empty opnieuw of $_GET['username'] gevult is. Dit is natuurlijk overbodig.
if (emtpy()) kijkt of je opgegeven variabel/superglobal niet gevuld is
if (!emtpy()) kijkt of je opgegeven variabel/superglobal gevuld is
if (isset()) kijkt of je opgegeven variabel/superglobal gevuld is
if (!isset()) kijkt of je opgegeven variabel/superglobal niet gevuld is
Probeer ook om van die die's af te komen, er gaat niemand dood maak daar een nette foutafhandeling voor (zoals Aar al aangeeft)
- isset kijkt of een variabele bestaat. True of false
- empty kijkt naar de inhoud van die variabele en beslist dan of die inhoud als true of false wordt aanzien.
Merk op dat een lege string "", een nul, een null... allemaal als false worden aanzien.
Je kan een variabele dus een waarde geven, zodat isset true geeft, maar !empty geeft false.
voorbeeld, ter illustratie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if (isset($_GET['username'])) {
echo 'isset: okay<br>';
if (!empty($_GET['username'])) {
echo '!empty: okay<br>';
}
else {
echo '!empty: niet okay<br>';
}
}
else {
echo 'isset: niet okay<br>';
}
echo '
<hr>
<a href="?">link 1: ?</a><br>
<a href="?username=">link 2: ?username=</a><br>
<a href="?username=0">link 3: ?username=0</a><br>
<a href="?username=Tom">link 4: ?username=Tom</a><br>
';
?>
if (isset($_GET['username'])) {
echo 'isset: okay<br>';
if (!empty($_GET['username'])) {
echo '!empty: okay<br>';
}
else {
echo '!empty: niet okay<br>';
}
}
else {
echo 'isset: niet okay<br>';
}
echo '
<hr>
<a href="?">link 1: ?</a><br>
<a href="?username=">link 2: ?username=</a><br>
<a href="?username=0">link 3: ?username=0</a><br>
<a href="?username=Tom">link 4: ?username=Tom</a><br>
';
?>
---
Dit gezegd zijnde:
zowel isset en empty controleren, is niet nodig. Empty controleert zelf of isset true of false geeft.
Als je een !empty() check doet, is isset overbodig.
Dat klopt niet helemaal, isset kijkt of de variabel bestaat en dat hij niet null is.
Het kan dus gezien worden als de vervanger van empty die in principe alleen kijkt of de variabel null is.
info van php.net
Quote:
Determine if a variable is set and is not NULL.
[/qoute]
[/qoute]
Maar NULL is precies die vreemde waarde: nietser dan niets.
Als je een variabele op null zet, vernietig je ze; net zoals met unset(); voor zover ik weet;
Kan iemand me hier tegenspreken (zeer goed mogelijk)?
Of weet iemand snippets code te verzinnen om dit te demonstreren?
----
Ik ben hier zelf wat testjes aan het doen.
Met javascript kan ik testjes verzinnen.
Dat is lastiger met php.
Gewijzigd op 12/08/2013 16:23:22 door Kris Peeters
empty: is de variabele ergens aangemaakt, heeft de variabele een positieve waarde? (dus 0, false, null geven een negatieve return)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$array = array('test', 'test2' => 0, 'test3' => true, 'test4' => 'blaat');
if (isset($array)) {
echo '$array is aangemaakt.';
}
if (!empty($array)) {
echo '$array is niet leeg.';
}
if (isset($array['test2'])) {
echo '$array[test2] is aangemaakt.';
}
if (empty($array['test2'])) {
echo '$array[test2] is leeg.';
}
?>
$array = array('test', 'test2' => 0, 'test3' => true, 'test4' => 'blaat');
if (isset($array)) {
echo '$array is aangemaakt.';
}
if (!empty($array)) {
echo '$array is niet leeg.';
}
if (isset($array['test2'])) {
echo '$array[test2] is aangemaakt.';
}
if (empty($array['test2'])) {
echo '$array[test2] is leeg.';
}
?>