Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

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

Pagina: 1
Acties:

Onderwerpen


  • Maarten Kroon
  • Registratie: maart 2006
  • Laatst online: 17-11 18:05
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:
quote:
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?>

Maarten Kroon wijzigde deze reactie 24-02-2012 19:41 (12%)


  • RobIII
  • Registratie: december 2001
  • Nu online

RobIII

DT Doktersteam / Moderator DevschuurŽ

^ Romeinse 3 ja!

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

Mistakes happen. It's the mistakes inside a For Loop that are a real problem - Scott Hanselman.

Over mij


  • Keiichi
  • Registratie: juni 2005
  • Laatst online: 14:36
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/


  • ItsNotRudy
  • Registratie: augustus 2011
  • Laatst online: 19-11 11:07
quote:
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?>

Nintendo FC: SW-5173-7741-8130 - Splatoon 2 / ARMS


  • Maarten Kroon
  • Registratie: maart 2006
  • Laatst online: 17-11 18:05
quote:
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.

  • Maarten Kroon
  • Registratie: maart 2006
  • Laatst online: 17-11 18:05
quote:
ItsNotRudy 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

  • Keiichi
  • Registratie: juni 2005
  • Laatst online: 14:36
quote:
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/


  • Maarten Kroon
  • Registratie: maart 2006
  • Laatst online: 17-11 18:05
quote:
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.

  • Maarten Kroon
  • Registratie: maart 2006
  • Laatst online: 17-11 18:05
quote:
Ik werk suggesties af op hoe simpel ze zijn, jouw suggestie was iets moeilijker :P. Maar zie bovenstaande antwoord.

  • RobIII
  • Registratie: december 2001
  • Nu online

RobIII

DT Doktersteam / Moderator DevschuurŽ

^ Romeinse 3 ja!

Gebruik de edit knop ( 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:

http://tweakers.net/ext/f/93OGDVn8zio6RrIck1qYj8ne/full.png
quote:
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.

RobIII wijzigde deze reactie 24-02-2012 20:12 (78%)

Mistakes happen. It's the mistakes inside a For Loop that are a real problem - Scott Hanselman.

Over mij


  • RomeoJ
  • Registratie: mei 2003
  • Laatst online: 14:05

RomeoJ

Matched: (.*)

quote:
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.


  • aaajeetee
  • Registratie: augustus 2002
  • Laatst online: 28-10 13:16
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)?

  • RobIII
  • Registratie: december 2001
  • Nu online

RobIII

DT Doktersteam / Moderator DevschuurŽ

^ Romeinse 3 ja!

Overigens: Waar hoort mijn topic?
WEB >> PRG

Mistakes happen. It's the mistakes inside a For Loop that are a real problem - Scott Hanselman.

Over mij


  • Onbekend
  • Registratie: juni 2005
  • Nu online
Op regel 14 gebruik je $result, terwijl je op regel 22 die van de global afhaalt.

Sudoku oplosser | Nieuw!!! De moeilijke puzzel!. Probeer hem eens uit!


  • Maarten Kroon
  • Registratie: maart 2006
  • Laatst online: 17-11 18:05
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!

  • CH4OS
  • Registratie: april 2002
  • Niet online

CH4OS

It's a kind of magic

quote:

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. ;)

CH4OS wijzigde deze reactie 24-02-2012 20:24 (8%)

[ Overwatch ][ Diablo ][ CptChaos#2957 ]


  • Freeaqingme
  • Registratie: april 2006
  • Laatst online: 19-11 22:56
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.


  • aaajeetee
  • Registratie: augustus 2002
  • Laatst online: 28-10 13:16
quote:
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.

  • Beatboxx
  • Registratie: april 2010
  • Laatst online: 02-03-2016

Beatboxx

Certified n00b

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

soundcloud

Pagina: 1


Apple iPhone X Google Pixel 2 XL LG W7 Samsung Galaxy S8 Google Pixel 2 Sony Bravia A1 OLED Microsoft Xbox One X Apple iPhone 8

© 1998 - 2017 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Hardware.Info de Persgroep Online Services B.V. Hosting door True

*