ID wordt bij (PHP)script niet meegestuurd naar browser

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Waterspout
  • Registratie: November 2006
  • Laatst online: 10-03-2021
k ben nog niet zo lang bezig met PHP en mysql, en ik loop regelmatig tegen problemen aan. Vaak zijn ze zelf op te lossen, nu even niet.

Het probleem is dat ik bij een verzoek aan de database via PHP geen bewerkingen kan uitvoeren. Ik kan wel de inhoud oproepen, maar daar houdt het dan bij op. Delete of update werkt niet. Ik wil met het script nieuwsberichten weergeven op mijn site en wanneer een bericht uit meer dan 220 woorden bestaat, wordt deze automatisch ingekort.Er verschijnt automatisch 'n link, als men er op klikt kan men het nieuwsartikel lezen, nu met alle woorden.
Bij deze klik moet dus het juiste ID uit de database worden "genomen" en het artikel kan worden gelezen/getoond. In de browserbalk zie je dat er geen id wordt gekoppeld.

Wat extra info, het is de eerste keer dat ik op deze manier met database werk (dus via php gegevens veranderen in de database). De error die ik krijg is:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ...

Ik gebruik 2 bestanden (index.php en news.php) Index.php om de berichten (verkort) weer te geven en news.php om de artikelen per artikel helemaal te kunnen lezen. De PHP code die ik gebruik:

van index.php

PHP: filename
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php

//News index.php
//pad naar rootmap
$rootdir="../";

//tot welke rubriek behoort de pagina?
$section="nieuws";

/***********************************News-System********************************/
//Hier worden de berichten uit de database ingelezen
include("../systeem/connect.inc.php");
$news_SQL="SELECT * FROM news ORDER BY news_datetime DESC";
$news_result=mysql_query($news_SQL);

/***********************************News-System-Ende***************************/

//Eerste deel van de standaardopmaak laden
include("../opmaak/header.inc.php");
include($rootdir."opmaak/navigation.inc.php");
//Hier komt de inhoud
?>
<link rel="stylesheet" href="opmaak/templates/css-blau.css" type="text/css">


<table width="100%" border="0" cellspacing="0" cellpadding="2">
  <tr> 
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="20" height="1" alt=""></td>
    <td colspan="2"><img src="opmaak/afbeeldingen/spacer.gif" width="530" height="1" alt=""></td>
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="20" height="1" alt=""></td>
  </tr>
  <tr> 
    <td>&nbsp;</td>
    <td colspan="2"> 
   
    </td>
    <td>&nbsp;</td>
  </tr>
  <tr> 
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="1" height="1" alt=""></td>
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="250" height="1" alt=""></td>
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="250" height="1" alt=""></td>
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="1" height="1" alt=""></td>
  </tr>
  <tr> 
    <td>&nbsp;</td>
    <td valign="top" colspan="2"> 
      <h2 align="center">Welkom op de pagina van <br>
        <br>
        <font size="4">Planeshop</font><br>
        <br>
      </h2>
<?php
//Hier worden de berichten weergegeven 
while($news=mysql_fetch_array($news_result)){

//Opmaak van datum
$unixtime = strtotime($news['news_datetime']);
//controle op lengte hoofdtekst en eventueel inkorten
if(strlen($news['news_main'])>220){
$news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">meer</a>";
}

?>    
      <table width="400" border="0" cellspacing="0" cellpadding="0" align="center">
        <tr> 
          <td>
            <span class="kleiner">
            <?php echo date("d-m-Y H:i",$unixtime) ?>
           </span><br>
            <b><?php echo $news['news_header'] ?></b>
          </td>
        </tr>
        <tr> 
          <td valign="top">
            <p class="kleiner"><?php echo $news['news_main'] ?></p>
          </td>
        </tr>
        <tr> 
          <td>
            <hr width="400" size="1" noshade>
          </td>
        </tr>
      </table>
<?php
}
mysql_close();
?>      
      </td>
    <td>&nbsp;</td>
  </tr>
</table>
<?php
include("../opmaak/footer.inc.php");
?>



//Tweede deel van de standaardopmaak

PHP: filename
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
</html>

<?php

//Nieuwspagina - weergave van een volledig bericht.
$rootdir="../";

$section="nieuws";

//Parameter inlezen
$news_ID=$_GET['news_ID'];
//type variabele instellen om misbruik te voorkomen
settype($news_ID,"int");

/***********************************News-Systeem********************************/
//Bericht inlezen aan de hand van news_ID
include("../systeem/connect.inc.php");

$news_SQL="SELECT * FROM news WHERE news_ID=" . $news_ID;
$news_result=mysql_query($news_SQL);
$news=mysql_fetch_array($news_result);
mysql_close();
/***********************************News-Systeem-Einde**************************/

//Eerste deel van standaardopmaak
include("../opmaak/header.inc.php");
include("../opmaak/navigation.inc.php");
?>
<link rel="stylesheet" href="opmaak/templates/css-blau.css" type="text/css">


<table width="100%" border="0" cellspacing="0" cellpadding="2">
  <tr> 
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="20" height="1" alt=""></td>
    <td colspan="2"><img src="opmaak/afbeeldingen/spacer.gif" width="530" height="1" alt=""></td>
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="20" height="1" alt=""></td>
  </tr>
  <tr> 
    <td>&nbsp;</td>
    <td colspan="2"> 
   
    </td>
    <td>&nbsp;</td>
  </tr>
  <tr> 
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="1" height="1" alt=""></td>
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="250" height="1" alt=""></td>
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="250" height="1" alt=""></td>
    <td><img src="opmaak/afbeeldingen/spacer.gif" width="1" height="1" alt=""></td>
  </tr>
  <tr> 
    <td>&nbsp;</td>
    <td valign="top" colspan="2"> 
      <h2 align="center">Nieuws <br>

      </h2>
<?php
//Hier worden de berichten weergegeven
//De datum opmaken
$unixtime = strtotime($news['news_datetime']);

?>    
      <table width="400" border="0" cellspacing="0" cellpadding="0" align="center">
        <tr> 
          <td>
            <span class="kleiner"><?php echo date("d-m-Y H:i",$unixtime) ?></span><br><b><?php echo $news['news_header'] ?></b>
          </td>
        </tr>
        <tr> 
          <td valign="top">
            <p class="kleiner"><?php echo $news['news_main'] ?></p>
          </td>
        </tr>
      </table>
      </td>
    <td>&nbsp;</td>
  </tr>
</table>
    

<?php
//Tweede deel van standaardopmaak
include("../opmaak/footer.inc.php");
?>





Mocht ik iets vergeten zijn te melden hoor ik dat graag. Ook eventuele oplossingen zijn erg welkom! Ik kan nu niet vooruit, en dat wil ik wel graag :) :)

Greets Waterspoutje

Acties:
  • 0 Henk 'm!

  • Wortelsoep
  • Registratie: Juni 2001
  • Niet online
1. plaats je code eens tussen code-tags. Dat is een stukje leesbaarder dan dit
2. De error die jij geeft komt vaak doordat je geen database-connectie hebt. Zet eens een "or die"-constructie achter je mysql_connect() en mysql_select_db(), dus:
mysql_connect(bla) or die (mysql_error());
3. Al die HTML is niet zo interessant, dus dat kun je ook maar beter weglaten

[ Voor 12% gewijzigd door Wortelsoep op 29-01-2007 20:58 ]


Acties:
  • 0 Henk 'm!

  • Waterspout
  • Registratie: November 2006
  • Laatst online: 10-03-2021
Wilko schreef op maandag 29 januari 2007 @ 20:58:
1. plaats je code eens tussen code-tags. Dat is een stukje leesbaarder dan dit
2. De error die jij geeft komt vaak doordat je geen database-connectie hebt. Zet eens een "or die"-constructie achter je mysql_connect() en mysql_select_db(), dus:
mysql_connect(bla) or die (mysql_error());
3. Al die HTML is niet zo interessant, dus dat kun je ook maar beter weglaten
Ik heb de code inmiddels tussen code-tags gezet, leest wel makelijker.
De "or die" constructie heb ik toegepast, de verbinding met de database loopt via 'include'.

De code daarvan is heel kort (user en wachtwoord weggelaten, maar die zijn correct):

PHP:
1
2
3
4
5
6
7
 

<?php
//Dit bestand bevat de opdrachten voor het opzetten van een verbinding met een database
$db = mysql_connect("localhost","***","***") or die (mysql_error());   
mysql_select_db("ferrysch_pagina",$db);
?>


Het probleem ontstaat als dit stukje gelezen wordt (in index.php):

[php]

<?php
//Hier worden de berichten weergegeven
while($news=mysql_fetch_array($news_result)){

//Opmaak van datum
$unixtime = strtotime($news['news_datetime']);
//controle op lengte hoofdtekst en eventueel inkorten
if(strlen($news['news_main'])>220){
$news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">meer</a>";
}

?>

[\php]

Het lijkt alsof er iets mis is met news_ID. Er wordt geen waarde aan toegekend als er om verzocht wordt door het nieuwbericht helemaal te lezen.

Suggesties?? :) :)

Waterspoutje

Acties:
  • 0 Henk 'm!

  • Wortelsoep
  • Registratie: Juni 2001
  • Niet online
Doe eens direct in die while loop:
die($news['news_ID']);

Als hij dan geen nieuws-ID output zit er ergens iets fout in je variabelen o.i.d. Zeker weten dat het ID als news_ID uit de database komt?

Acties:
  • 0 Henk 'm!

  • Waterspout
  • Registratie: November 2006
  • Laatst online: 10-03-2021
Wilko schreef op maandag 29 januari 2007 @ 21:26:
Doe eens direct in die while loop:
die($news['news_ID']);

Als hij dan geen nieuws-ID output zit er ergens iets fout in je variabelen o.i.d. Zeker weten dat het ID als news_ID uit de database komt?
Je bedoelt zoiets?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//Hier worden de berichten weergegeven 
while($news=mysql_fetch_array($news_result)){
die($news['news_ID']);

//Opmaak van datum
$unixtime = strtotime($news['news_datetime']);
//controle op lengte hoofdtekst en eventueel inkorten
if(strlen($news['news_main'])>220){
$news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">meer</a>";
}

?>    


Het resultaat nu is dat er geen nieuwsberichten meer worden weergegeven op de index.php pagina. Voorheen haalde ie ze wel op uit de database.
Hoe kan dat?

De testpagina is op de volgende link te vinden, dan weet je beter wat ik bedoel denk ik:

Klik op nieuws, vervolgens op 'meer' om de hele tekst te zien (die dus niet komt)

[ Voor 11% gewijzigd door Waterspout op 29-01-2007 21:39 ]


Acties:
  • 0 Henk 'm!

  • Wortelsoep
  • Registratie: Juni 2001
  • Niet online
Dat is het idee van die die(). Dat zorgt ervoor dat de rest van de pagina niet meer wordt uitgevoerd zodat je gemakkelijk kan testen of een variabele goed wordt gezet of niet.
Misschien is het handig om eens wat te lezen over debuggen, want dit is toch vrij basic debugging allemaal.

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
//Parameter inlezen 
$news_ID=$_GET['news_ID']; 
...
$news_SQL="SELECT * FROM news WHERE news_ID=" . $news_ID;


user input áltijd controleren, of onschadelijk maken met intval() (als je zeker weet dat het een (heel) getal moet zijn) of mysql_real_escape() voor een tekst

Acties:
  • 0 Henk 'm!

  • Waterspout
  • Registratie: November 2006
  • Laatst online: 10-03-2021
Wilko schreef op maandag 29 januari 2007 @ 21:35:
Dat is het idee van die die(). Dat zorgt ervoor dat de rest van de pagina niet meer wordt uitgevoerd zodat je gemakkelijk kan testen of een variabele goed wordt gezet of niet.
Misschien is het handig om eens wat te lezen over debuggen, want dit is toch vrij basic debugging allemaal.
Het probleem zal misschien aan de verbinding tussen php en mysql liggen. Wellicht in de database zelf? Heb geen idee wat daar mis kan gaan, 't is een kleine db met 1 table, 4 velden. Ik weet niet hoe ik verder moet, dan nog maar eens sites afspeuren naar goede debugging tips... :/

Acties:
  • 0 Henk 'm!

  • Wortelsoep
  • Registratie: Juni 2001
  • Niet online
Nouja, het is heel simpel na te gaan: check de source eens (met die die()) en kijk of het laatste wat er ge-output wordt een nieuws-ID is. Is dat niet zo, dan gaat er ergens iets fout en wordt die variabele niet gezet, HOE dat dan komt ga je daarna uitzoeken.
Debugging is gewoon een kwestie van de hele tijd kleine stapjes uitsluiten, om vervolgens tot de boosdoener te komen (althans, zo doe ik dat)

[ Voor 21% gewijzigd door Wortelsoep op 29-01-2007 21:47 ]


Acties:
  • 0 Henk 'm!

  • Waterspout
  • Registratie: November 2006
  • Laatst online: 10-03-2021
Verwijderd schreef op maandag 29 januari 2007 @ 21:43:
PHP:
1
2
3
4
//Parameter inlezen 
$news_ID=$_GET['news_ID']; 
...
$news_SQL="SELECT * FROM news WHERE news_ID=" . $news_ID;


user input áltijd controleren, of onschadelijk maken met intval() (als je zeker weet dat het een (heel) getal moet zijn) of mysql_real_escape() voor een tekst
Ik begrijp niet goed wat je bedoeld. mijn vraag is waarom ik geen bewerkingen kan doen met PHP in een mysql database. Gegevens opvragen en weergeven in browser gaat wel, maar bij DELETE of UPDATE gebeurt er niets. Ook geen foutmelding dat er iets niet klopt.

Acties:
  • 0 Henk 'm!

  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01 03:23
fetch_array gaat niet goed als er geen goede mysql result aanwezig is. Het kan dus zijn dat je query niet goed is, of dat de variabele die je aan je query mee geeft leeg is. Wat ik doe in zulke situaties is de query echo'en even handmatig in phpmyadmin checken en dan weet je of het wel of niet je query is. Verder zie je door het echo'en van de query ook gelijk of dat de variabele wel of niet leeg is. Ik kan verder in je source niet terugvinden waar je de aanroep naar de volledige pagina hebt staan, dus van kleine newspost naar grote newspost (read more), dus ik kan ook niet voor je kijken of je uberhaupt wel een id mee stuurt.

Dan nog een paar verbetertips voor je:

Je 2e pagina start met een afsluittag van html </html> is dat de bedoeling? lijkt me niet :)
Verder zou je eens naar een goeie parser moeten kijken. Dit zorgt er voor dat je html en php code gescheiden is en maakt je php code veel overzichtelijker. Kijk eens op smarty.php.net voor een goeie parser (er zijn er veel meer te vinden, maar voor een starter is dit een mooie (en goed gedocumenteerde) parser.

suc6

This space for rent. Serious inquiries only please.


Acties:
  • 0 Henk 'm!

  • Waterspout
  • Registratie: November 2006
  • Laatst online: 10-03-2021
toost schreef op dinsdag 30 januari 2007 @ 09:11:
fetch_array gaat niet goed als er geen goede mysql result aanwezig is. Het kan dus zijn dat je query niet goed is, of dat de variabele die je aan je query mee geeft leeg is. Wat ik doe in zulke situaties is de query echo'en even handmatig in phpmyadmin checken en dan weet je of het wel of niet je query is. Verder zie je door het echo'en van de query ook gelijk of dat de variabele wel of niet leeg is. Ik kan verder in je source niet terugvinden waar je de aanroep naar de volledige pagina hebt staan, dus van kleine newspost naar grote newspost (read more), dus ik kan ook niet voor je kijken of je uberhaupt wel een id mee stuurt.

Dan nog een paar verbetertips voor je:

Je 2e pagina start met een afsluittag van html </html> is dat de bedoeling? lijkt me niet :)
Verder zou je eens naar een goeie parser moeten kijken. Dit zorgt er voor dat je html en php code gescheiden is en maakt je php code veel overzichtelijker. Kijk eens op smarty.php.net voor een goeie parser (er zijn er veel meer te vinden, maar voor een starter is dit een mooie (en goed gedocumenteerde) parser.

suc6
De testpagina is de volgende pagina:
Testpagina

Je ziet dat er geen variabele wordt doorgegeven aan de news-id als er op 'meer' wordt geklikt bij het nieuwsbericht. Voor het bewerken van mijn php scripts gebruik ik homesite, en lokaal apache om te testen.

De verwijzing naar het complete nieuwsbericht is trouwens in de index.php te vinden op regel 60, in het eerste bericht.

Greets Waterspoutje :*)

[ Voor 4% gewijzigd door Waterspout op 30-01-2007 10:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Waterspout schreef op maandag 29 januari 2007 @ 22:06:
[...]


Ik begrijp niet goed wat je bedoeld. mijn vraag is waarom ik geen bewerkingen kan doen met PHP in een mysql database. Gegevens opvragen en weergeven in browser gaat wel, maar bij DELETE of UPDATE gebeurt er niets. Ook geen foutmelding dat er iets niet klopt.
Padon, had er even bij moeten melden dat dit verder niet aan je probleem gerelateerd was. Wat ik zei is echter om een veel voorkomende fout te voorkomen, zogenaamde Sql-injectie. Wat jij nu doet, user input zomaar in je queries gooien is potentieel gevaarlijk. Maar dit is wederom niet relevant voor jouw probleem :P .

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
1.) Laat die 'greetz' achterwege

2.) Je praat over problemen met delete statements maar in je omschrijving is het probleem dat je pagina met het volledige news item niet werkt.

3.) Als ik op je index.php hover over een URL dan zie ik dat de news_ID niet goed geset wordt in je code:

HTML:
1
Voorlopig is het weer gedaan met de vor ... <a href=news.php?news_ID=>meer</a></p>


Daar zit die fout iig.

Ten eerste moet je zorgen dat dat newsID er wel komt te staan, ten tweede moet je die url in "" haakjes zetten.

De reden dat je $news["news_ID"] niet werkt is omdat waarschijnlijk je capping in je database anders is.

[ Voor 21% gewijzigd door Grijze Vos op 30-01-2007 11:05 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • BBrunekreeft
  • Registratie: Mei 2004
  • Laatst online: 08:29

BBrunekreeft

Dus...

zet eens voor regel 60 in index.php het volgende neer:

code:
1
echo '<pre>'; print_r($news); echo '</pre>';



Hij drukt dan alle elementen van de array $news af.
Dikke kans dat $news['news_ID'] gewoon met kleine letters geschreven staat (dus: $news['news_id'])

Acties:
  • 0 Henk 'm!

  • vinnie1908
  • Registratie: September 2001
  • Laatst online: 05-09 11:02

vinnie1908

Appel != peer

code:
1
<a href="news.php?news_id=$news["news_id"]">meer</a>

[ Voor 18% gewijzigd door vinnie1908 op 30-01-2007 11:16 ]

"Sometimes I have a difficult time handling myself in social situations. I just start scampering around neurotically, frantically jumping all over guests. I think it all goes back to when I was raised in the wild by miniature schnauzers."


Acties:
  • 0 Henk 'm!

  • Waterspout
  • Registratie: November 2006
  • Laatst online: 10-03-2021
Ik heb het probleem opgelost. Het waren de hoofdletters in de news_ID die er voor zorgde dat de query leeg bleef. Het moest news_id zijn.
Mooi, probleem opgelost en ik kan weer vooruit.
Bedankt voor het meedenken en reageren!

Het werkt nu...

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

nu dit nog oplossen:

code:
1
2
3
4
5
6
7
<br />
<b>Warning</b>:  fopen(../log/log.txt) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Permission denied in <b>/usr/home/ferrysch/public_html/planeshop/log/logfile_func.inc.php</b> on line <b>8</b><br />
<br />
<b>Warning</b>:  fputs(): supplied argument is not a valid stream resource in <b>/usr/home/ferrysch/public_html/planeshop/log/logfile_func.inc.php</b> on line <b>10</b><br />

<br />
<b>Warning</b>:  fclose(): supplied argument is not a valid stream resource in <b>/usr/home/ferrysch/public_html/planeshop/log/logfile_func.inc.php</b> on line <b>12</b><br />

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

Waterspout schreef op dinsdag 30 januari 2007 @ 11:15:
Ik heb het probleem opgelost. Het waren de hoofdletters in de news_ID die er voor zorgde dat de query leeg bleef. Het moest news_id zijn.
Mooi, probleem opgelost en ik kan weer vooruit.
Bedankt voor het meedenken en reageren!

Het werkt nu...
Nog even kleine tip ;)

Je kan met php ook zeer eenvoudig afbreken op hele woorden.... beetje slordig als een woord opeens heel raar wordt afgebroken gevolgd door puntjes en een linkje.

lees en leer:

http://www.webmasterworld.com/forum88/3484.htm

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$news_SQL="SELECT * FROM news ORDER BY news_datetime DESC";
$news_result=mysql_query($news_SQL);
while($news=mysql_fetch_array($news_result))
{
//Opmaak van datum
$unixtime = strtotime($news['news_datetime']);
//controle op lengte hoofdtekst en eventueel inkorten
if(strlen($news['news_main'])>220){
$news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">meer</a>";
}
}
//.... enz

offtopic:
sorry, ff geen indenting vandaag
Toch nog even een tip m.b.t. tot jouw code
Ik pak het altijd net iets anders aan:
PHP:
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
$news_SQL="SELECT * FROM news ORDER BY news_datetime DESC";
$news_result=mysql_query($news_SQL);


 if(!$news_result)
 {
   // er is geen result, dus moet je outputten of er iets fout is gegaan. MySQL_Error dus
   echo "er is een fout opgetreden in de query <pre>".$news_SQL."</pre><BR>
   de fout was ".mysql_error();
   // en : stop het script
   die();
 }
 else
 {
  while($news=mysql_fetch_array($news_result))
  {
    //Opmaak van datum
    $unixtime = strtotime($news['news_datetime']);
    //controle op lengte hoofdtekst en eventueel inkorten
    if(strlen($news['news_main'])>220)
    {
      // Doe iets met de inhoud van $news, zoals weergeven, link naar "meer", enz.
      $news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" .$news['news_ID'] . ">meer</a>";
    }  //END if news > 220 tekens
  }  // END WHILE... lus
}  // END ELSE


Edit : @hieronder, Je hebt gelijk. Ik pak het in testomgeving "ongeveer" aan, zoals hierboven.
Heb ondertussen errorhandler gemaakt. Maar het gaat om het idee.
offtopic:
Dacht trouwens, dat we hier waren om elkaar tips, trucs en tweaks te geven.
Daarom gaf ik mijn ideeën. Dat deze niet in de goede richting zaten, kunnen we allemaal van leren, lijkt mij.

[ Voor 10% gewijzigd door Verwijderd op 30-01-2007 13:42 . Reden: Aanvulling ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Verwijderd schreef op dinsdag 30 januari 2007 @ 12:00:
[...]


Toch nog even een tip m.b.t. tot jouw code
Ik pak het altijd net iets anders aan:
Zo... Dus als iemand bij jou loopt te kutten met slechte invoer parameters en hij krijgt het bugged waardoor je de foutmelding geeft, geef je hem meteen even de precieze query zodat hij exact kan weten hoe hij zijn invoer parameters moet wijzigen om je systeem te hacken...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Plak voor je eigen doeleinden een "or die(mysql_error())" erachter. Met Grijze Vos, hou je eigen systeem lekker voor jezelf.
Werk anders een nette error layer uit waar je bijv. met error codes kan reageren. Ziet de gebruiker een korte error ("error x: fout opgetreden bij nieuws ophalen") en kan jezelf lekker debuggen :)
Of denk ik nu al te ver en te moeilijk voor een simpele query :p

offtopic:
Trigger error is ook handig om te gebruiken, kan je bij debuggen juist het error_reporting aanzetten dat je je eigen warnings wel krijgt, in de "echte" situatie zet je je eigen warnings uit.

[ Voor 23% gewijzigd door mithras op 30-01-2007 12:52 ]


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
Verwijderd schreef op maandag 29 januari 2007 @ 21:43:
PHP:
1
2
3
4
//Parameter inlezen 
$news_ID=$_GET['news_ID']; 
...
$news_SQL="SELECT * FROM news WHERE news_ID=" . $news_ID;


user input áltijd controleren, of onschadelijk maken met intval() (als je zeker weet dat het een (heel) getal moet zijn) of mysql_real_escape() voor een tekst
settype over het hoofd gezien?

PHP:
1
2
3
$news_ID=$_GET['news_ID']; 
//type variabele instellen om misbruik te voorkomen 
settype($news_ID,"int");


@TS: overigens kan dat ook met

PHP:
1
$news_ID = (int)$_GET['news_ID'];

[ Voor 37% gewijzigd door SWINX op 30-01-2007 14:12 . Reden: verkeerde persoon ge-quote :P ]

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt

Pagina: 1