MySQL database update niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Luuk Waka

Luuk Waka

12/08/2013 13:55:44
Quote Anchor link
Hallo,

Sorry dat ik zoveel topics aanmaak maar ik loop iedere keer weer vast.
Ik krijg met deze 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
<?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");}
}


?>


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
 
PHP hulp

PHP hulp

17/11/2024 17:42:46
 
- Ariën  -
Beheerder

- Ariën -

12/08/2013 13:58:13
Quote Anchor link
Kan je de relevante code op het forum plaatsen? Straks werkt de Pastebin niet meer, en is dit topic waardeloos.
Alvast bedankt.
Gewijzigd op 12/08/2013 13:58:30 door - Ariën -
 
Luuk Waka

Luuk Waka

12/08/2013 14:00:08
Quote Anchor link
Ik heb gisteren geprobeert om dat te doen maar dat gaat vreselijk buggen, sorry daarvoor.
 
Kris Peeters

Kris Peeters

12/08/2013 14:05:39
Quote Anchor link
De melding die je krijgt, komt van deze lijn:
$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
 
- Ariën  -
Beheerder

- Ariën -

12/08/2013 14:08:06
Quote Anchor link
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.
 
Luuk Waka

Luuk Waka

12/08/2013 14:11:00
Quote Anchor link
@ Kris, dat is inderdaad het geval! Hartelijk bedankt!
 
Ozzie PHP

Ozzie PHP

12/08/2013 14:12:23
Quote Anchor link
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".)
 
Luuk Waka

Luuk Waka

12/08/2013 14:16:36
Quote Anchor link
Ben op het volgende probleem gestuit, als ik deze URL in ga voeren: 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
 
- Ariën  -
Beheerder

- Ariën -

12/08/2013 14:27:56
Quote Anchor link
Zou je even je titel aan kunnen passen naar je exacte probleem? Meerdere mensen op het forum hebben namelijk problemen met PHP en MySQL. Dus graag zien we een duidelijkere titel die je probleem duidelijk omschrijft.

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 -
 
Luuk Waka

Luuk Waka

12/08/2013 14:28:39
Quote Anchor link
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
<?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");}
}


?>
 
- Ariën  -
Beheerder

- Ariën -

12/08/2013 14:31:32
Quote Anchor link
Even wat opmerkingen over je code.
- 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.
 
Kris Peeters

Kris Peeters

12/08/2013 14:33:36
Quote Anchor link
Dat moet zijn

UPDATE donations SET claimed='1' WHERE username='$username' LIMIT 1
 
Luuk Waka

Luuk Waka

12/08/2013 14:33:55
Quote Anchor link
Hallo Aar,

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 :)!
 
- Ariën  -
Beheerder

- Ariën -

12/08/2013 14:38:27
Quote Anchor link
Als je goede foutafhandeling wilt toepassen, lees dan vooral dit eens:
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
 
Luuk Waka

Luuk Waka

12/08/2013 14:40:07
Quote Anchor link
Bedankt Aar, en Kris super bedankt het werkt nu!

Met vriendelijke groet,
Luuk.
 
Chris PHP

Chris PHP

12/08/2013 14:40:43
Quote Anchor link
Mag ik ook vragen waarom je een dubbele check doet op regel 5 en 6?

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)
 
Kris Peeters

Kris Peeters

12/08/2013 15:34:37
Quote Anchor link
Even verduidelijken/aanvullen.

- 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)
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
<?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>
'
;
?>


---

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.
 
Chris PHP

Chris PHP

12/08/2013 15:39:02
Quote Anchor link
@Kris,

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]
 
Kris Peeters

Kris Peeters

12/08/2013 16:12:20
Quote Anchor link
Ja okay; inderdaad

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
 
Chris -

Chris -

12/08/2013 16:30:47
Quote Anchor link
isset: is de variabele ergens aangemaakt?
empty: is de variabele ergens aangemaakt, heeft de variabele een positieve waarde? (dus 0, false, null geven een negatieve return)

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
<?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.';
}

?>
 



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.