query werkt prima alleen krijg wel fouten

Status
Niet open voor verdere reacties.

Beetsma

Gebruiker
Lid geworden
28 mrt 2012
Berichten
83
Goedemiddag allemaal
Het gaat over dit script
PHP:
<?php

include 'connection.php';
if (!isset($_POST['submit'])){

       
		$q ="SELECT * FROM members WHERE ID = $_GET[id]";
		$result = mysql_query($q);
		$person = mysql_fetch_array ($result);
		
}

?>
<html>

<link href="style.css" rel="stylesheet" type="text/css" />


				<div id="stylized" class="myform">
				<form id="form" name="invullen" method="post" action=" <?php echo $_SERVER['PHP_SELF']; ?>"/>
				<h1>aanpassen</h1>
				<p>Gebruikersnaam en wachtwoord aanpassen</p>

				<label>gebruikersnaam
				<span class="small"></span>
				</label>
				<input type="text" name="username" value="<?php echo $person['username']; ?>" />

				<label>wachtwoord
				<span class="small"></span>
				</label>
				<input type="text" name="password" value="<?php echo $person['password']; ?>" />

				<input type="hidden" name="id" value="<?php echo $_GET['id'];?> "/>
			
				
				<button type="submit" name="submit" >aanpassen</button>
				<div class="spacer"></div>

				</form>
				</div>
				
<?php
if (isset ($_POST['submit'])){

$u = "UPDATE members SET username ='$_POST[username]', password='$_POST[password]' WHERE ID = $_POST[id]";
mysql_query ($u) or die (mysql_error());
echo "<center>gebruiker is succesvol aangepast!<a href='index.php'><br> Ga terug </a> </center>";
} else {"vul de velden goed in";
}
?>


Wijzigen lukt me prima alleen ik krijg standaard een fout bovenaan de pagina:
Code:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\aanpassen.php on line 9

Ik weet niet precies waar dat aan ligt, zal wel erg voor de hand liggen waarschijnlijk.

Maargoed ik heb dus andere gegevens ingevoerd en op de knop geklikt, de gegevens zijn prima aangepast alleen krijg ik in de invoer balkjes de volgende fouten

USERNAME
Code:
<br /><b>Notice</b>:  Undefined variable: person in <b>C:\xampp\htdocs\test\aanpassen.php</b> on line <b>27</b><br />

WACHTWOORD
Code:
<br /><b>Notice</b>:  Undefined variable: person in <b>C:\xampp\htdocs\test\aanpassen.php</b> on line <b>32</b><br />

Ik zou graag de fouten willen wegwerken.

Ik ben nog niet erg gedreven in het programmeren dus heb niet zin in onaardige reacties zoals: wat slecht geprogrammeerd enz..
Dat weet ik ook wel namelijk.

Alvast bedankt voor de moeite:thumb:

Met Vriendelijke Groet,

Beetsma
 
Hallo Beetsma!

Ik dacht laat ik proberen je te helpen, hopelijk ook met goede antwoord ;)

Code:
 $q ="SELECT * FROM members WHERE ID = $_GET[id]";

moet volgens mij dit zijn, zie id voor de verandering ;).

Code:
 $q ="SELECT * FROM members WHERE ID = $_GET['id']";

Het 2de wat je beschrijft is dat hij zegt dat de variabelen nog niet gedefineerd zijn. Dit betekend dat het of geen waarden hij of nog niet bestaat. Wat eigenlijk al beter is om mee te beginnen is voordat je jouw variabelen echo is eerst te kijken of ze bestaan:
<?php if(isset($_POST['variabel']){echo $_POST['variabel'];} ?>

Daarna doe jij een post en dan stuur jij heb terug naar index.php ik neem aan dat het bestand hieronder index.php is. Index.php wil dan meteen uit de URL de Id halen, die jij niet hebt gegeven in de url, dus hij returnt niks.

Ik hoop dat het duidelijk zo is! ( nog al snel getypt etc...) Anders probeer ik later nog wel te kijken

gr MouNt
 
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\aanpassen.php on line 9
Deze foutmelding betekent dat $result (van regel 8) een boolean waarde (true of false) heeft i.p.v. een resource. Mysql_query (regel 8) levert bij een SELECT-query een resource op, of als er een fout optreedt false. Deze melding wil dus zeggen dat er een fout is opgetreden. Om te weten te komen wat er mis is gegaan kan je regel 8 het beste veranderen in
PHP:
$result = mysql_query($q) or die("Fout: " . mysql_error());
Dan krijg je te zien welke fout er is opgetreden.

De andere twee foutmeldingen betekenen dat de variabele $person niet bestaat. Deze variabele wordt aangemaakt en gevuld in regel 9, maar dat lukt niet omdat de parameter van een verkeerd type is (bovenstaand probleem). Als je dat probleem oplost zullen deze twee melding ook weg zijn.


Hoewel $_GET[id] werkt (PHP maakt hier zelf $_GET['id']) van) is het toch het beste om de suggestie van MouNtant te volgen. Ik zou dan meteen willen adviseren om de variabele buiten de string te halen:
PHP:
$q ="SELECT * FROM members WHERE ID = " . $_GET['id'];
Je query is wel kwetsbaar voor SQL-injectie, dus kan je nog beter dit ervan maken:
PHP:
$q ="SELECT * FROM members WHERE ID = " . intval($_GET['id']);
In plaats van intval mag je ook mysql_real_escape_string gebruiken (zoals op de Wikipedia-pagina staat), maar omdat een id meestal een getal is ben ik in dat geval een voorstander van intval i.p.v. mysql_real_escape_string.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan