Steven Weijdt schreef op 22.11.2005 18:23
..alleen die zoek functie heb ik nog nooit gedaan
leuke uitdaging toch ;-)
ik ben zelf ook aan het knutselen gegaan. Heb een klasse gemaakt voor toegang en verbinding naar database met daarin ook gelijk wat standaard functies. Werkt als een tiet :-)
Hier de code:
<?php
error_reporting(E_ALL);
//--D E K L A S S E T O E G A N G ---------------------------------------------
class toegang {
//-- De variabelen nodig voor toegang velenen tot MySQL
//-- en die bij de klasse horen
var $user="test"; //gebruikersnaam
var $password="test"; //wachtwoord
var $host="localhost"; //naam van computer
var $dbnaam="msh"; //naam van database
//-- Declaratie overige variabelen
var $db_verbinding=false; //resultaat van verbinding
var $sql_resultaat=false; //resultaat opgegeven SQL opdracht
//--V E R B I N D I N G ---------------------------------------------------
//-- Bij het aanroepen van een klasse
//-- wordt een functie met hetzelfde naam
//-- in de klasse direct uitgevoerd (constructor).
//-- functie toegang wordt dus direkt uitgevoerd
//-- die de functie verbinden aanroept voor
//-- het totstand brengen van de verbinding
//-- met de database.HI
//--Constructor
function toegang() {
//--functie verbinden wordt in het begin uitgevoerd bij
//--aanroep van deze klasse
//--daarbij vormt "$this->" een sleutelwoord.
//--sleutelwoord geeft daarbij toegang tot
//--alle opgenomen variabelen en functies.
$this->verbinden();
}
//--Als er nog geen verbinding is met de database
//--deze aanmaken en als standaard opnemen.
function verbinden() {
if($this->db_verbinding==false){ //--bij het verbinden moet gekeken worden
//--of er al een verbinding is
//--de eerste keer is dat er nog niet omdat
//--$db_verbinding de waarde false heeft.
//--met @ worden webserver fouten onderdrukt
//--om fouten te zien, maken we een functie foutmelding
$this->db_verbinding=@mysql_connect($this->host, $this->user, $this->password);
//--controleer of de verbinding gelukt is
if(empty($this->db_verbinding)){
//--roep foutfunctie op met opgegeven melding
$this->foutmelding("Er is een fout opgetreden bij het maken van een verbinding");
}
//--als er geen foutmelding is dan
//--is de verbinding met de database gelukt
//--of de verbinding met de database is al aanwezig
//--nu controleren we of het mogelijk is om
//--de opgegeven database te gaan gebruiken
$db_selecteren=@mysql_select_db($this->dbnaam, $this->db_verbinding);
//--controleer of het selecteren van de database gelukt is
if(empty($db_selecteren)){
//--selecteren niet gelukt, geef foutmelding
$this->foutmelding("Het selecteren van de database is mislukt ");
}
//--selecteren is gelukt, kan de functie verbinden verlaten
return $this->db_verbinding;
}
}
//--S Q L O P D R A C H T E N --------------------------------------------
//--met de functie sql_opdracht wordt een SQL opdracht
//--naar de database gestuurd en het resultaat opgeslagen
//--in sql_resultaat.
//--voor het uitvoeren van de SQL opdracht
function sql_opdracht($sql){
$this->sql_resultaat=@mysql_query($sql, $this->db_verbinding);
//--controleer of er iets gevonden wordt in de database
//--zo niet, geef een foutmelding
//--zo ja, geef het resultaat terug via sql_resultaat
if(empty ($this->sql_resultaat)){
$this->foutmelding("Er zijn geen gegevens gevonden die voldoen aan de selectie");
}
return $this->sql_resultaat;
}
//--als al eerder een SQL opdracht is verzonden en er zijn
//--gegevens gevonden dan kan mbv mysql_fetch_array een
//--set van gegevens (aray) worden samengesteld
//--met de functie sql_gegevens
function sql_gegevens(){
if (!empty($this->sql_resultaat)){
$sql_array=@mysql_fetch_array($this->sql_resultaat);
return $sql_array;
}else{
$this->foutmelding("Er is een fout opgetreden bij het weergeven van de records");
}
}
//--via de functie mysql_fetch_row($res) haal je een
//--bepaalde rij uit de database
//--de pointer komt automatisch na deze rij te staan
//--een laatste bericht ophalen bijvoorbeel
//--kan door de $sql opdracht te sorteren op datum
function sql_rijen(){
if(!empty($this->sql_resultaat)){
$sql_array=@mysql_fetch_row($this->sql_resultaat);
return $sql_array;
}else{
$this->foutmelding("Er is een fout opgetreden bij het ophalen van rij-gegevens");
}
}
//--F O U T M E L D I N G -----------------------------------------------------
//--Als er een fout is opgetreden, geef hiervan een melding
//--en sluit deze script en html tags af.
function foutmelding($foutbericht){
echo $foutbericht. " <br>";
echo mysql_error()." <br/>";
echo mysql_errno();
echo '</body></html>';
exit;
}
}
//--aan het einde van het script wordt de klasse direct aangeroepen
//--en zorgt ervoor dat de klasse na het invoegen van het script met
//--include direkt ter beschikking staat.
$db=new toegang();
?>
Voor het ophalen van alle berichten met onderverdeling laatste geplaatst en overige:
<?php
//--maak connectie met database
include("../toegang/toegang.inc.php");
//--geef selectie op, laatste bericht, gesorteerd op datum komt bovenaan de array
$db->sql_opdracht("SELECT id,titel,datum FROM pers ORDER BY datum DESC");
//--haal de eerste rij op uit de array, om het laatste bericht te tonen
echo"<h2>Laatste bericht</h2>";
$row = $db->sql_rijen();
$row[2] = substr($row[2], 0, 10);
echo "<ul class=\"presslist\">";
echo "<li>$row[2]"." - "."<a href =\"../pers/per_index.php\">$row[1]</a></li>";
echo "<ul><br/>";
//--laat de overige berichten zien
echo "<h2>Overzicht</h2>";
while($row=$db->sql_gegevens()){
$row['datum'] = substr($row['datum'], 0, 10);
echo "<ul class=\"presslist\">";
echo "<li>$row[datum]"." - "."<a href=\"../pers/per_berichten_selectie.php?id=$row[id]\">$row[titel]</a></li>";
echo "</ul>";
}
?>
Voor het geselecteerde bericht:
<?
//--maak connectie met database
include("../toegang/toegang.inc.php");
//--geef selectie op
//--haal het specifieke nieuwsbericht uit de database
//--$HTTP_GET_VARS[id] is het id adres die wordt meegegeven in de link.
$db->sql_opdracht("SELECT id,titel,bericht,datum FROM pers WHERE id = $HTTP_GET_VARS[id]");
//--haal de array op met behulp van de opgegeven opdracht
//--alle velden die je zojusit geselecteerd hebt
//--van het specifieke bericht komen in een array.
//--je kunt ze dus aanroepen via $row[kolom_naam].
$row=$db->sql_gegevens();
//haal datum op en zet datum neer
$row['datum'] = substr($row['datum'], 0, 10);
echo "<p id=\"storytopleft\">Rotterdam, $row[datum]</p>";
//haal titel op en zet titel neer
echo "<h1>$row[titel]</h1>";
//-- zet enters om in <br>'s voor een juiste weergave
$row['bericht'] = nl2br($row['bericht']);
//--plaats bericht
echo "$row[bericht]";
?>
Wil hier nog wat aan de datum veranderen in format bijv:23 November 2005. Weet niet hoe, moet ik uitzoeken
Wil ook eigenlijk maar 10 berichten op een pagina met paginateller dus; Weet ook nog niet hoe, ook nog uitzoeken dus...
Als iemand nog wat input, feedback etc heeft, graag. Moet het ergens van leren niewaa?
Gr