[PHP] Code werkt wel als .php file maar niet in Joomla

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Maarten Kroon
  • Registratie: Maart 2006
  • Laatst online: 04-04 16:53
Beste tweakers, ik heb een raar probleempje met een stukje php code dat prima werkt als ik deze gewoon met m'n browser benader. Echt wanneer ik de file include in een Joomla artikel krijg ik onderstaande meldingen:
PHP Error Message

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/a2436654/public_html/Joomla/leden.php on line 27

PHP Error Message

Warning: mysql_data_seek(): supplied argument is not a valid MySQL result resource in /home/a2436654/public_html/Joomla/leden.php on line 40

PHP Error Message

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/a2436654/public_html/Joomla/leden.php on line 27

PHP Error Message

Warning: mysql_data_seek(): supplied argument is not a valid MySQL result resource in /home/a2436654/public_html/Joomla/leden.php on line 40

PHP Error Message

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/a2436654/public_html/Joomla/leden.php on line 27

PHP Error Message

Warning: mysql_data_seek(): supplied argument is not a valid MySQL result resource in /home/a2436654/public_html/Joomla/leden.php on line 40
Hier is het stukje code, volgens mij doe ik geen gekke dingen toch?

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
    $user="XXX";
    $password="XXX";
    $database="XXX";
    $host="XXX";

    mysql_connect($host,$user,$password);
    @mysql_select_db($database) or die( "Unable to select database");

    $query="SELECT l9se0_users.username, l9se0_usergroups.title, l9se0_usergroups.Id 
    FROM l9se0_usergroups INNER JOIN (l9se0_users INNER JOIN l9se0_user_usergroup_map ON l9se0_users.id = l9se0_user_usergroup_map.user_id) ON l9se0_usergroups.Id = l9se0_user_usergroup_map.group_id 
    WHERE (((l9se0_usergroups.Id)=9)) OR (((l9se0_usergroups.Id)=10)) OR (((l9se0_usergroups.Id)=11))";

    $result = mysql_query($query);
    mysql_close();
    
    displayMembers("Pro");
    displayMembers("Volk");
    displayMembers('Noob');
    
    function displayMembers($title) {
        global $result;
        $counter = false;
        
        echo "<strong> $title </strong> <br />";
        
        while ($row = mysql_fetch_assoc($result)) {
            if ($row['title'] == $title) {
                echo $row['username'];
                echo "<br />";
                $counter = true;
            }
        }
        if ($counter == false) {
            echo "- <p />";
        }
        else {
            echo "<p />";
        }
        mysql_data_seek($result,0);
    }
    mysql_free_result($result);
php?>

[ Voor 12% gewijzigd door Maarten Kroon op 24-02-2012 19:41 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 16:01

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Even op 't eerste oog: sluit je niet je connectie te vroeg :?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 17:04
Waarom maak je geen gebruik van de database connecties die door joomla gelegd zijn?

Een oplossing kan zijn is door iig met db handlers te werken. (Bv $db = mysql_connect(); mysql_query($query,$db))

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


Acties:
  • 0 Henk 'm!

Anoniem: 420148

RobIII schreef op vrijdag 24 februari 2012 @ 19:42:
Even op 't eerste oog: sluit je niet je connectie te vroeg :?
This.

Also, waarom sluiten met php?>

Acties:
  • 0 Henk 'm!

  • Maarten Kroon
  • Registratie: Maart 2006
  • Laatst online: 04-04 16:53
RobIII schreef op vrijdag 24 februari 2012 @ 19:42:
Even op 't eerste oog: sluit je niet je connectie te vroeg :?
Nee in principe niet, de data zit al in $result. Om er zeker van te zijn heb ik het connectie sluiten helemaal naar 't einde verplaatst maar het resultaat is hetzelfde.

Acties:
  • 0 Henk 'm!

  • Maarten Kroon
  • Registratie: Maart 2006
  • Laatst online: 04-04 16:53
Anoniem: 420148 schreef op vrijdag 24 februari 2012 @ 19:44:
[...]


This.

Also, waarom sluiten met php?>
Slordigheidje, ik sluit nu gewoon met ?>

Het lost het probleem echter nog niet op :P

Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 17:04
Maarten Kroon schreef op vrijdag 24 februari 2012 @ 19:48:
[...]


Slordigheidje, ik sluit nu gewoon met ?>

Het lost het probleem echter nog niet op :P
En mijn suggestie?

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


Acties:
  • 0 Henk 'm!

  • Maarten Kroon
  • Registratie: Maart 2006
  • Laatst online: 04-04 16:53
Keiichi schreef op vrijdag 24 februari 2012 @ 19:43:
Waarom maak je geen gebruik van de database connecties die door joomla gelegd zijn?

Een oplossing kan zijn is door iig met db handlers te werken. (Bv $db = mysql_connect(); mysql_query($query,$db))
De oplossing van db handlers werkt helaas niet :(. Ik maak geen gebruik van de connecties van Joomla omdat ik niet precies weet waar en hoe dat gebeurt, ik wil een klein querytje uitvoeren, daar leek dit me voldoende voor.

Acties:
  • 0 Henk 'm!

  • Maarten Kroon
  • Registratie: Maart 2006
  • Laatst online: 04-04 16:53
Ik werk suggesties af op hoe simpel ze zijn, jouw suggestie was iets moeilijker :P. Maar zie bovenstaande antwoord.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 16:01

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Gebruik de edit knop ( Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/edit.gif ) als je iets toe te voegen hebt; je topic herhaaldelijk omhoogschoppen is niet nodig en die melding staat er niet voor niets:

Afbeeldingslocatie: http://tweakers.net/ext/f/93OGDVn8zio6RrIck1qYj8ne/full.png
Maarten Kroon schreef op vrijdag 24 februari 2012 @ 19:47:
Nee in principe niet, de data zit al in $result.
Helemaal niet; in $result zit een resource:
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
Waarom geef je $result niet gewoon aan de functie mee? En waarom doe je uberhaupt zo moeilijk en gebruik je niet gewoon een where-clause? M.a.w: ik zou heel dat gebeuren verhuizen naar die functie, en dan per call ("pro", "volk", "noob") de query in de functie uitvoeren waarbij de parameter (pro/volk/noob) dus in de where-clause wordt opgenomen.

En WTH: waarom een variabele $counter introduceren die vervolgens een boolean value bevat :?

Kort: Doe eens zoiets:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysqlopen(...);

displayMembers('foo');
displayMembers('bar');
displayMembers('baz');

mysqlclose();

function displayMembers($link, $title) {
  $query = 'select.... from.... where .... and `title` = "' . mysqlescape($title) . '"';
  $result = mysqlquery($query);
  for-each (...) {
    //Do something
  }
}

Hoef je niet te klooien met globals (hoewel er een 'onzichtbare' link_identifier is zie ook hier bijv., maar goed), niet te rommelen met mysql_data_seek enz.

[ Voor 78% gewijzigd door RobIII op 24-02-2012 20:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • RomeoJ
  • Registratie: Mei 2003
  • Niet online

RomeoJ

Matched: (.*)

Maarten Kroon schreef op vrijdag 24 februari 2012 @ 19:51:
[...]


De oplossing van db handlers werkt helaas niet :(. Ik maak geen gebruik van de connecties van Joomla omdat ik niet precies weet waar en hoe dat gebeurt, ik wil een klein querytje uitvoeren, daar leek dit me voldoende voor.
Heb je wat aan dit document: Accessing a database with Joomla?

You only need two tools in life: WD-40 and Duct-Tape, if it doesn't move and it should, use the WD-40. If it does move and it shouldn't, use the Tape.


Acties:
  • 0 Henk 'm!

  • aaajeetee
  • Registratie: Augustus 2002
  • Laatst online: 15:25
Aan de hand van de errors te zien heb je wel gewoon een database connectie, maar lijkt het erop dat $result niet goed in de functie aanwezig is.

Werkt dat global $result stukje wel goed? Wat als je $result nu eens aan de functie meegeeft (for testing purposes)?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 16:01

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Overigens: Waar hoort mijn topic?
WEB >> PRG

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 17:00

Onbekend

...

Op regel 14 gebruik je $result, terwijl je op regel 22 die van de global afhaalt.

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Maarten Kroon
  • Registratie: Maart 2006
  • Laatst online: 04-04 16:53
Oeps zo te zien heb ik wat dingetjes niet handig gedaan :P Ik programmeur normaal nooit in PHP. Ik ga even wat suggesties proberen. Thanks!

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

PHP:
1
@mysql_select_db($database) or die("Unable to select database");
Misschien offtopic en mierenneukertje, maar (uiteindelijk) zal de foutafhandeling wel beter (moeten?) kunnen dan dit hoor. ;) Overigens vind ik de @ voor een functie sowieso al 'vies'. Zeker als je nog aan het 'bouwen' bent is het niet handig voor debug. ;)

[ Voor 8% gewijzigd door CH4OS op 24-02-2012 20:24 ]


Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 13-05 21:58
Voor het zelfde geldt kon de verbinding niet goed opgezet worden. In dat geval zou je dat gezien hebben als er geen apenstaartje voor gestaan had. De resulterende error zou hetzelfde geweest zijn als die je nu had (denk ik, zonder specifiek je source te checken).

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • aaajeetee
  • Registratie: Augustus 2002
  • Laatst online: 15:25
RobIII schreef op vrijdag 24 februari 2012 @ 19:54:
Waarom geef je $result niet gewoon aan de functie mee? En waarom doe je uberhaupt zo moeilijk en gebruik je niet gewoon een where-clause? M.a.w: ik zou heel dat gebeuren verhuizen naar die functie, en dan per call ("pro", "volk", "noob") de query in de functie uitvoeren waarbij de parameter (pro/volk/noob) dus in de where-clause wordt opgenomen.

Kort: Doe eens zoiets:
Zoiets zou ik ook gaan doen denk ik. Alleen zou ik er voor kiezen om 1 query uit te voeren en de rest in PHP af te handelen.
Eventueel nog wel een WHERE met de 3 mogelijke title's, om zo de resultset nog enigszins te beperken.

Acties:
  • 0 Henk 'm!

  • Beatboxx
  • Registratie: April 2010
  • Laatst online: 26-10-2022

Beatboxx

Certified n00b

zegt mysql_error(); nog iets leuks? en al ge var_dump t?
Pagina: 1