• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 4 januari 2026 om 10:58
  • Developer Gezocht

    K.Rens 30 december 2025 om 12:32
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 28 december 2025 om 21:20
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

Database selecteren?

  • futur3
  • 25 april 2016 om 00:06
  • futur3
    Beginner
    Ontvangen Reacties
    1
    Berichten
    26
    • 25 april 2016 om 00:06
    • #1

    Beste Ictscripters,
    Ik heb een file genaamd "config.php", en ik heb nog een file "login.php".
    In config.php wordt er een connectie gemaakt met de database.
    (Ik voer die connectie uit met een class).
    Ik heb in login.php ook een class, die class extends ik met de config class.
    Ik require vanuit login.php het bestand config.php.
    Dan haal ik me database uit config en de connectie ook maar ik krijg constant op mijn scherm:
    mysqli_select_db() expects parameter 1 to be mysqli, null given in

    Hij geeft constant aan dat het null is.
    Weet iemand hoe ik dit kan oplossen?

    connection.php

    PHP
    <?php
    
    
    class connection {
    
    
    public $arr = array();
    
    
    function connect()
     {
        $this->con = mysqli_connect($this->arr['host'],$this->arr['root'], $this->arr['pass'], $this->arr['db'] );
         
     }
    
    
    
    
    
    
    }
    
    
    ?>
    Toon Meer


    config.php

    PHP
    <?php
    require $_SERVER['DOCUMENT_ROOT'].'connection.php';
    
    
    $config = new connection();
    
    
    $config->arr['host'] = "************";
    $config->arr['root'] = "**************";
    $config->arr['pass'] = "************";
    $config->arr['db'] = "***********";
    
    
    $config->connect();
    
    
    ?>
    Toon Meer

    login.php


    PHP
    <?php
    require_once $_SERVER['DOCUMENT_ROOT'].'connection.php';
    
    
    class login extends connection {
    
    
    function getInfo() {
        
        $select_db = mysqli_select_db($this->con, $this->arr['db']);
        
        if(!$select_db) {
            echo "Error we can't select a database";
            exit();
        }
    
    
    
    
    
    
    }
    
    
    $login = new login();
    
    
    $login->getInfo();
    ?>
    Toon Meer
  • Guest, wil je besparen op je domeinnamen? (ad)
  • MOnkNL
    Student
    Ontvangen Reacties
    8
    Berichten
    69
    • 25 april 2016 om 14:16
    • #2

    mysqli is opgebouwd in oop style dus hier kan je direct gebruik van maken zonder dat zelf een class voor te bouwen. Zie: http://php.net/manual/en/mysqli.construct.php

    The law is what I write down on paper

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 28 april 2016 om 00:52
    • #3
    Citaat van MOnkNL

    mysqli is opgebouwd in oop style dus hier kan je direct gebruik van maken zonder dat zelf een class voor te bouwen.

    Er valt weliswaar inderdaad iets voor te zeggen om van de OOP variant van mysqli gebruik te maken, maar dat neemt niet weg dat het handig kan zijn om een (eenvoudige) wrapper om de mysqli class zelf te bouwen, dit kan je het werk nog makkelijker maken.

    @futur3 wellicht is het handig om een aantal misverstanden op te helderen.

    Allereerst heb je bij mysqli, in tegenstelling tot de oorspronkelijke mysql-functies, de mogelijkheid om direct een database te selecteren op hetzelfde moment als het maken van een connectie, bij de originele mysql-extensie had je hier twee functies voor nodig (mysql_connect() en mysql_select_db()). Dit doe je ook op regel 9 van je eerste codefragment (4e parameter bevat de naam van de database). Dit hoef je dus niet nogmaals te doen in login.php.

    Als je toch een rechtvaardiging hebt om het selecteren van een database uit te stellen zul je eerst de 4e parameter uit de aanroep van mysqli_connect() in connection.php moeten verwijderen. Daarbij is het dus wellicht nog beter om helemaal over te stappen naar de OOP variant van mysqli. Vervolgens zou je de getInfo() methode in login.php moeten uitbreiden met een aanroep van de connect() methode uit de parent class voordat je een database selecteert, anders bestaat $this->con simpelweg niet! Dit had je waarschijnlijk direct kunnen constateren als je het melden + weergeven van fouten had aangezet voor ontwikkeling. Dit soort instellingen verdienen zeker een plaats in je configuratie...

    Daarnaast de volgende observatie: een "login" class is geen logisch voortborduursel van een "database" class als je het mij vraagt. Een "login" class zou hooguit gebruik moeten maken van een "database" class. Dit zou je ook kunnen bereiken door een instantie van een database-class-object door te geven aan de login class op het moment van creatie. Je geeft daarmee dus in feite de login class al het gereedschap om acties die gerelateerd zijn aan het in- en uitloggen uit te kunnen voeren. Maar een login class is iets heel anders dan een database class, dus het ene in het verlengde plaatsen van het ander is nogal vreemd.

    Tot slot is de configuratie-functionaliteit enkel bedoeld om op een eenduidige manier instellingen vast te leggen (of zou dit moeten zijn). Het staat dus ter discussie of het ook de taak van configuratie-functionaliteit is om (direct, dan en daar) een database connectie te maken. Als je dit dan toch doet loont het wellicht de moeite om dit database-object weer onder te brengen onder een aparte configuratie-variabele of -array die (referenties van) objecten of (handles van) resources bevat. Op die manier zou je ook via een "getter methode" de referentie naar je database-object uit je configuratie-variabelen kunnen trekken.

    Doorgaans hebben klassen één duidelijk omschreven set taken/verantwoordelijkheden. Als je dingen gaat doen die hier (erg) van afwijken (niet echt passen in de set) is dat een signaal dat je wellicht een of meer aparte klassen mist en/of dat er een kronkel zit in je ontwerp.

  • MOnkNL
    Student
    Ontvangen Reacties
    8
    Berichten
    69
    • 5 mei 2016 om 17:40
    • #4

    @futur3 zo zou ik het oplossen:

    PHP
    <?php
    $dbhost = '';
    $dbuser = '';
    $dbpass = '';
    $dbname = '';
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
    
    
    class User{
    	protected $_con;
    	function __construct($mysqli){
    		$this->_con = $mysqli;
    	}
    	public function login($email,$password){
    		$this->_con->qeury(); 
    	}
    }
    	$user = new User($mysqli);
    	$login = $user->login($_POST['email'],$_POST['password']);
    ?>
    Toon Meer

    Verder zie ik dat je de variabele $con niet hebt gedefinieerd als zijnde een public, private of protected variabele.

    The law is what I write down on paper

  • futur3
    Beginner
    Ontvangen Reacties
    1
    Berichten
    26
    • 5 mei 2016 om 22:31
    • #5

    MOnkNL : Verder zie ik dat je de variabele $con niet hebt gedefinieerd als zijnde een public, private of protected variabele.

    Klopt ik heb niet 100% mijn hele code laten zien maar wel de belangrijkste dingen waar het in mis gaat, ik ben het vergeten om het er bij te zetten.

    FangorN en MOnkNL, ik wil jullie bedanken want ik zie de fout, en bedankt voor de tips over mijn code, hiermee kan ik mijn code verbeteren.

    Ik zal mijn code(s) ook herschrijven.

  • MOnkNL
    Student
    Ontvangen Reacties
    8
    Berichten
    69
    • 5 mei 2016 om 22:37
    • #6

    Geen probleem. Succes verder.

    The law is what I write down on paper

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design