PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : php und Datenbank



Jeremias
15-10-2005, 09:58
Vorneweg, ich bin ein sehr blutiger Anfänger und ich habe mich ein wenig in php eingearbeitet. Ich stehe 1. unter Zeitdruck und 2. muss/werde ich auf Datenbanken hinarbeiten.

Ich habe eine Grundlegende, wahrscheinlich simple Frage:
Fatal error: Call to undefined function: msql_connect() in [...].

<?php

$connection=mysql_connect(meinhost, benutzername, passwort) or die("Verbindungsversuch fehlgeschlagen");

mysql_select_db(datenbank, $connection) or die("Konnte die Datenbank nicht waehlen.");

?>

Natürlich habe ich anstatt "meinhost" etc. die nötigen Dinge eingetragen.

Ich bin dabei mit meiner Website auf die Datenbank meines Woltlab-Forums zuzugreifen, gibt es hierzu einen Workshop?

Danke.

compost
15-10-2005, 10:34
Also prinzipiell sieht das nicht so verkehrt aus. SQL-Unterstützung ist aktiviert in deiner PHP-Installation?

Hier gibt es sonst alle nötigen Infos:
http://de3.php.net/manual/de/function.mysql-connect.php

Gruß Jens

michael.sprick
15-10-2005, 11:33
mich irritiert die Fehlermeldung etwas:


Fatal error: Call to undefined function: msql_connect() in [...].

hast Du die abgetippt und Dich dabei evtl. verschrieben?
Ansonsten müsstest Du nämlich mal Deinen Code nach 'msql' durchsuchen... es muss ja 'mysql' heißen ;)

Jeremias
15-10-2005, 14:00
Vielen Dank, ich hab es hinbekommen.

Nun noch eine Frage: Wie kann ich Variablen, welche mein Forum verwendet an meine Seite übergeben. Umgekehrt läuft das ja über so eine session, wenn ich das richtig verstanden habe...

Denn damit könnte ich ja den Login im Forum auch auf meiner Seite anzeigen bzw. wenn man sich auf der Seite einloggt, man auch im Forum als eingeloggt gilt. Hat jemand ein konkretes Beispiel für so einen Login auf einer Site?

Turbohummel
16-10-2005, 08:21
Das prob dürfte damit gelöst sein. Allerdings empfehle ich den Einsatz einer Datenbank-Klasse.

Hier meine (zur freien Verwendung versteht sich):


<?
/**
* Stellt eine Datenbankverbindung zu einer MySQL-Datenbank her
* @package THR_lib
* @version 2.1
* @author Michael Baumann
*/



class DB {
var $counter, $db_name, $db_host, $db_user, $db_password, $kennung, $result, $prefix, $last;

/**
* Erzeugt das Datenbankobjekt
*/
function DB(){
$this->db_host = 'localhost';
$this->db_user = 'nutzername';
$this->db_pw = 'pwd';
$this->db_name = 'dbn';
$this->counter = 0;
$this->prefix = '';

$this->kennung = @mysql_connect($this->db_host, $this->db_user ,$this->db_pw)
or die('FEHLER 113 - NO DATABASE SERVER ON THIS DATA');
mysql_select_db($this->db_name)
or die ('FEHLER 118 - DATABASE NOT FOUND');
}

/**
* Setzt eine Anfrage an die Datenbank ab
*/
function query($sql){
$sql = str_replace('{PREFIX}', $this->prefix, $sql);
$this->last = $sql;
$this->result = mysql_query($sql);
$this->counter ++;
return $this->error_report(true);

}

/**
* Baut eine einfache SELECT-Abfrage zusammen und setzt sie ab
*/
function select($table, $fields = '*'){
$sql = 'SELECT '.$fields.' FROM '.$table;
return $this->query($sql);
}

/**
* Liefert den Fehler einer Abfrage
*/
function error_report($expand = false){
if(mysql_errno() != 0){
$msg = 'FEHLER 126 - DATABASE ERROR: '.mysql_errno();
if($expand) $msg .= ' - '.mysql_error().'<br /> Query:<pre>'.$this->last.'</pre>';
die($msg);
return false;
}
else return true;
}

/**
* Liefert die Anzahl der betroffenen Datensätze
*/
function anzahl(){
$anz = @mysql_affected_rows($this->kennung);
if($anz) return $anz;
else return 0;
}

/**
* Liefert den nächsten Datensatz
*/
function next_record(){
return @mysql_fetch_assoc($this->result);
}

/**
Liefert ein Element des nächsten datendatzes
*/
function next_col($col){
if($buffer = $this->next_record()){
return $buffer[$col];
}
return false;
}


/**
* Liefert alle Datensätze der letzten Abfrage, indizierung 1 - n oder $index
*/
function all_records($index = false){
$erg = array();
while($buffer = $this->next_record()){
if($index){
$erg[$buffer[$index]] = $buffer;
} else {
$erg[] = $buffer;
}
}
return $erg;
}

/**
* Gibt die ID des letzten Inserts zurück
*/
function last_insert(){
return @mysql_insert_id($this->kennung);
}


/**
* Gibt ein Array aus
*/
function dump($erg){
echo $this->last;
echo '<pre>';
var_dump($erg);
echo '</pre>';
}

/**
* Lieft den nächsten Datensatz als numerisches Array
*/
function next_row() {
return @mysql_fetch_row($this->result);
}

}

?>

Sollte ja selbsterklärend sein.

www.galaxy-news.de hat diese Funktion. Wie des funzt, kann ich aber auf Anhieb auch net sagen. Wahrscheinlich müsste man einfach die gleiche Session-Verwaltung verwenden.