Funktion zur Datenbankverdung funktioniert nicht...

metty

Erfahrenes Mitglied
Hallo Miteinander,

ich glaube ich bin echt zu blöde. Es geht um folgendes: Ich habe schon oft mit php im Umgang mit MySQL gearbeitet, und nun wollte ich mir mal eine Funktion schreiben, die die Verbindung herstellt und ich diese dann nur noch aufrufen muss. Aber es geht nicht.
Ich paste mal Teile vom Code:

die inc.func.php
PHP:
$db[host]	  = "localhost";
$db[user] 	  = "web151";
$db[password] = "xxx";
$db[base]	  = "usr_web151_2";

function sqlconnect() {
  $verbindung = mysql_connect($db[host], $db[user], $db[password]) or die ("<p>Keine Verbindung möglich: " .mysql_error());
  $verbindung .= mysql_select_db($db[base], $verbindung) or die ("<p>Kann Datenbank ".$db[base]." nicht benutzen : " . mysql_error());

  if(!$verbindung) {
    return FALSE;
  } else {
    return $verbindung;
  }
}

und die news.php
PHP:
<?php
include("inc.func.php");
sqlconnect();

$query = mysql_query("SELECT id_news, autor, email, DATE_FORMAT(date, '%d.%m.%Y') as date, DATE_FORMAT(date, '%k:%i') as time, headline, message, related FROM untitled_news ORDER by id_news DESC");

while($result = mysql_fetch_array($query)) {
  echo $result['id_news'];
}
?>

Der Fehler ist:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web151/html/untitled/shared/news.php on line 21

Das ist zwar die Zeile wo er $result['id_news'] ausgeben soll, jedoch klappt das query in phpMyAdmin.
Hat wer einen Rat?!
 
ach verdammt, hab das problem eben selber gelöst...
Hätte die Variablen für die Datenbank sofort mit in die Funktion reinschreiben sollen :D
 
Oder die Variablen in der Funktion global machen oder diese an die Funktion als Parameter übergeben sollen.
 
ja, habe es mittlerweile mit den parametern gemacht, um die funktion komfortabler zu machen.
habe noch nciht viel mit funktionen gemacht, aber es gibt ja immer ein erstes mal ;)
und wie meinst du das denn mit den globalen variablen? wo müsste ich die deklarieren?
 
PHP:
 //Assoziative Schlüssel sollten wie Strings geschrieben werden, d.h. $db['host'] und nicht $db[host]!
$db['host']      = "localhost";
$db['user']       = "web151"; 
$db['password'] = "xxx"; 
$db['base']      = "usr_web151_2"; 

function sqlconnect() { 
    global $db; // <-- Hier wird das Array $db innerhalb der Funktion verfügbar gemacht.

  $verbindung = mysql_connect($db[host], $db[user], $db[password]) or die ("<p>Keine Verbindung möglich: " .mysql_error()); 
  $verbindung .= mysql_select_db($db[base], $verbindung) or die ("<p>Kann Datenbank ".$db[base]." nicht benutzen : " . mysql_error()); 

  if(!$verbindung) { 
    return FALSE; 
  } else { 
    return $verbindung; 
  } 
}
 
Zurück