[php] resultaat wordt niet weergegeven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
Ik heb een programma geschreven die voor ieder filmpje een aparte pagina opent waarin alle ingevoerde commentaar uit het database worden gehaald.

in de video-pagina roep ik 2 functie's op:

Functie aanroep 1:
[code=php]
<div id="video">
<?php $topicfull = view_full_topic($myposts); ?>
</div>
[/code=php]

Functie view_full_topic();
[code=php]
// view topic full
function view_full_topic($myposts){
global $result;
if ($myposts) {
do {
$post_id = $myposts["post_id"];
$title = $myposts["title"];
$post = format($myposts["post"]);
$dateattime = $myposts["dateattime"];
$topicfull = $post_id . $title . $post . $dateattime; // wordt doorgestuurd naar blogpost.php
echo "<br /><img src=\"img/btn2.png\" alt=\"appel\" longdesc=\"www.overdatum.nl\" />\n";
echo "<h4>$title</h4>\n";
echo "<p>Getypt op $dateattime</p><br />";
echo "$post";
} while ($myposts = mysql_fetch_array($result));
return $result;
} else {
echo "<p>There is no post matching a post_id of $post_id.</p>";
}
}
[/code=php]

Functie aanroep 2:
[php=code]
<div id="commentaar">
<?php view_blaat(); ?>
</div>
[/php=code]

Functie view_blaat();
[code=php]
<div id="commentaar">
function view_blaat(){
global $myposts;
global $result3;
if ($myposts) {
$sql = "SELECT comment_id, name, website, comment FROM comments
WHERE post_id = $post_id";
$result3 = mysql_query($sql);
//echo "sql: $sql";
$mycomments = mysql_fetch_array($result3);
// echo "Resultaat ".mysql_num_rows($sql)."rijen";
}
if ($mycomments) {
echo "<dl>";
do {
$comment_id = $mycomments["comment_id"];
$name = $mycomments["name"];
$website = $mycomments["website"];
$comment = format($mycomments["comment"]);
// $commentaar = $comment_id . $name . $website . $comment;
if ($website != "") {
echo "<p><a href='{$website}'>$name</a> blaat:";

} else {
echo '<p><b>' . $name . ' blaat:</b>';
}
echo $comment . '</p>';

} while ($mycomments = mysql_fetch_array($result3));

echo "</dl>";
return $myposts;
} else {
echo "<p>Niemand heeft nog geblaat</p><br /><br />";
}
}
[/code=php]

Deze melding krijg ik:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in functions.php on line 108


Als ik
[code=php]
global $myposts;
[/code=php]

weghaal binnen de functie view_blaat(); krijg ik geen database resultaat op de webpagina.

Welke mogenlijkheden heb ik nog tot mijn bechikking om mijn code uitgebreider te testen, zodat ik weet waar ik een fout heb gemaakt?

[ Voor 3% gewijzigd door Zakkenwasser op 05-12-2008 22:44 ]

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Je voert een fetch_array() uit op een result, maar dat result bestaat niet. Controleer je query eens, kijk of je rows terugkrijgt. Wat je kan doen is (leren) debuggen, niet elke vraag hier dumpen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Wat wil je precies bereiken in view_full_topic? Je geeft een parameter $myposts mee, dat is opzich prima. Vervolgens ga je de gegevens daaruit printen alsof $myposts een enkele post is (de eerste iteratie van je do...while). Maar in de volgende iteraties overschrijf je $myposts met gegevens uit je database en print je die. Is dat echt wat je wil? :)

En wat is $result? Een global (globals worden over het algemeen afgeraden, omdat het o.a. minder duidelijk is waar deze gebruikt word) die je in view_full_topic gebruikt als een resultset. Vervolgens geeft de functie die terug en gebruik je het als $topicfull, terwijl het nog steeds een resultset is.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Die view_full_topic functie slaat naar mijn idee nergens op sowieso :|

Je declareert een variabele met de output van de functie terwijl de functie zelf gegevens output en het geheel is totaal niet leesbaar en daarna return je een result die je ook als global gezet hebt :?

Volgens mij heb je nog niet echt begrepen wat het nut is van functies en hoe ze werken, meer kan ik er niet van maken...sorry :X

edit:
verder gebruik je de ene keer dit:

PHP:
1
echo "<h4>$title</h4>\n";


dan weer dit:
PHP:
1
echo "<p><a href='{$website}'>$name</a>  blaat:";


en vervolgens nog dit:
PHP:
1
echo '<p><b>' . $name . ' blaat:</b>'; // de b-tag is depricated trouwens


waarbij imo de laatste methode de netste en snelste is (niet met de bedoeling een discussie uit te lokken). Het geeft ieder geval aan dat je niet consistent bezig bent en dat is wel erg belangrijk.

[ Voor 37% gewijzigd door Cartman! op 05-12-2008 21:47 ]


Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
JanDM schreef op vrijdag 05 december 2008 @ 21:11:
Wat wil je precies bereiken in view_full_topic? Je geeft een parameter $myposts mee, dat is opzich prima. Vervolgens ga je de gegevens daaruit printen alsof $myposts een enkele post is (de eerste iteratie van je do...while). Maar in de volgende iteraties overschrijf je $myposts met gegevens uit je database en print je die. Is dat echt wat je wil? :)

En wat is $result? Een global (globals worden over het algemeen afgeraden, omdat het o.a. minder duidelijk is waar deze gebruikt word) die je in view_full_topic gebruikt als een resultset. Vervolgens geeft de functie die terug en gebruik je het als $topicfull, terwijl het nog steeds een resultset is.
view_full_topic moet gegevens uit Database halen en die vervolgens op de pagina zetten.

ik heb mijn returns hernoemd zodat ze niet in de weg zullen zitten van $myposts.
Dat is inderdaad wel logisch :)

Mijn globals heb ik nu ook weggehaald om overzicht te kunnen bewaren, alsnog kom ik er niet,
zoals ik het hoor schrijf ik dan blijbaar zeer brakke code, en heb ik nog een lange weg te gaan.

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
Cartman! schreef op vrijdag 05 december 2008 @ 21:42:
Die view_full_topic functie slaat naar mijn idee nergens op sowieso :|

Je declareert een variabele met de output van de functie terwijl de functie zelf gegevens output en het geheel is totaal niet leesbaar en daarna return je een result die je ook als global gezet hebt :?

Volgens mij heb je nog niet echt begrepen wat het nut is van functies en hoe ze werken, meer kan ik er niet van maken...sorry :X
Ik denk aan de toekomst, dat ik deze data op andere pagina's terug wil halen, en om herhaling te voorkomen kies ik ervoor om deze in een functie te stoppen. :)
Ook om code schoon te houden.

bijv. in blogs en plaatjes sectie van de website in aanbouw

Ik zit er waarschijnlijk naast

[ Voor 5% gewijzigd door Zakkenwasser op 05-12-2008 21:50 ]

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Overigens staat het wel een beetje loos zo.
PHP:
1
foo($bar);
Tussen je div tags werkt namelijk ook...
Als je aan de toekomst wil denken, zou ik niet een bumps aan functies gaan maken, maar maak je het in een OOP-manier, dan hoef je al helemaal weinig qua code te recyclen en kan je heel makkelijk van andere functies binnen de class een variabele opvragen (geloof ik).

[ Voor 68% gewijzigd door CH4OS op 05-12-2008 21:55 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Zelf werk ik in Zend Framework en daarvoor gebruikte ik een template-engine dus mn werkwijze is compleet anders maar een kleine tip zou denk ik zijn om logica en presentatie los te halen van elkaar. Een functie moet eigenlijk ook maar 1 ding doen, nooit 2 want dan heb je 2 functies nodig zegmaar. Maak dus dan een losse functie die de gegevens ophaalt en een andere losse functie voor de weergave.

Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
Cartman! schreef op vrijdag 05 december 2008 @ 22:02:
Zelf werk ik in Zend Framework en daarvoor gebruikte ik een template-engine dus mn werkwijze is compleet anders maar een kleine tip zou denk ik zijn om logica en presentatie los te halen van elkaar. Een functie moet eigenlijk ook maar 1 ding doen, nooit 2 want dan heb je 2 functies nodig zegmaar. Maak dus dan een losse functie die de gegevens ophaalt en een andere losse functie voor de weergave.
Ik dacht dat ik het daar dus fout had gedaan, met 2 losse functies.

Ben daarom ook de functies gaan mergen met elkaar.
Achteraf gezien best wel ontwetend van mij.

Ik zet alles weer uit de functies, en bouw vannuit daar weer op naar functie's

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]

Pagina: 1