Hallo,

Sorry dat ik zoveel topics aanmaak maar ik loop iedere keer weer vast.
Ik krijg met deze code:

<?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.
Dat moet zijn

UPDATE donations SET claimed='1' WHERE username='$username' LIMIT 1
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 :)!
Bedankt Aar, en Kris super bedankt het werkt nu!

Met vriendelijke groet,
Luuk.
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)

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:
<?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.
@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]
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.
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)

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

Reageren