[PhP] newbie functie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
'k wil een verbinding maken met men mysql db via een functie:

function sqlconn($input) {
mysql_select_db($sqldb,$sqlinfo);
$output = mysql_query($input);
mysql_close($sqlconn);
return $output;
}


$bestuur = sqlconn("SELECT naam, voornaam FROM leden where (bestuurslid=1) ");


mijn return ($bestuur) is altijd empty; wat is het probleem ?

Acties:
  • 0 Henk 'm!

  • Boogie
  • Registratie: Januari 2001
  • Laatst online: 06-11-2024
Als je nu print($bestuur) doet, dan is het logisch. Geef ook even de code waarmee je de resultset ($bestuur!) mee uitleest in bruikbare delen!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
neen; daar ligt het probleem niet; 'k fetch men array enzo.
Als ik deze code gebruik zonder er een functie van te maken werk alles;
maar 'k zou best wel een functie kunnen gebruiken

Acties:
  • 0 Henk 'm!

  • Boogie
  • Registratie: Januari 2001
  • Laatst online: 06-11-2024
Heb ff geen manual bij de hand, maar kun je wel een resultset teruggeven uit een functie?
Je kunt bijvoorbeeld ook geen array doorgeven aan een andere pagina.

Acties:
  • 0 Henk 'm!

Verwijderd

En als je je $sqldb en $sqlinfo nou eens definieerd in je functie?

FF voorbeeldje:
PHP:
1
2
3
4
5
6
7
8
function sqlconn($input, $sqldb, $sqlinfo) //waarden doorgeven aan functie
{
    mysql_select_db($sqldb,$sqlinfo);
    $output = mysql_query($input);
    mysql_close($sqlconn);
    return $output;
}
$bestuur = sqlconn("SELECT naam, voornaam FROM leden where bestuurslid=1 ", $sqldb, $sqlinfo);

of:
PHP:
1
2
3
4
5
6
7
8
9
10
function sqlconn($input)
{
    $sqldb = "blaaa"; //Definities in functie
    $sqlinfo = ".....";
    mysql_select_db($sqldb,$sqlinfo);
    $output = mysql_query($input);
    mysql_close($sqlconn);
    return $output;
}
$bestuur = sqlconn("SELECT naam, voornaam FROM leden where bestuurslid=1");
Boogie schreef op 09 April 2003 @ 01:14:
Je kunt bijvoorbeeld ook geen array doorgeven aan een andere pagina.
Wel...je kunt zelfs hele objecten opslaan in sessies en weer uitlezen in een andere pagina.

[ Voor 95% gewijzigd door Verwijderd op 09-04-2003 01:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het definieren in de functie werkte ook niet (cyberneer) maar'k zal het dan wel zonder functie doen :s

Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46

KompjoeFriek

Statsidioot

Ik zit dus met het zelfde probleem, en ik heb nu maar tijdelijk opgelost door het connect-gedeelte in een apart .php bestand op te slaan, en het ge-include in me echte script.
dus ook echt gewoon zo:
PHP:
1
include "connect.inc.php";

maar ik wil het dus eigelijk net zoals pitke hebben
edit:

Overige Info:
Ik ben nieuw bij PHP, en begin het dacht ik aardig te snappen

[ Voor 16% gewijzigd door KompjoeFriek op 09-04-2003 01:54 ]

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

Verwijderd

Gewoon zorgen dat je alle (globale) variabelen meegeeft bij het aanroepen van de functie en ze dus zodoende lokaal beschikbaar maakt binnen de functie.

Probleem hier is dat $output helemaal niet de output van de query is, maar een boolean die aangeeft of de query succesvol uitgevoerd is of niet. Je zult toch echt met mysql_fetch_* functies aan de gang moeten gaan om je $output op te bouwen.

En zorg a.u.b. voor foutafhandeling als er ergens iets fout gaat in de verbinding/query :)

Tot slot is het teruggeven van een array geen enkel probleem, evenals het doorgeven van een array.

[ Voor 10% gewijzigd door Verwijderd op 09-04-2003 02:09 ]


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Verwijderd schreef op 09 April 2003 @ 02:08:
Gewoon zorgen dat je alle (globale) variabelen meegeeft bij het aanroepen van de functie en ze dus zodoende lokaal beschikbaar maakt binnen de functie.
[..]
globale variabelen heb je zelden nodig. Zeer zeker in dit geval is het niet nodig.

Vergeet niet dat er nu een kopie van de variabelen binnen de functie wordt gegenereerd, die kopie wordt op het moment aangepast, en aan het einde van de functie netjes verwijderd. Betekent dus dat er geen database connectie is. dus zal de topic starter de "&"-functie in de functie parameters moeten gaan gebruiken function blaat(&dbconn) zodat de veranderingen van dbconn ook wordt doorgevoerd in de variabelen waar de functie wordt aangeroepen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

Verwijderd

Dus jij wil dingen als de dbhost, password, dbuser etc hard in de functie gaan planten? :+

Aangezien de functie op dit moment globale variabelen bewerkt (die dus niet beschikbaar zijn op manier van topicstarter) en de hele db-connectie en query binnen de functie afhandelt en alleen het resultaat teruggeeft, is dat prima op de manier op te lossen zoals er gegeven is zonder dat je "&" nodig hebt. Er is op dit moment helemaal geen spraken van het hergebruiken van resource_links, wat je inderdaad met de door jou gegeven manier op kunt lossen. Of het wenselijk is als je de functie meerdere keren gaat aanroepen is natuurlijk een tweede ;)

[ Voor 9% gewijzigd door Verwijderd op 09-04-2003 15:40 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:52
globale variabelen zijn evil en moet je tat vermijden.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • bartjenl
  • Registratie: Januari 2002
  • Laatst online: 14-09 19:29
Globale variabelen kunnen wel evil etc. zijn, maar hier heb je ze toch echt nodig. De variabelen $sqldb en $sqlinfo zijn in de functie leeg.
Verder neem ik aan dat je de verbinding met de Mysql-server al hebt gelegd, anders doet'ie het daarom vast ook niet.
PHP:
1
2
3
4
5
6
7
function sqlconn($input) {
global $sqldb, $sqlinfo, $sqlconn;
mysql_select_db($sqldb,$sqlinfo);
$output = mysql_query($input);
mysql_close($sqlconn);
return $output;
}

zou beter moeten werken.
Ik vraag me ook af wat er in $sqlinfo staat, aangezien dit niet de verbinding is (in mysql_close wordt $sqlconn gebruikt....)
Kijk nog eens naar het verbinden, het gebruik van de variabelen en de globals..

"Do not worry about your difficulties in mathematics; I can assure you that mine are still greater" - Albert Einstein (1879-1955)


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Globale variabelen kunnen wel evil etc. zijn, maar hier heb je ze toch echt nodig.
En ik durf te stellen dat je het keyword global en de $GLOBALS array nooit nodig hebt in PHP. In jouw voorbeeld kun je de globale variabelen namelijk gewoon als argument aan de functie meegeven.

Dat dat vaak niet gebeurt is vaak meer een teken van luiheid en/of laksheid dan dat het het gebruik van globale variabelen in functies goedpraat :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

bartjenl schreef op 09 April 2003 @ 17:12:
Globale variabelen kunnen wel evil etc. zijn, maar hier heb je ze toch echt nodig. De variabelen $sqldb en $sqlinfo zijn in de functie leeg.
Dan is het dus zaak om die waarden binnen de functie te krijgen, en dat doe je normaal gesproken door ze als argument mee te geven, of, wat waarschijnlijk veel handiger is, object-geörienteerd gaan werken, en zorgen dat het object dat die functie (methode) bevat, ook de beschikking heeft over de variabelen.

Acties:
  • 0 Henk 'm!

  • bartjenl
  • Registratie: Januari 2002
  • Laatst online: 14-09 19:29
ja, maar dat is een heel andere manier van schrijven. Die moet je wel even aanleren dan en als hij een snel antwoord wil hebben op z'n vraag --> globals, als hij er niet langer problemen mee wil hebben --> de boeken in ;)

"Do not worry about your difficulties in mathematics; I can assure you that mine are still greater" - Albert Einstein (1879-1955)


Acties:
  • 0 Henk 'm!

Verwijderd

Wehehe lekkere verwaring. :D Met gobale variabelen bedoelde ik dus een variabele binnen het main-part van het script. Ik bedoelde vanzelfsprekend niet global/$GLOBALS zoals php die kent om een variabele naar binnen te trekken. Dat is inderdaad meestal niet echt een nette oplossing. Overigens blijkt hetgeen ik nu aangeef ook gewoon uit mijn eerdere antwoord, waar ik al aangeef dat de variabelen als argument aan de functie meegeven moeten worden ;)
Pagina: 1