Verbinden met wordpress DB
-
Ik vond op internet een script om gegevens uit de wordpress db te kunnen halen.
Ik heb een aantal extra tabellen aangemaakt en in mysql een functie geschreven welke ik via een snippet wil aanroepen
als eerst zou ik require(‘wp-load.php’); moeten aanroepen echter wanneer ik de snippet wil activeren krijg ik de error:
Snippet niet geactiveerd, er is een fout opgetreden:
Failed opening required 'wp-load.php' (include_path='.:/opt/alt/php82/usr/share/pear:/opt/alt/php82/usr/share/php:/usr/share/pear:/usr/share/php')
kan iemand mij op weg helpen?
-
Hoi Geert,
Zou je wat meer details willen geven? Wat voor soort gegevens wil je opvragen uit de database? Waarvoor gebruik je die gegevens? Al op zoek geweest naar een plugin die voldoet aan je wensen? Want dan hoef je niet alles handmatig te doen.
Guido
Hoi Guido,
heb zelf een aantal tabellen aangemaakt waarin gegevens staan. Tevens een aantal functies in de db die de info teruggeven welke ik op dat moment nodig heb.
Waarom ik de vraag stelde is, de tabellen staan in de db die wordpress zelf aanmaakt dus ging ervan uit dat daar dan toch sowieso al een verbinding moet zijn
Hoi Geert,
Om binnen een WP-omgeving rechtstreeks met de database te communiceren wordt de wpdb class gebruikt.
Als je waarden in de wp_options tabel staan kun je binnen je WP-omgeving de WP functie get_option() gebruiken om de waarde op te vragen.Guido
Hoi Guido, sorry maar komen er niet uit en heb nu dit in mn snippet: GetMax_BS is een functie in mysql waar een “JA”en een 20000 in gaat en die geeft een waarde terug waar ik iets mee wil doen
wp-includes/class-wpdb.php <html> <?php global $wpdb; $data = $wpdb->get_results("select GetMax_BS('JA', 10000) "); echo $data; ?> <body> <figure class="table" style="float:left;:60.00%;"> <table class="ck-table-resized" style="background-color:blue;border-style:solid;"> <colgroup> <col style="width:20.00%;"> <col style="width:20.00%;"> <col style="width:20.00%;"> </colgroup> <thead> <tr> <th style="border-color:blue;border-style:solid;"> </th> <th style="border-color:blue;border-style:solid;"><span style="color:white;"><strong>met NHG</strong></span></th> <th style="border-color:blue;border-style:solid;"><span style="color:white;">Zonder NHG</span></th> </tr> <tr> <th style="border-color:blue;border-style:solid;"><span style="color:white;">Maximaal</span></th> <th style="border-color:blue;border-style:solid;"><span style="color:white;"> </span></th> <th style="border-color:blue;border-style:solid;"><span style="color:white;"> </span></th> </tr> <tr> <th style="border-color:blue;border-style:solid;"><span style="color:white;">Rente</span></th> <th style="border-color:blue;border-style:solid;"><span style="color:white;"> </span></th> <th style="border-color:blue;border-style:solid;"><span style="color:white;"> </span></th> </tr> <tr> <th style="border-color:blue;border-style:solid;"><span style="color:white;">Maandlast</span></th> <th style="border-color:blue;border-style:solid;"><span style="color:white;"> </span></th> <th style="border-color:blue;border-style:solid;"><span style="color:white;"> </span></th> </tr> </thead> </table> </figure> <p> </p> <p> </p> </body> </html>
Hoi Geert,
Mijn mysql kennis is zeer beperkt, ik heb sowieso geen ervaring met functies in mysql. Ik mis wel de
FROM
in jouw mysql code. Voor meer info en voorbeelden zie bv deze tutorial.Guido
From gebruik je bij een select from een table een functie werkt anders, daar geeft de function de waarde terug bedankt voor je hulp maar ik merk weinig activiteit van anderen helaas
Misschien is dit een handig startpunt: https://learn.wordpress.org/tutorial/custom-database-tables/
Hoi Marcel,
dankzij je link ben iuk een stuk verder gekomen, dank daarvoor.
Met een voorbeeld heb ik in een snippet t volgende:
echter de select GetMax_BS wordt niet uitgevoerd terwijl wanneer ik in de DB omgeving de query select GetMax_BS(“JA”, 29000) aanroep er netjes een value wordt teruggegeven
<?php global $wpdb; $user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->users" ); echo "<p>User count is {$user_count}</p>"; $een = "JA"; $twee = 29000; echo "<p>alleenstaande is $een </p><br>"; echo "<p>inkomen is $twee </p><br>"; $geert=$wpdb->get_var("Select GetMax_BS($een,$twee)"); echo "<p>verruiming is $geert </p><br>"; ?>
Wat is die GetMax_BS()?
Een functie in mysql met 2 parameters die een waarde als result heeft en als query is aan te roepen
DELIMITER $$ CREATE DEFINER=
p666641_hn6021
@%.dbp.shared.prod.hostnetbv.nl
FUNCTIONGetMax_BS
(Alleenstaand
VARCHAR(3),Inkomen
DECIMAL(11,0)) RETURNS int(11) BEGIN declare Verhoging int default 0; set Verhoging = (select IFNULL((select max_bs.Verhoging from max_bs where max_bs.Alleenstaand = 'JA' and max_bs.InkomenVanaf <= Inkomen),0)); RETURN Verhoging; END$$ DELIMITER ;Aha.
Heb je al geprobeerd om die logica naar een functie in PHP te verplaatsen? Lijkt erop dat dat het probleem is, misschien dat get_var() een restrictie heeft op de commando’s die het kan verwerken.
Das dus mijn probleem, mysql en delphi is geen probleem maar ben nieuw in php maar je bedoelt dat wanneer ik de code in de functie uitvoer in php dat t wel werkt?
Ik ging ervan uit dat wanneer een query kan worden uitgevoerd dit ook moest werken
Iets uitvoeren in PHPMyAdmin en in een functie van WordPress zijn wel twee verschillende dingen. Ik denk dat een functie in PHP de oplossing is.
Zo kan je data uit de tabel halen, en aan de functie meegeven die dan iets teruggeeft.
function MaxBS($var1, $var2) { // doe hier iets met $var1 en $var2 // geef waarde van $var3 terug return $var3; }
Logica in MySQL is soms prettig om te hebben, maar ik denk voor deze kwestie heel erg overkill.
voor deze misscien overkill maar heb er ook nog een die in een tabel zowel in records als kolommen moet zoeken. dus combinatie zoals men het noemt in excel horizontaal zoeken en vertikaal zoeken
@geertvanbragt Is je probleem inmiddels opgelost?
- Je moet ingelogd zijn om op dit onderwerp te reageren.