Fijn dat het ineens wel werkt.
:slotje:
Fijn dat het ineens wel werkt.
:slotje:
:slotje: er is nog niet duidelijk wat er moet gebeuren en wat voor iets je zoekt.
Je gebruikt geen breaks? Verder hoe wil je dan hoe het eruit komt te zien? (breaks: <br/>)
Geeft hij een error zo ja geef die error dan even aan ons. Als hij geen error geeft hoort hij gewoon te werken. Zet desnoods bovenaan de pagina:
error_reporting(E_ALL);
:slotje: werkt inderdaad niet als je $_GET vergeet.
Volgende keer wel even iets langer debuggen.
Ik ben momenteel al bezig met deze layout.
:slotje:
Deze vragen had je zelf gewoon kunnen opzoeken op google.
:slotje:
Die @staat er omdat mysqli anders zegt dat $host geen variabele mag zijn.
Verder heb ik de class uitgebreid met query uitvoeren en rows teruggeven. Fetchen etc. komt er nog in.
Ik zit erover na te denken om voor select, update, delete en insert aparte functies te schrijven.
Dit is hem tot nu toe:
<?php
class Database
{
private $host = 'localhost';
private $user = '';
private $password = '';
private $database = '';
private $connection = '';
private $hasConnection = false;
private $queryResult = '';
// functie connectie aanmaken met de database
public function connect()
{
// nieuwe connectie aanmaken als hij nog niet aangemaakt is.
if($this->hasConnection === false)
{
$this->connection = @new MYSQLi($this->host,$this->user,$this->password,$this->database);
// nette error meegeven als er geen verbinding gemaakt kon worden.
if(! $this->connection)
{
throw new Exception('Er kon geen verbinding worden gemaakt met de daabase.');
}
else
{
// de connectie is aangemaakt en kan nu succesvol gebruikt worden.
$this->hasConnection = true;
}
}
}
// functie rijen teruggeven
function num_rows($sql = NULL)
{
// Kijken of er een query meegegeven is, zo ja uitvoeren
if($sql != NULL)
{
$this->makeQuery($sql);
}
// teruggeven van het aantal rijen.
return $this->connection->query( $this->queryResult );
}
function makeQuery( $sql )
{
// query aanmaken en stoppen in de queryResult
$this->queryResult = $this->connection->query( $sql, $this->db );
// Kijken of de query uitgevoerd kon worden.
if(! $this->queryResult )
{
// nette error meegeven als de query niet uitgevoerd kon worden.
throw new Exception('Er is iets misgegaan bij het aanroepen van de query.');
}
}
}
?>
Toon Meer
Ik vraag me alleen af of $this->connection->query werkt..
Verder hoor ik graag verbeter punten etc.
Heel erg spijtig, mede door jou zit ik in het team van CP en je hebt me altijd goede tips gegeven en ik ken je ook als gek persoon.
Het was niet onverwachts, maar dat maakt het niet minder erg. Heel erg bedankt voor alles. We zullen je toch wel missen.
Precies, verander nu je topic naar een fatsoenlijk topic, is dit niet gebeurt voor 20.00 vanavond is hij closed!
Tot die tijd ook niemand reageren!
<?php
class Database
{
private $host = 'localhost';
private $user = '';
private $password = '';
private $database = '';
private $connection = '';
private $hasConnection = false;
public function connect()
{
if($hasConnection === false)
{
$this->connection = @new MYSQLi($this->host,$this->user,$this->password,$this->database);
if(! $this->connection)
{
throw new Exception('Er kon geen verbinding worden gemaakt met de daabase.');
}
else
{
$this->hasConnection = true;
}
}
}
}
?>
Toon Meer
Dit heb ik tot nu toe dan, nog meer verbeter punten? En wat staat er nog meer in een goede database class (insert select update delete).
public function connect()
{
if($connectionTrue === false)
{
$this->connection = @new MYSQLi($this->host,$this->user,$this->password,$this->database);
if(! $this->connection)
{
throw new Exception('Er kon geen verbinding worden gemaakt met de daabase.');
}
else
{
return $this->connectionTrue = true;
}
}
}
Toon Meer
Is deze functie zo goed? Of zijn er nog meer verbeteringen. En hebben jullie suggesties welke andere functies er in een goede database class moeten zitten?
Moet die try catch in mijn code dan weg, of moet ik er throw new Exception van maken?
Haha ik zie het nu pas dat ik hem een waarde wil geven met === bedankt. En ik moet dus
$this->connection =
$this->connectionTrue = true; doen?
<?php
class Database
{
private $host = 'localhost';
private $user = '';
private $password = '';
private $database = '';
private $connection = '';
private $connectionTrue = false;
public function connect()
{
if($connectionTrue === false)
{
try
{
$this->connection = @new MYSQLi($this->host,$this->user,$this->password,$this->database);
return $this->connectionTrue = true;
}
catch (Exception $e) {
{
return 'Caught exception: ', $e->getMessage(), "\\n" $this->connectionTrue;
}
}
}
}
?>
Toon Meer
Is dit zo beter?
Verder ben ik c# classes gewend en daar gebruikte ik steeds getters en setters. Dar was dus eigenlijk die functie voor bedoeld:$
De === heb ik ergens ooit gelezen dat die ook echt waar moet zijn (hoofdletter gevoelig). Weet niet meer waar ik dat ooit heb gelezen, maar dat heb ik me een beetje aangeleerd om te gebruiken bij belangrijke functies.
Verder had ik static gedaan omdat ik dacht dat hij tog niet veranderd.. Heb het alweer weggehaald.
Beste leden,
Omdat ik graag meer wil leren van classes wil ik graag jullie mening over mijn begin van de database class die ik aan het maken ben.
class Database
{
private $host;
private $user;
private $password;
private $database;
private $connection;
private $connectionTrue;
function dbData
{
$this->host = 'localhost';
$this->user = '';
$this->pw = '';
$this->db = '';
$this->connectionTrue = FALSE;
}
function connect($host, $user, $password, $database)
{
if($connectionTrue === FALSE)
{
$connection = @new MYSQLi($host,$user,$password,$database);
if(! $this->connection)
{
$error = 'Er kon geen verbinding met de database aangegaan worden.';
die($error);
}
else
{
$connectionTrue === TRUE;
}
}
}
}
Toon Meer
Hopelijk hebben jullie veel kritiek waar ik verder mee kan. Houdt het wel netjes, en beargumenteer je mening. Het is mijn eerste opzet, en mijn eerste grote class die ik wil gaan schrijven.
<?php
include ("connect.php");
echo '<table width="40%">
<tr>
<th>Naam</th>
<th>Telefoon</th>
</tr>';
$sql_details = mysql_query("SELECT * FROM afbeelding");
while ($row_detail = mysql_fetch_array($sql_details))
{
$afbeelding = $row_detail['afbeelding'];
$omschrijving = $row_detail['omschrijving'];
echo '<tr>
<td><img src="'.$afbeelding.'" alt="" /></td>
<td>' . $omschrijving . '</td>
</tr>';
}
echo '</table>';
?>
Toon Meer
Controleer anders het pad waar de image naar toe gaat (rechtermuisknop link openen in nieuw tabblad).
De volgende keer je beginpost laten staan! Nu kunnen leden niet zien wat er is opgelost.
Dit is een waarschuwing.
Normaal is mysql niet hoofdletter gevoelig waardoor er personen dezelfde naam kunnen hebben, enkel de ene keer in hoofdletters en de andere keer met kleine letters. Dit zou je kunnen aanpassen door latin1_swedish_ci op latin1_general_cs te zetten.
Maar als je alles gewoon controleerd op kleineletters (LCASE voor mysql) en strtolower() voor php moet het ook gewon lukken.
Met vriendelijke groet,
Luc