[php/mysql] Wat is hier nou fout aan?

Pagina: 1
Acties:

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Wat is hier nou fout aan?

wijzboete.php3

wordt aangesproken met

wijzboete.php3?boete_id=13&user_id=1&geregeld=1
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
include("../lib/func.php3");
connect();

if($geregeld == 0) $geregeld = 1; else $geregeld = 0;

$sql = "UPDATE boetes SET geregeld = '$geregeld' WHERE id = $boete_id";
mysql_query($sql) or die(mysql_error());

mysql_close();
connect();

$sql = "SELECT * FROM boetes WHERE aan = $user_id AND geregeld = '0'";
$res = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($res) == 0)
 mysql_query("UPDATE leden SET beboet = '0' WHERE id = $user_id");
else
 mysql_query("UPDATE leden SET beboet = '1' WHERE id = $user_id");

header("Location:beboet.php3?id=$user_id");
?>

tabellen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE leden (
  id mediumint(9) NOT NULL auto_increment,
  voornaam varchar(250) NOT NULL default '',
  achternaam varchar(250) NOT NULL default '',
  adres varchar(250) NOT NULL default '',
  postcode varchar(7) NOT NULL default '',
  plaats varchar(250) NOT NULL default '',
  telefoon varchar(11) NOT NULL default '',
  beboet char(1) NOT NULL default '0',
  PRIMARY KEY  (id),
  UNIQUE KEY id (id)
)

CREATE TABLE boetes (
  id mediumint(9) NOT NULL auto_increment,
  aan mediumint(9) NOT NULL default '0',
  type tinyint(4) NOT NULL default '0',
  prijs varchar(20) NOT NULL default '',
  datum varchar(20) NOT NULL default '',
  geregeld char(1) NOT NULL default '0',
  PRIMARY KEY  (id),
  UNIQUE KEY id (id)
)

Foutmelding
code:
1
Warning: 1 is not a valid MySQL-Link resource in /home/sites/site69/web/admin/wijzboete.php3 on line 19

19 kan ook 17 zijn...

Verwijderd

Staat er wel wat in de tabel die geraadpleegd wordt? En verder: Welke regel is regel 19?

Verwijderd

Hmmz, is dat de complete code? Ik tel maar 16 regels..

Verwijderd

Op dinsdag 22 januari 2002 19:23 schreef mbitnl het volgende:
Hmmz, is dat de complete code? Ik tel maar 16 regels..
Ik 22

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Inhoud leden
code:
1
2
3
4
5
Dumpje:

INSERT INTO leden VALUES ( '2', 'Ramon', 'Ottens', '2e Valthermond 13', '7877 TB', '2e Valthermond', '0599-584565', '0');
INSERT INTO leden VALUES ( '1', 'Ate', 'Bontjer', 'De Voorreep 48', '7887 HD', 'Erica', '0591-303042', '1');
INSERT INTO leden VALUES ( '3', 'Willie', 'Huizing', 'Vastenow 133', '7885 AP', 'Nieuw-Dordrecht', '0591-312961', '0');

regel 19:
mysql_query("UPDATE leden SET beboet = '1' WHERE id = $user_id");

Verwijderd

Op dinsdag 22 januari 2002 19:24 schreef Zef het volgende:

[..]

Ik 22
Hmzz, maar welke regel bedoel je nou monstar?

  • MadMurdock
  • Registratie: Oktober 2000
  • Niet online
haal die laatste header er eens uit.
volgens mij kan die alleen maar helemaal aan het begin staan.

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15-09 16:41
Even heel snel gekeken: bestaat id=$userid wel? Ofwel, update je wel een row die bestaat?

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 22 januari 2002 19:25 schreef MadMurdock het volgende:
haal die laatste header er eens uit.
volgens mij kan die alleen maar helemaal aan het begin staan.
Dat maakt niets uit... dan gaf ie een compleet andere error...

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15-09 16:41
Op dinsdag 22 januari 2002 19:25 schreef MadMurdock het volgende:
haal die laatste header er eens uit.
volgens mij kan die alleen maar helemaal aan het begin staan.
Headers kunnen overal staan, meestal juist aan het eind: zorg je eerst voor een hoop dingen die op de achtergrond gebeuren, en stuur je de bezoeker dan door naar andere pagina

Verwijderd

echo mysql_error(); eens.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 22 januari 2002 19:26 schreef sjroorda het volgende:
Even heel snel gekeken: bestaat id=$userid wel? Ofwel, update je wel een row die bestaat?
Ja die bestaat...

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 22 januari 2002 19:27 schreef Zef het volgende:
echo mysql_error(); eens.
Dan krijg je de zelfde error...

Verwijderd

Op dinsdag 22 januari 2002 19:26 schreef sjroorda het volgende:
Even heel snel gekeken: bestaat id=$userid wel? Ofwel, update je wel een row die bestaat?
Dat maakt niet uit, of $userid bestaat maakt echter wel uit.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 22 januari 2002 19:30 schreef Zef het volgende:

[..]

Dat maakt niet uit, of $userid bestaat maakt echter wel uit.
wijzboete.php3?boete_id=13&user_id=1&geregeld=1

bestaat dus ook

  • marijn
  • Registratie: Juni 2001
  • Laatst online: 05-09 08:13
"UPDATE boetes SET geregeld = '$geregeld' WHERE id = $boete_id";


Je moet $boete_id tussen '' zetten.

dus:

"UPDATE boetes SET geregeld = '$geregeld' WHERE id = '$boete_id'";

bij al die sql statements.

Verwijderd

Ohh nee weer zon zoek de fout in mijn code topic :(

Verwijderd

waarom doe je toch
PHP:
1
2
3
4
<?
mysql_close();
connect();
?>

is compleet nutteloos hoor! bovendien wordt je mysql connectie automatisch gesloten als je script beëindigt is.

Ben je zeker dat je connect() functie goed werkt?

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 22 januari 2002 19:40 schreef marijn het volgende:
"UPDATE boetes SET geregeld = '$geregeld' WHERE id = $boete_id";


Je moet $boete_id tussen '' zetten.

dus:

"UPDATE boetes SET geregeld = '$geregeld' WHERE id = '$boete_id'";

bij al die sql statements.
Als je in de create table had gekeken zag je dat id een integer is...

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 22 januari 2002 19:48 schreef GDOG het volgende:
Ohh nee weer zon zoek de fout in mijn code topic :(
Volgens mij is een forum daar voor... of niet? Maarhet kan natuurlijk ook zijn dat er alleen maar mensen mogen komen zoals jij, die alles al weten... maar wordt het dan niet saai?

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 22 januari 2002 21:40 schreef Jppr het volgende:
waarom doe je toch
PHP:
1
2
3
4
<?
mysql_close();
connect();
?>

is compleet nutteloos hoor! bovendien wordt je mysql connectie automatisch gesloten als je script beëindigt is.

Ben je zeker dat je connect() functie goed werkt?
Ik weet het, de functie werkt goed... ik gebruik close normaal nooit maar nu wou ik ff kijken als ie misschien niet meteen de tabellen update voor het scipt tijdens het draaien van het script... dus ff disconnecten en weet connecten en dan weer proberen.... maar dat was de fout niet... ik heb het trouwens al opgelost...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
include("../lib/func.php3");
connect();

if($geregeld == 0) $geregeld = 1; else $geregeld = 0;

$sql = "UPDATE boetes SET geregeld = '$geregeld' WHERE id = $boete_id";
mysql_query($sql) or die(mysql_error());

$sql = "SELECT * FROM boetes WHERE aan = $user_id AND geregeld = '0'";
$res = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($res) == 0)
 mysql_query("UPDATE leden SET beboet = '0' WHERE id = $user_id");
else
 mysql_query("UPDATE leden SET beboet = '1' WHERE id = $user_id");

header("Location:beboet.php3?id=$user_id");
?>

  • a casema user
  • Registratie: Januari 2000
  • Laatst online: 11-09 10:39
PHP:
1
2
3
<?
if($geregeld == 0) $geregeld = 1; else $geregeld = 0;
?>

logisch......

Taaaa taa taa taaaa taa taa ta taaataaaaa.


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 22 januari 2002 23:56 schreef a casema user het volgende:
PHP:
1
2
3
<?
if($geregeld == 0) $geregeld = 1; else $geregeld = 0;
?>

logisch......
Niet dan? Ik moest een soort flip flop effect hebben... en ik kon het alleen zo oplossen... sorry... misschien kun je me helpen in plaats te vernederen?

  • CyeZ
  • Registratie: September 2001
  • Laatst online: 15-09 18:28

CyeZ

Vroem vroem!!!

Op dinsdag 22 januari 2002 23:58 schreef Monstar.nl het volgende:

[..]

Niet dan? Ik moest een soort flip flop effect hebben... en ik kon het alleen zo oplossen... sorry... misschien kun je me helpen in plaats te vernederen?
probeer eens:
code:
1
$geregeld = !$geregeld;

Dat zou ook gewoon moeten werken.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op woensdag 23 januari 2002 00:10 schreef CyeZ het volgende:

[..]

probeer eens:
code:
1
$geregeld = !$geregeld;

Dat zou ook gewoon moeten werken.
Hij maakt wel van een 0 een 1 maar niet van een 1 een 0

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op dinsdag 22 januari 2002 23:53 schreef Monstar.nl het volgende:

[..]

Ik weet het, de functie werkt goed... ik gebruik close normaal nooit maar nu wou ik ff kijken als ie misschien niet meteen de tabellen update voor het scipt tijdens het draaien van het script... dus ff disconnecten en weet connecten en dan weer proberen.... maar dat was de fout niet... ik heb het trouwens al opgelost...
En de fout was?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
include("../lib/func.php3");
connect();

if($geregeld == 0) $geregeld = 1; else $geregeld = 0;

$sql = "UPDATE boetes SET geregeld = '$geregeld' WHERE id = $boete_id";
mysql_query($sql) or die(mysql_error());

$sql = "SELECT * FROM boetes WHERE aan = $user_id AND geregeld = '0'";
$res = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($res) == 0)
 mysql_query("UPDATE leden SET beboet = '0' WHERE id = $user_id");
else
 mysql_query("UPDATE leden SET beboet = '1' WHERE id = $user_id");

header("Location:beboet.php3?id=$user_id");
?>
Hmm misschien een kleine tip van wat ik hier zie valideer je niet wat de user opgeeft. Dat houd in als jij een grappenmaker langs komt en simpel weg het volgende URL opgeeft

wijzboete.php3?boete_id=1 or 1&user_id=1&geregeld=1

dat je een backup mag terug zetten. En terwijl je zo simpel een controle er over kan zetten.

bv.
$sql=sprintf("UPDATE boetes SET geregeld = %d WHERE id =%d", $geregeld , $boete_id);

Programmer - an organism that turns coffee into software.


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op woensdag 23 januari 2002 10:22 schreef LuCarD het volgende:

[..]

En de fout was?
[..]

Hmm misschien een kleine tip van wat ik hier zie valideer je niet wat de user opgeeft. Dat houd in als jij een grappenmaker langs komt en simpel weg het volgende URL opgeeft

wijzboete.php3?boete_id=1 or 1&user_id=1&geregeld=1

dat je een backup mag terug zetten. En terwijl je zo simpel een controle er over kan zetten.

bv.
$sql=sprintf("UPDATE boetes SET geregeld = %d WHERE id =%d", $geregeld , $boete_id);
De fout? Week nie meer... ik heb netzolang lopen kutten totdat ie het deed...

controles zijn idd erg handig... maar dit is een systeem die samen met Apache+MySQL+PHP op een computer wordt geïnstalleerd mbv een installer. En ik vondt, omdat het toch niet zovaak werdt gebruikt en als het gebruikt werdt dan werdt het gebruikt door mensen die er zelf verantwoordelijk voor zijn, dat er niet een controle in hoeft te zitten...

Het was voor school en we mochten zelf kiezen welke (R)DBMS we gingen gebruiken... ik had in de eerste instantie gekozen voor Delphi+MySQL maar dan moest ik eerst leren omgaan met Delphi+MySQL maar daar had ik geen tijd meer voor...

PS:
Zou je me deze code willen uitleggen?
code:
1
$sql=sprintf("UPDATE boetes SET geregeld = %d WHERE id =%d", $geregeld , $boete_id);

Als ik een controle gebruik gebruik ik eentje die eerst kijkt als de id oid bestaat... maar wat doet deze?

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op woensdag 23 januari 2002 12:34 schreef Monstar.nl het volgende:

[..]

De fout? Week nie meer... ik heb netzolang lopen kutten totdat ie het deed...

controles zijn idd erg handig... maar dit is een systeem die samen met Apache+MySQL+PHP op een computer wordt geïnstalleerd mbv een installer. En ik vondt, omdat het toch niet zovaak werdt gebruikt en als het gebruikt werdt dan werdt het gebruikt door mensen die er zelf verantwoordelijk voor zijn, dat er niet een controle in hoeft te zitten...

Het was voor school en we mochten zelf kiezen welke (R)DBMS we gingen gebruiken... ik had in de eerste instantie gekozen voor Delphi+MySQL maar dan moest ik eerst leren omgaan met Delphi+MySQL maar daar had ik geen tijd meer voor...

PS:
Zou je me deze code willen uitleggen?
code:
1
$sql=sprintf("UPDATE boetes SET geregeld = %d WHERE id =%d", $geregeld , $boete_id);

Als ik een controle gebruik gebruik ik eentje die eerst kijkt als de id oid bestaat... maar wat doet deze?
Ik zie het al... hij controleert als het een integer is of niet?
code:
1
$sql=sprintf("UPDATE boetes SET geregeld = %d WHERE id =%d", $geregeld , $boete_id);

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

code:
1
$sql=sprintf("UPDATE boetes SET geregeld = %d WHERE id =%d", $geregeld , $boete_id);

sprintf:
Doet bijna het zelfde als printf maar ipv de output naar stdout gaat de output naar de return value. ($sql in voorbeeld)

De % zijn "conversion identifiers", deze worden vervangen door variablen achter de string ($geregeld en $boete_id in voorbeeld)
Achter % staat altijd een opmaak code, hiermee wordt bepaald waardoor de % mag worden vervangen.

d - decimaal positief of negatiefe getallen
s - string
f - float, komma getallen
etc. ( op php.net staan er nog meer)

Je kan ook nog opmaak mee geven. En ook dat staat uitgelegd op de php.net

Programmer - an organism that turns coffee into software.


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Vet, bedankt, wel handig...

Even terug koment over m'n uitlatingen van gisteren
Op woensdag 23 januari 2002 12:49 schreef LuCarD het volgende:
...
Deze meneer weet hoe een forum werkt... je vraagt wat met de hoop dat een aardige meneer als LuCarD je helpt... HOEZÉ voor LuCarD *D
Pagina: 1