- Lid sinds
- 2 jan 2009
- Berichten
- 4.460
- Waardering
- 235
- Lengte
- 1m80
Hallo allemaal,
Misschien een stomme vraag maar moet alles nog een beetje onder de knie krijgen dus kan ik het beter meteen vragen zodat ik geen omslachtige manier hoef te gaan gebruiken hiervoor.
Het voorbeeld dat ik gebruik is totaal niet praktisch natuurlijk maar het gaat er maar even om dat ik zo kan uitleggen wat ik wil, ik wil dus zeg maar een connectie van een database die in bijv. index.php is aangemaakt kunnen gebruiken in een andere class, maar dan krijg ik een error (logisch). Zie voorbeeld.
Voorbeeld (ik vond 'mysqli' in [Link niet meer beschikbaar]om te gebruiken, als er een handigere manier is om te werken met een mysql-database graag vermelden
)
De tabel 'test' bevat de volgende velden: 'id' (AUTO_INCREMENT) en 'data' (VARCHAR(10))
De error die ik nu natuurlijk krijg is 'undefined variable: mysqli' om dat de variabele mysqli niet bestaat in mijn class en ik die connectie dus niet kan aanroepen, ik dacht eerst dat ik hem gewoon kon returnen en dat index.php hem dan wel zo zou parsen dat ie de $mysqli uit index.php zou gebruiken

Hoe los ik dit nu (netjes) op? Moet je standaard een database class maken waarin je alle mogelijke bewerkingen die je kan uitvoeren op de db hebt verwerkt en waaraan je via de parameters data kan doorgeven?
Die class dan includen in elke class om zo de query wel uit te kunnen voeren vanuit bijvoorbeeld (in dit geval) testobject.class.php?
Zal vast heel wat fout zijn aan deze code maar ik moet het nog leren dus vergeef me dat aub (incl. de naamkeuze voor functies etcetera)
Karma voor degene die hier een mooie oplossing voor heeft waardoor ik voortaan weet hoe je dit soort dingen aanpakt
Misschien een stomme vraag maar moet alles nog een beetje onder de knie krijgen dus kan ik het beter meteen vragen zodat ik geen omslachtige manier hoef te gaan gebruiken hiervoor.
Het voorbeeld dat ik gebruik is totaal niet praktisch natuurlijk maar het gaat er maar even om dat ik zo kan uitleggen wat ik wil, ik wil dus zeg maar een connectie van een database die in bijv. index.php is aangemaakt kunnen gebruiken in een andere class, maar dan krijg ik een error (logisch). Zie voorbeeld.
Voorbeeld (ik vond 'mysqli' in [Link niet meer beschikbaar]om te gebruiken, als er een handigere manier is om te werken met een mysql-database graag vermelden
)De tabel 'test' bevat de volgende velden: 'id' (AUTO_INCREMENT) en 'data' (VARCHAR(10))
PHP:
<?php
// index.php
include 'testobject.class.php';
$mysqli = new mysqli('localhost', 'bla', 'bla', 'test');
$testObject = new testObject();
if(mysqli_connect_errno()) // weet niet of ik zo een connectie error goed opvang
{
trigger_error('Fout bij verbinding: '.$mysqli->error);
}
$inputData = 'object';
echo $testObject->insertToDB($inputData);
?>
PHP:
<?php
// testobject.class.php
class testObject {
public function __construct() {
// bla..
}
public function insertToDB($inputData = false) {
$query = "INSERT INTO test (data) VALUES ('".$inputData."')";
if ($inputData) {
if (!empty($inputData)) {
return mysqli_query($mysqli, $query);
}
else {
return 'Er is geen data om in de db te gooien.';
}
}
else {
return 'Parameter meegeven aan de functie.';
}
}
}
?>
De error die ik nu natuurlijk krijg is 'undefined variable: mysqli' om dat de variabele mysqli niet bestaat in mijn class en ik die connectie dus niet kan aanroepen, ik dacht eerst dat ik hem gewoon kon returnen en dat index.php hem dan wel zo zou parsen dat ie de $mysqli uit index.php zou gebruiken

Hoe los ik dit nu (netjes) op? Moet je standaard een database class maken waarin je alle mogelijke bewerkingen die je kan uitvoeren op de db hebt verwerkt en waaraan je via de parameters data kan doorgeven?
Die class dan includen in elke class om zo de query wel uit te kunnen voeren vanuit bijvoorbeeld (in dit geval) testobject.class.php?
Zal vast heel wat fout zijn aan deze code maar ik moet het nog leren dus vergeef me dat aub (incl. de naamkeuze voor functies etcetera)
Karma voor degene die hier een mooie oplossing voor heeft waardoor ik voortaan weet hoe je dit soort dingen aanpakt



(moet nog van alles installeren, net nieuwe mobo erin)