Joomla Result uit een Mysql database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Manfred vd waarsenburg

Manfred vd waarsenburg

04/12/2022 16:24:58
Quote Anchor link
goedemiddag,

ik probeer in een module met behulp van Sourcerer de volgende code te plaatsen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<table border="1" style="width: 300px;margin-right: auto; margin-left: auto;">
<tbody>
<?php
{
echo "<tr>";
echo "<td>Type MX-5";
echo "<td>aantal";
echo "</tr>";
}

$query = "SELECT * , COUNT(*) FROM josvg_eb_field_values WHERE field_id = 16 GROUP BY field_value";
if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {
echo "<td>&nbsp&nbsp" . $row ['field_value']."</td>";
echo "<td>&nbsp;&nbsp;&nbsp;&nbsp" . $row['COUNT(*)'] . "</td>";
echo "</tr>";
  }

    $result->free();
}

$mysqli->close();
?>

</tbody>
</table>


Deze code heb ik voorheen gebruikt en heeft altijd gewerkt.
Ik ben nu overgeschakeld naar Joomla 4 en nu krijg ik steeds de melding " 0 Call to a member function query() on null" .
Wat kan hier het probleem zijn ?

Grtz Manfred
Gewijzigd op 04/12/2022 17:16:48 door Manfred vd waarsenburg
 
PHP hulp

PHP hulp

03/02/2023 20:16:35
 
Adoptive Solution

Adoptive Solution

04/12/2022 16:56:37
Quote Anchor link
Regel 13 maak er dit van $row [‘field_value’]
Regel 14 maak van de komma een punt.
Tussen regel 12 en 13 misschien nog een echo met tr zetten.
 
Manfred vd waarsenburg

Manfred vd waarsenburg

04/12/2022 17:16:13
Quote Anchor link
Adoptive Solution op 04/12/2022 16:56:37:
Regel 13 maak er dit van $row [‘field_value’]
Regel 14 maak van de komma een punt.
Tussen regel 12 en 13 misschien nog een echo met tr zetten.


inmiddels deze aanpassingen gedaan, echter zonder resultaat
 
Adoptive Solution

Adoptive Solution

04/12/2022 17:21:34
Quote Anchor link
Ik denk niet dat deze code iets met joomla van doen heeft.
Het is standaard code om iets op te vragen en te tonen.
Ik paste het toe met een eigen query en het aanpassen van de 2 genoemde fouten.
Waarom staan regels 5-8 in PHP?
Kan toch ook in html.
 
- Ariën  -
Beheerder

- Ariën -

04/12/2022 19:12:18
Quote Anchor link
Die code is niet bepaald van Joomla.
Als je een plugin wilt maken:

https://docs.joomla.org/Creating_a_Plugin_for_Joomla
 
Manfred vd waarsenburg

Manfred vd waarsenburg

04/12/2022 19:26:53
Quote Anchor link
ik zal even uitleggen wat ik graag zou willen

Ik beheer de Website.
hierop hebben we een registratiesysteem voor de inschrijving van ons evenement.
voor heen lukte me het om uit de Joomla database gegevens te halen, bijvoorbeeld uit welke landen komen alle inschrijvingen
de informatie staat in josvg_eb-registrants en wel in de kolom country.
Deze gegevens wil ik tellen en publiceren

de code van hierboven gebruik ik om het Type MX-5 uit de database te halen en deze bij elkaar te laten tellen.
dat zouden 4 types zijn.

Deze informatie staat in josvg_eb_field_values in de kolom field_value op de regels waar het field_id 16 is
deze zette ik voorheen dan in een tabel.

De code die ik voorheen hiervoor gebruikte is (PHP 7.3)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
{source}
<table border="1" style="width: 300px;margin-right: auto; margin-left: auto;">
<tbody>
<?php
{
echo "<tr>";
echo "<td>Type MX-5";
echo "<td>aantal";
echo "</tr>";
}

$servername = "localhost";
$username = ;
$password = ;
$my_db = ;

$mysqli = new mysqli("localhost", $username, $password, $my_db);
/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$query = "SELECT * , COUNT(*) FROM jos3e_eb_field_values WHERE field_id = 23 GROUP BY field_value";
if ($result = $mysqli->query($query)) {
    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
echo "<td>&nbsp&nbsp" . $row [field_value]."</td>";
echo "<td>&nbsp;&nbsp;&nbsp;&nbsp" , $row['COUNT(*)'] . "</td>";
echo "</tr>";
  }

  /* free result set */
    $result->free();
}

/* close connection */
$mysqli->close();
?>

</tbody>
</table>
{/source}


Dit werkte altijd perfect.
Ik heb echter een idee dat de overgang naar Joomla 4 en PHP 8.1 hierin de oorzaak zijn, echter kan ik niet vinden wat ik moet aanpassen om het werkend te krijgen.

ik hoop dat hier mensen zijn die dit wel weten.
Alvast bedankt voor de reacties.

Grtz Manfred
 
Ozzie PHP

Ozzie PHP

04/12/2022 20:40:03
Quote Anchor link
" 0 Call to a member function query() on null"

De foutmelding geeft al aan wat er aan de hand is: je probeert de functie query() aan te roepen op null. Null will zeggen een lege waarde. In dit geval betekent het dat $mysqli geen waarde heeft. Dat lijkt te kloppen in jouw allereerste bericht.

In jouw tweede bericht staat:

$mysqli = new mysqli("localhost", $username, $password, $my_db);

En dat ontbreekt in jouw eerste bericht.
 
Manfred vd waarsenburg

Manfred vd waarsenburg

04/12/2022 21:17:37
Quote Anchor link
Ozzie PHP op 04/12/2022 20:40:03:
" 0 Call to a member function query() on null"

De foutmelding geeft al aan wat er aan de hand is: je probeert de functie query() aan te roepen op null. Null will zeggen een lege waarde. In dit geval betekent het dat $mysqli geen waarde heeft. Dat lijkt te kloppen in jouw allereerste bericht.

In jouw tweede bericht staat:

$mysqli = new mysqli("localhost", $username, $password, $my_db);

En dat ontbreekt in jouw eerste bericht.


Klopt dat je deze mist in het 2de bericht, ik heb begrepen dat het inloggen niet nodig is om de Database entry's uit te lezen, en dat klopt ook wel.
ik heb ook een teller welke alleen rijen telt met een bepaalde waarde en die lijkt wel goed te werken, en hier log ik ook niet in op de server.

kan het zijn omdat er maar 1 regel in de entry staat dat deze daarom fout gaat?
 
Ad Fundum

Ad Fundum

04/12/2022 22:09:05
Quote Anchor link
Manfred vd waarsenburg op 04/12/2022 16:24:58:
Ik ben nu overgeschakeld naar Joomla 4 en nu krijg ik steeds de melding " 0 Call to a member function query() on null" .
Wat kan hier het probleem zijn ?

Hier hoeft geen sprake te zijn van een oorzakelijk verband.
In dit geval geeft PHP aan dat de variabele $mysqli geen inhoud heeft (NULL is). Er is dus geen database verbinding op dat punt in de PHP code en PHP kan je niet verder helpen.

Je moet dus de aanmeldgegevens controleren, en of de database server bereikbaar is. Je controleert in het tweede voorbeeld of de verbinding is gelukt met mysqli_connect_errno. Je kunt nog een extra controle toevoegen dat de mysqli-extentie is geladen met extension_loaded().

Controleer of je database bereikbaar is met een andere SQL client en controleer dat je query werkt. Zodra alles (weer) werkt kan je ook het resultaat van query() op fouten controleren met mysqli_error
Gewijzigd op 04/12/2022 22:10:17 door Ad Fundum
 
Ozzie PHP

Ozzie PHP

05/12/2022 02:03:05
Quote Anchor link
>> Klopt dat je deze mist in het 2de bericht

Nee, dat zei ik niet. Je connectie is leeg in je eerste bericht.

In jouw eerste bericht helemaal bovenaan de pagina staat op regel 11:

if ($result = $mysqli->query($query)) {

Die $mysqli is leeg (null). Dat geeft de foutmelding aan.

Je moet eerst een connectie maken met de database. In jouw tweede bericht op deze pagina doe je dat wel (regel 11 t/m 21). Kopieer die regels naar jouw eerste script en kijk of het dan wel werkt.
Gewijzigd op 05/12/2022 02:04:47 door Ozzie PHP
 
Manfred vd waarsenburg

Manfred vd waarsenburg

31/12/2022 14:14:58
Quote Anchor link
Inmiddels dit opgelost door de juiste verbinding te maken met de database
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.