MySQL abfrage

  • Hi

    Findet ihr hier einen Fehler?

    Er ist noch nicht an allen orten vertig. nur bei sec_id

    Fehler Meldung:

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\webspeak\components\main_content.php on line 42

    Einmal editiert, zuletzt von minder (28. Januar 2009 um 16:41)

  • dann kommt no database selected

    aber:

    PHP
    $database = mysql_connect($db['host'], $db['user'], $db['pwd']);
    PHP
    mysql_select_db($db['db']);

    und die config datei:

    PHP
    <?php
    
    
    $db['host'] = 'localhost';
    $db['db'] = 'test';
    $db['user'] = 'root';
    $db['pwd'] = '**';
    ?>
  • SQL-Abfrageergebnis

    Host: localhost
    Datenbank: test
    Erstellungszeit: 28. Januar 2009 um 16:53
    Erstellt von: phpMyAdmin 3.1.1 / MySQL 5.1.30-community
    SQL-Befehl: SELECT * FROM `category` LIMIT 0, 30 ;
    Zeilen: 2
    c_id name description
    1 Nummer 1 Dies ist der erste eintrag
    2 Numer 2 Es muss Gehen

  • Hast du

    PHP
    error_reporting(E_ALL);


    an den Anfang deines Scripts gesetzt?
    Das solltest du während der Entwicklung immer tun, denn dann wären dir die Warnings eine große Hilfe gewesen ;)
    Die hätten dir gesagt, dass in der Funktion load_content() folgende Variablen zwar genutzt, aber nicht initialisiert sind:
    $db['host']
    $db['user']
    $db['pw']

    Grund:
    In Funktionen stehen nur Variablen zur Verfügung, die in ihr deklariert worden sind.
    Wenn du exisitierende Variablen in einer Funktion nutzen möchtest, muss du sie erst verfügbar machen.
    Dazu in der ersten Zeile deiner Funktion folgendes:

    PHP
    global $var1,$var2, $var3;

    In deinem Falle:

    PHP
    function load_content() {
    global $db;
    ...
    ...
    ...

    Dann wird eine korrekte Verbindung aufgebaut und eine Datenbank ausgewählt.

    Gruß,
    Jojo


  • Nur eine Frage:

    Wie kann ich eine Datei einbinden, welche in einem übergeortneten verzeichniss liegt. Mit ../ gibts einen fehler

  • Warning: include(../config/database.inc.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\webspeak\components\main_content.php on line 3

    CMS
    |_ config
    |_database.inc.php
    |_ components
    |_ main_content.php

    So gibts keinen Fehler:
    include ('./config/database.inc.php');

    So gibts den oben:

    include ('../config/database.inc.php');

  • du fügst main_content.php doch sicher per include in die index.php, welche im Root liegt.
    Dann musst du auch von dieser Position ausgene, wenn du andere Dateien aufrufst.
    Aus diesem Grund ist es meist besser, eine Konstante ROOT zu definieren, und Pfadangaben dann darüber zu machen:

    PHP
    define("ROOT", "/");
    include ROOT."config/database.inc.php";


    Damit kannst du umgehen, dir ständig Gedanken über deine "Position" zu machen.

    gruß,
    Jojo


  • @minder
    Ich meine das jetzt wirklich nicht böse, sondern das ist wirklich nur gut gemeint:

    In einem anderen Thread hast du ja schon geschrieben, dass du ein CMS schreiben willst. Ganz ehrlich, du bist noch meilenweit davon entfernt, soetwas hinzubekommen. Daher mein Tipp: versuche dich an etwas Leichterem, z.B. ein Gästebuch. Wenn du das dann fertig hast, dann stellst du das hier inkl. Quellcode vor, damit wir dir Tipps geben können, was man besser machen kann. Im Moment ist ein CMS eine Nummer zu hoch für dich.

    Wie gesagt, ist nicht böse gemeint, ganz im Gegenteil.