Hallo PHP Freunde
ich habe folgendes Problem:
Ich hab' eine Webseite mit einem mini CMS von 'nem Freund.
Unter den Einstellungen im CMS wollte ich mir jetzt alle Sprachen, die Installiert sind( zur Zeit nur Deutsch und Englisch), ausgeben lassen und mit einem Statusbutton( Grün= Online, Rot= Offline) versehen. Allerdings hagelt es NUR Fehlermeldungen (Fatal error: Call to a member function fetch_assoc() on a non-object in C:\xampp\htdocs\CMS3\admin\option.php on line 48)
Hier mal die Klasse, zu den Optionen:
<?php
class Option {
private $intOptionID;
private $intOptionTyp;
private $strOptionWert;
private $db;
private $intID;
private $intStatus;
function Option(){
$this->db = new Connect();
$this->db = $this->db->gibConnect();
}
function optionShow(){
$sql_einstellungen = 'SELECT * FROM einstellungen';
$result = $this->db->query($sql_einstellungen);
$ausgabe = '<input name="anzahl" type="hidden" value="'.$result->num_rows.'" />'."\n";
while($zeile = $result->fetch_assoc()){
if(!empty($zeile['einstellungenID'])){
$ausgabe .= '<div class="text">'.$zeile['einstellungenTyp'].'</div><input name="option'
.$zeile['einstellungenID'].'" value="'
.$zeile['einstellungenWert'].'" type="text" class="option_box" /><br />'."\n";
}
}
return $ausgabe;
}
function optionEdit($sql){
$result = $this->db->query($sql);
if(!$result):
return 'Werte konnten nicht gespeichert werden.';
endif;
}
function sprachen(){
$sql_sprache = 'SELECT * FROM sprache';
$result = $this->db->query($sql_sprache);
$ausgabe = $result;
while($zeile = $result->fetch_assoc()){
if(!empty($zeile['spracheName'])){
$ausgabe = $zeile['spracheID']
.$zeile['spracheName'];
}
return $ausgabe;
}
}
function statusEdit($id){
$this->intID = $id;
$result = $this->db->query("SELECT spracheStatus FROM sprache WHERE spracheID = '".$this->intID."'");
$zeile = $result->fetch_assoc();
$this->intStatus = $zeile['spracheStatus'];
if($this->intStatus == 1): $i = 0;
elseif($this->intStatus == 0): $i = 1;
endif;
$sql = "UPDATE sprache SET spracheStatus = '".$i."' WHERE spracheID = '".$this->intID."'";
$result = $this->db->query($sql);
}
}
?>
Und jetzt die Optionen.php, dass ist die, die aufgerufen wird, wenn man im Backend auf "Optionen" klickt:
<div id="seite">Einstellungen<hr /></div>
<form id="formular" enctype="multipart/form-data" method="post">
<?php
$op = new Option();
echo $op->optionShow();
echo $op->sprachen();
?>
<br />
<input name="abschicken" type="submit" value="Speichern" id="button" />
</form>
<?php
if(isset($_POST['abschicken'])):
for( $i = 1; $i <= $_POST['anzahl'] ; $i++ ){
$name = 'option'.$i;
$sql = "UPDATE einstellungen SET einstellungenWert = '".$_POST[$name]."'
WHERE einstellungenID = '".$i."'";
$ausgabe = $op->optionEdit($sql);
echo $ausgabe;
}
echo'<meta http-equiv="refresh" content="0;URL=cms.php?datei=option" />';
endif;
?>
<table id="uebersicht">
<tr>
<th class="datum">Erstellungsdatum</th>
<th class="titel">Titel</th>
<th class="status">Status</th>
<th class="edit"> </th>
</tr>
<?php
$show = 20;
$result = $db->query("SELECT COUNT(*) FROM sprache");
$zeile = $result->fetch_assoc();
$anzahl = $zeile['anzahl'];
#$rest = $anzahl%$show;
#$seiten = ($anzahl - $rest)/$show + 1;
#$page = $_GET['page'];
#$datensatz = ($page-1)*$show;
$sql = "SELECT spracheID AS id, spracheKuerzel AS kuerzel, spracheName AS name, spracheStatus AS status, FROM sprache ORDER BY spracheID DESC LIMIT ".$datensatz.", ".$show;
$result = $db->query($sql);
while($zeile = $result->fetch_assoc()){
$status = $zeile['status'];
if( $status == 0 $farbe = "rot";
elseif( $status == 1 $farbe = "gruen";
endif;
$datum = $zeile['datum'];
$datum = date('d.m.Y', $datum);
echo '<tr>
<td class="datum">'.$datum.'</td>
<td class="titel"><a href="cms.php?datei=startseite&'.$_GET['datei'].'='.$zeile['id'].'">'.$zeile['titel'].'</a></td>
<td class="status"><form method="post" action="">
<input name="status" type="submit" value="'.$zeile['id'].'" class="'.$farbe.'" />
</form></td>
<td class="edit"><form method="post" action="">
<input name="edit" type="submit" value="'.$zeile['id'].'" class="edit_button" />
</form></td>
</tr>';
}
?>