[MySQL/PHP] Probleem

Pagina: 1
Acties:
  • 559 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
ik ben sinds gister begonnen met Mysql en php het gaat me al redelijk af alleen stuit ik op het volgende probleem:

Als ik in mijn newsscript iets toevoeg krijg ik de volgende fout:

"Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\nieuws.php on line 103"

het heeft niets te maken met het newsscript zelf maar de comments zoals je hieronder ziet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$rij = mysql_query("SELECT * FROM nieuwscomments WHERE  nieuwsid=$nieuwsid ORDER BY id DESC");   

    $comments = mysql_num_rows($rij);    // regel 103

   

    if ($comments == "1")  

      $commentsnaam ="<a href=\"nieuwscomments.php?nieuwsid=$nieuwsid\">
<font color=\"#000080\">$comments reactie</font></a>";   

    else  

      $commentsnaam ="<a href=\"nieuwscomments.php?nieuwsid=$nieuwsid\">
<font color=\"#000080\">$comments reacties</font></a>";   

       

    if ($comments == "0")   

      $commentsnaam ="<a href=\"nieuwscomments.php?nieuwsid=$nieuwsid\">
<font color=\"#000080\">Post een reactie</font></a>";

ik maak gebruik van 2 tabellen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE nieuws (
  onderwerp varchar(15) NOT NULL default '',
  bericht text NOT NULL,
  emailadres varchar(25) NOT NULL default '',
  naam varchar(10) NOT NULL default '',
  datum varchar(15) NOT NULL default '',
  nieuwsid int(3) NOT NULL default '1',
  ID int(3) NOT NULL default '1',
  comments varchar(5) NOT NULL default '',
  commentsnaam varchar(5) NOT NULL default '',
  rij int(3) NOT NULL default '1'
) TYPE=MyISAM;


code:
1
2
3
4
5
6
7
8
9
CREATE TABLE nieuwscomments (
  onderwerp varchar(15) NOT NULL default '',
  nieuwsid char(3) NOT NULL default '1',
  naam varchar(15) NOT NULL default '',
  emailadres varchar(25) NOT NULL default '',
  tijd varchar(10) NOT NULL default '',
  datum varchar(15) NOT NULL default '',
  bericht text NOT NULL
) TYPE=MyISAM;


wat is hierin de fout ? ik ben dus nog n00b dus als het kan niet te moeilijk taalgebruik ;)

Acties:
  • 0 Henk 'm!

  • R4NCOR
  • Registratie: December 2000
  • Laatst online: 16-09 12:26

R4NCOR

eigenlijk gewoon Niels

Ligt het probleem niet heel simpel hier?
PHP:
1
$rij = mysql_query("SELECT * FROM nieuwscomments WHERE  nieuwsid=$nieuwsid ORDER BY id DESC");


Ik zie achter WHERE 2 spaties. Probeer dit eens:

PHP:
1
$rij = mysql_query("SELECT * FROM nieuwscomments WHERE nieuwsid='$nieuwsid' ORDER BY id DESC");

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

PHP:
1
$rij = mysql_query("SELECT * FROM nieuwscomments WHERE nieuwsid='$nieuwsid' ORDER BY id DESC;");


En je SQL afsluiten met een ; ;)

[ Voor 11% gewijzigd door ripexx op 05-02-2003 00:19 ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
fout blijft

ik denk dat het iets te maken heeft met de variablen die ik heb gekozen voor id en rij enzo ik weet eerlijk gezegd niet eens welke ik echt nodig ben.

Acties:
  • 0 Henk 'm!

  • R4NCOR
  • Registratie: December 2000
  • Laatst online: 16-09 12:26

R4NCOR

eigenlijk gewoon Niels

Stoney187 schreef op 05 February 2003 @ 00:20:
fout blijft

ik denk dat het iets te maken heeft met de variablen die ik heb gekozen voor id en rij enzo ik weet eerlijk gezegd niet eens welke ik echt nodig ben.
Ik zou voor een id sowieso een INT nemen en die op auto_increment zetten..
Maar probeer niet te hard te gaan, want dat doe je volgens mij wel. Werk eerst dingen eens goed uit, en ga ze goed begrijpen voordat je gelijk tot aan de sky wil :)

Acties:
  • 0 Henk 'm!

Verwijderd

Zet anders je query eens in een variabele, en echo die eens. Vervolgens laat je die query los op je MySQL db (via phpMyAdmin of shell..). En kijk dan eens wat er gebeurt.
Of anders echo mysql_error();

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Oja als je in je db ID gebruikt en in je SQL query id dan zal die dat niet echt snappen. Of was dat een type foutje, let op hoofdletters, ben er zelf al vaak genoeg tegen aan gelopen.

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

offtopic:
Je site doet het niet meer (huisje...)

Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
Verwijderd schreef op 05 February 2003 @ 00:25:
offtopic:
Je site doet het niet meer (huisje...)
klopt is nu home.hccnet.nl/d.boomgaardt/ en home.hccnet.nl/d.boomgaardt/members

Acties:
  • 0 Henk 'm!

  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 09:59
Ehmm, tis laat so forgive me any stupiditeiten, maar in je tabellen verschillen de nieuwsid van soort variabele (INT om VAR)...gaat het daar niet ergens op fout ? Verander die VAR eens in een INT en anders om, kortom, maak ze gelijk aan elkaar
Wellicht even de variabele typen checken, er staat me ergens iets van bij dat PHP een ongedefinieerde variabele als string beschouwt...Maar hang me er niet aan op..
O ja, PHP is hoofdletter gevoelig, kijk daar ook mee uit!

[ Voor 7% gewijzigd door MMUilwijk op 05-02-2003 00:28 ]

Everytime I suffer I become a better man because of it


Acties:
  • 0 Henk 'm!

Verwijderd

mysql_error(); :)

Acties:
  • 0 Henk 'm!

  • MaxxMark
  • Registratie: Januari 2000
  • Laatst online: 15-09 11:56

MaxxMark

HT is Tof!

Doe es:
PHP:
1
2
3
4
5
<?
$rij = mysql_query($q="SELECT * FROM nieuwscomments WHERE nieuwsid='$nieuwsid' ORDER BY id DESC;");
print mysql_error();
print "<br>query:<br>$q<br>";
?> 


Kijk vervolgens welke error hij print en los het probleem op.
Als het probleem niet duidelijk is kan je ook de query copy-en en in de mysql console proberen en daar een beetje rommelen aan je query tot hij goed is en/of een goed resultaat geeft

[ Voor 11% gewijzigd door MaxxMark op 05-02-2003 00:34 ]

T: @mark_prins - Kick ass developers: www.omniscale.nl - HT: Where it all went wrong...


Acties:
  • 0 Henk 'm!

Verwijderd

Stoney187 schreef op 05 February 2003 @ 00:14:
code:
1
2
3
4
5
6
$rij = mysql_query("
    SELECT * 
    FROM nieuwscomments 
    WHERE  nieuwsid=$nieuwsid 
    ORDER BY id DESC
");


code:
1
2
3
4
5
6
7
8
9
CREATE TABLE nieuwscomments (
  onderwerp varchar(15) NOT NULL default '',
  nieuwsid char(3) NOT NULL default '1',
  naam varchar(15) NOT NULL default '',
  emailadres varchar(25) NOT NULL default '',
  tijd varchar(10) NOT NULL default '',
  datum varchar(15) NOT NULL default '',
  bericht text NOT NULL
) TYPE=MyISAM;
In je query maak je gebruik van ORDER BY id. Er is echter geen id in je tabel nieuwscomments.

[ Voor 9% gewijzigd door Verwijderd op 05-02-2003 00:38 . Reden: layout ]


Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
YES !!!! dat was het probleem!! thanx delighteddennis

Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
er zit nu nog maar 1 fout in het script. opzich is het geen fout want het werkt wel maar als ik een newscomment toevoeg geeft hij de volgende warning:

Warning: Cannot add header information - headers already sent by (output started at c:\program files\easyphp\www\nieuwscomments.php:9) in c:\program files\easyphp\www\nieuwscomments.php on line 171


regel 171:

header("location:$_SERVER[REQUEST_URI]");

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Dan wordt er dus al een output verstuurd voordat je headers verstuurd worden, ff zoeken bij www.php.net/header naar header. Zeer veel voorkomende fout ;) Gewoon even je script nalopen of er geen spatie of andere tekst zoals html voor je <?php tag staat.

[ Voor 3% gewijzigd door ripexx op 05-02-2003 00:52 ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
code:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php       

$datum = date("d/m/Y");    

$tijd = date("H:i"); 

   

if ($_POST['Submit']) {   



  if ($_POST['berichtreactie'] == "")    

    $error = "Je moet een bericht invullen";  

  if ($_POST['emailadres'] =="") 

    $error = "Je moet je e-mailadres invullen";  

  if ($_POST['naam'] =="") 

    $error = "Je moet je naam invullen"; 

   

  if (!$error) { 

     

    $query ="INSERT INTO nieuwscomments (naam, tijd, datum, bericht, 

nieuwsid, emailadres) VALUES ('$naam', '$tijd', '$datum', '$berichtreactie', 

'$nieuwsid', '$emailadres')";   



    mysql_query($query) or die (mysql_error());  

   

    header("location:$_SERVER[REQUEST_URI]");  

     

  } else if ($error) {   

?>
ik zie geen foute spaties of iets dergelijks :?

Acties:
  • 0 Henk 'm!

  • MaxxMark
  • Registratie: Januari 2000
  • Laatst online: 15-09 11:56

MaxxMark

HT is Tof!

De error betekend dat er al iets is verstuurd naar de client voordat de header is aangeroepen. Dat mag niet.. De header functie moet ALTIJD als eerste aangeroepen worden. Om bovenstaande error te voorkomen (of te omzijlen) kan je de functie ob_start() gebruiken. Deze functie (output buffering) zorgt er voor dat alles wat geoutput word EERST gebufferd word totdat het hele script is afgerond en gaat vervolgens pas iets outputten naar de client. In jou geval zal hij dus voor het eind van het script zien dat er een header functie staat en die uitvoeren voordat hij gaat outputten.

je zet dus helemaal bovenaan:
PHP:
1
2
3
4
<?
ob_start();
<jou code>
?>

T: @mark_prins - Kick ass developers: www.omniscale.nl - HT: Where it all went wrong...


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Maar als dat regel 171 waar zijn dan die ander 150 regels code, en ik hoef ze niet hier te zien :P :+ , maar als daar een echo of een print in voorkomt dan is er dus al output gegenereerd en zal php een fout geven. Dus vandaar.

PS. maak eens van de tag code -> code=php en sta versteld ;)

buit is binnen sukkel

Pagina: 1