anoniem Geplaatst: 26 april 2004 Delen Geplaatst: 26 april 2004 Ik wil een MySQL query in een functie zetten, als volgt: [code:1:284955ff36] <? function sql_normal($table) { $query = "SELECT * FROM $table LIMIT 20"; $result = mysql_query($query); $row = mysql_fetch_assoc($result); ?> [/code:1:284955ff36] Vragen: - komt dit veel voor/is dit ene goede methode? - Kan ik alle uit de database gehaalde gegevens zo stuk voor stuk weergeven met deze query? Alvast bedankt :)! Quote Link naar reactie
anoniem Geplaatst: 26 april 2004 Auteur Delen Geplaatst: 26 april 2004 Je kan prima extra functies schrijven in PHP, daar is op zich niets mis mee. Maar als je dat doet zou ik het wel anders doen. Allereerst zou ik waarde teruggeven bij aanroep van de functie, anders kan je er niets mee. Ten tweede is het misschien handig om met references te gaan werken (alhoewel Rémy daar meer van weet). Hoe dan ook, een functie mag eigenlijk nooit output geven naar de browser en raak niet verleid om globals te bruiken. - Bas Quote Link naar reactie
anoniem Geplaatst: 26 april 2004 Auteur Delen Geplaatst: 26 april 2004 Oke, in ieder geval bedankt voor de tips. Mijn doel was eigenlijk het aantal queries in een document te besparen met deze functie, maar dat is dus niet aangeraden ;-). Ik kijk ook even om Rémy misschien nog wat zegt op mijn post, misschien kan ik daar nog meer mee. Bedankt. Quote Link naar reactie
anoniem Geplaatst: 26 april 2004 Auteur Delen Geplaatst: 26 april 2004 Ik denk dat je dit bedoelt ;) [code:1:c0afbff00d] <?php function sql_normal($table) { // Query uitvoeren $result_id = mysql_query("SELECT * FROM " . $table . " LIMIT 20"); // Result ID wat de query heeft teruggegeven ook weer terugsturen naar het script return $result_id; } $result = sql_normal('mijntabel'); while ( $record = mysql_fetch_assoc($result) ) { print $record['Veld1] . $record['Veld2'] . $record['Veld3']; } ?> [/code:1:c0afbff00d] Groetjes, Vic Quote Link naar reactie
anoniem Geplaatst: 26 april 2004 Auteur Delen Geplaatst: 26 april 2004 Ik begrijp de bedoeling niet zo, maar dat zal wel aan mij liggen. Wel heb ik een tweetal opmerkingen over die paar regels code: [list:1041b014af] [*:1041b014af] SELECT * ... is fout, gebruik *altijd* kolomnamen (dus SELECT kolom1, kolom 2 etc). Dit is ten eerste sneller en ten tweede stukken duidelijker. [*:1041b014af] Variabelen horen niet tussen quotes, dus het moet worden:[code:1:1041b014af]$query = "SELECT * FROM " . $table . "LIMIT 20";[/code:1:1041b014af] Ook hier geldt: dit is sneller en duidelijker (qua syntaxhighlighting). [/list:u:1041b014af] Quote Link naar reactie
anoniem Geplaatst: 26 april 2004 Auteur Delen Geplaatst: 26 april 2004 De bedoeling was erachter te komen of die code verstandig is om te gebruiken en of het dus veilig is. Het is inmiddels duidelijk dat dit een weinig voorkomende methode is en Bas raadde hem ook niet aan, dus in ieder geval bedankt voor alles :)! Quote Link naar reactie
anoniem Geplaatst: 26 april 2004 Auteur Delen Geplaatst: 26 april 2004 Oke :) Quote Link naar reactie
anoniem Geplaatst: 26 april 2004 Auteur Delen Geplaatst: 26 april 2004 Wat wel een veelgebruikte methode is, is om je database access in een apart gedeelte van je applicatie af te handelen (DAL). In de applicatie gebruik je dan geen losse (ad hoc) queries meer, maar vraag je de gegevens op via een functie/class. Bijvoorbeeld (allemaal pseudocode natuurlijk) op een nieuwspagina heb je een lijst met nieuwtjes staan [code:1:610eaadf31] // lijst met nieuwtjes ophalen $news = new News; $allItems = $news->getAllNewsItems(); // print linkjes naar de items echo "<ol>"; for ($item in $allItems) { echo "<li>", $item, "</li>"; } echo "</ol>"; [/code:1:610eaadf31] En op de detailpagina van je nieuwsrubriek heb je een functie die op basis van een NewsId een bericht teruggeeft. [code:1:610eaadf31] $news = new News; $newsitem = $news->getNewsItemById($newsId); // print details echo $newsitem["title"]; echo $newsitem["text"]; [/code:1:610eaadf31] enz. Alle nieuws gerelateerde bewerkingen (lezen, schrijven) op de database bundel je in de News class. En de verschillende methods geven toegang tot de data. Voordeel van deze methode is een betere scheiding van de verschillende applicatielagen (n-tier). Nadeel is het extra tikwerk (in eerste instantie) en de iets steilere leercurve. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen