Datenbank wird nicht gefunden

Alles, was MySQL betrifft, kann hier besprochen werden.

Datenbank wird nicht gefunden

Postby schueler19 » 09. April 2009 18:08

Hallo zusammen,

ich habe folgendes Problem:
Ich habe ein einfaches PHP-Skript erstellt, mit welchem ich Daten aus einer Datenbank abfragen kann.
Dieses habe ich unter htdocs\xampp gespeichert. Die Datenbank, auf die das Skript zugreifen soll habe ich im Ordner mysql\bin gespeichert. Die Datenbankdatei habe ich "fortbildung.txt" genannt, die Endung muss doch richtig sein oder? fortbildung.sql habe ich auch schon probiert, das funktioniert auch nicht. ich habe Mysql und Apache am laufen, und diese Ampel ist auch auf grün. Wenn ich die datenbank über die Eingabeaufforderung öffne funktioniert das auch (ich muss nur jedes mal "mysql --user=root" eingeben). Aber sobald ich über Localhost das PHP-Skript öffne, findet er die Datenbank nicht. Könnt ihr mir weiterhelfen? Muss ich da vielleicht auch irgendwo den User festlegen, oder muss ich die Datenbank in einem anderen Ordner speichern?

Vielen Dank schon mal im Voraus!
schueler19
 
Posts: 5
Joined: 09. April 2009 14:29

Re: Datenbank wird nicht gefunden

Postby schueler19 » 10. April 2009 00:06

Falls es an der Programmierung liegen sollte, hier noch mal die Dateien:

Die PHP-Datei: (im Ordner htdocs/xampp)
Code: Select all
<html>
<head>
<title> FORTBILDUNG </title>
</head>
<body>
<h3>DATENBANK FORTBILDUNG</h3>

<?
$PNR=$_POST[Personalnummer];
$Server="localhost";
$DB="Fortbildung";

if (!$ID=@mysql_connect($Server)) die ("Server nicht gefunden");
if(!mysql_select_db($DB,$ID)) die ("Datenbank nicht vorhanden");

echo("<table width = 60%  border = 0>"
   ."<tr><td  bgcolor = #eeeeee width =40% >STATUS:</td><td bgcolor = #eeeeee>verbunden</td></tr>"
   ."</td></tr><tr><td width= 140 bgcolor = #eeeeee >SERVER"
   ."</td><td  bgcolor = #eeeeee >".$Server
   ."</td></tr><tr><td bgcolor = #eeeeee >DATENBANK"
   ."</td><td  bgcolor = #eeeeee >".$DB
   ."</td></tr>"
   ."</tr></table>"
   ."<form action = '' method = 'post'>"
   ."<table width='60%' border = '0'>"
   ."<tr bgcolor = #eeeeee><td width =40%>IHRE EINGABE</td><td></td></tr>"
   ."<p>"
   ."<tr bgcolor = #eeeeee><td >Personalnummer:</td>"
   ."<td align='right'><input type='text' name ='Personalnummer' size = 32 value='$PNR'></td>"
   ."</tr><tr  bgcolor = #eeeeee>"
   ."<td><input type = 'submit' name= 'Sent' value = 'Suchen'></td>"
   //oder
   //."<input type = 'hidden' name = 'Sent' value = 1>"
   ."<td align='right'><input type = 'reset' value ='Abbruch' ></td>"
   ."</tr></table></form>");

$SENT=$_POST[Sent];
if($SENT)
{
$PNR=$_POST[Personalnummer];
$sql="select NAME from MITARBEITER where PERSONALNUMMER='$PNR'";
$ergebnis=mysql_query($sql);
$nZeilen=mysql_num_rows($ergebnis);
if($nZeilen==0) die("Keine g&uuml;ltige Personalnummer");
$Zeile=mysql_fetch_array($ergebnis);
$NAME=$Zeile[NAME];

echo('<table width="60%">
<tr bgcolor =#eeeeee><td  width =40%>ERGEBNIS</td><td></td>
<tr  bgcolor =#eeeeee  ><td>Name: </td><td>');echo($NAME);echo('</tr>');
echo('<tr  bgcolor =#eeeeee >
<td>Personalnummer: </td><td>');echo($PNR);echo('<tr></table><br>');
$sql="select K.KURSNUMMER, K.KURSBEZEICHNUNG from KURS K, BELEGUNG B where K. KURSNUMMER = B.KURSNUMMER
and B.PERSONALNUMMER = '$PNR'";
$ergebnis=mysql_query($sql);
$nZeilen=mysql_num_rows($ergebnis);
echo("<table width = 60% border = 0>");
if($nZeilen==0) die("<tr bgcolor=#eeeeee><td width =40%>ES WURDEN KEINE KURSE BELEGT</td><td></td>");

echo("<tr bgcolor=#eeeeee><td width =40%>KURSNUMMER</td><td>KURSBEZEICHNUNG</td>");
echo("</tr>");

for ($j=0; $j<$nZeilen; $j++)
{
   $Zeile=mysql_fetch_array($ergebnis);
   echo("<tr bgcolor=#eeeeee><td>$Zeile[KURSNUMMER]</td>");
   echo("<td>$Zeile[KURSBEZEICHNUNG]</td>");
   echo("</tr>");
}
echo("</table>");
}

?>
</body>
</html>


Die Datenbank: (Im Ordner mysql/bin) Die Datenbank ist frei erfunden, soll nur zum testen dienen
Code: Select all
drop database if exists FORTBILDUNG;
create database FORTBILDUNG;
use FORTBILDUNG;
create table MITARBEITER(PERSONALNUMMER char(10) primary key,
                NAME char(20),
                ABTEILUNG char(10));

create table KURS(KURSNUMMER char(8) primary key,
                DOZENTEN_ID char(6),
                KURSBEZEICHNUNG char(35),
      UHRZEIT char(10),
                RAUM char(10),
                ANFANGSDATUM date);

create table DOZENT(DOZENTEN_ID char(6) primary key,
                NAME char(20));

create table BELEGUNG(PERSONALNUMMER char(10) not null,
                KURSNUMMER char(8) not null,
                BEMERKUNG char(20),
      primary key(PERSONALNUMMER, KURSNUMMER));


insert into KURS values
("C-112-07","W-231","Bedienung der AB700, Teil I","16:00 Uhr","A304","2008-04-10"),
("C-113-07","W-231","Bedienung der AB700, Teil II","18:00 Uhr","A304","2008-04-13"),
("D-207-07","W-409","Grundlagen der Boerdeltechnik","16:00 Uhr","A104","2008-04-13"),
("M-201-07","W-409","Gesetzliche Vorschriften GBA","14:00 Uhr","A104","2008-05-01"),
("M-202-07","W-409","Ergonomie am Arbeitsplatz","18:00 Uhr","A104","2008-05-01"),
("P-201-07","W-701","Programmierung der PDP2, Teil I","14:00 Uhr","A202","2008-05-04"),
("P-202-07","W-701","Programmierung der PDP2, Teil II","18:00 Uhr","A202","2008-05-04"),
("P-205-07","W-635","Betriebschor","20:00 Uhr","C012","2008-05-12"),
("G-304-07","W-635","Geschichte der Boerdeltechnik","20:00 Uhr","B315","2008-05-13"),
("G-305-07","W-631","Surfkurs fuer Anfaenger","16:00 Uhr","B001","2008-06-01");

insert into DOZENT values
("W-231","Mutzelbach"),
("W-409","Heinsen"),
("W-631","Gram"),
("W-635","Horstmann"),
("W-701","Kleinhirn");


insert into MITARBEITER values
("KA113","Brohmann","AB013"),
("KA115","Weisshaupt","AB013"),
("KA117","Hohl-Wessel","AB013"),
("KB134","Gerngross","AB014"),
("KB136","Peters","AB014"),
("KD110","Weichsel","AB014"),
("KD112","Nurmeier","AB015"),
("KD241","Mertens","AB017"),
("KG234","Gehlsen","AB024"),
("KG239","Wastel","AB025"),
("KM917","Dickmann","AB026");


insert into BELEGUNG values
("KA113","C-112-07",NULL),
("KA113","D-207-07",NULL),
("KA115","M-201-07",NULL),
("KA115","M-202-07",NULL),
("KA115","C-113-07",NULL),
("KA117","D-207-07",NULL),
("KB134","D-207-07",NULL),
("KD110","C-113-07",NULL),
("KD112","G-305-07",NULL),
("KD241","P-201-07",NULL),
("KG234","P-202-07",NULL),
("KM917","C-112-07",NULL),
("KM917","G-304-07",NULL);
schueler19
 
Posts: 5
Joined: 09. April 2009 14:29

Re: Datenbank wird nicht gefunden

Postby Wiedmann » 10. April 2009 00:49

Die Datenbank, auf die das Skript zugreifen soll habe ich im Ordner mysql\bin gespeichert. Die Datenbankdatei habe ich "fortbildung.txt" genannt, die Endung muss doch richtig sein oder?

Du solltest dir glaub dringend mal die Doku zum MySQL Datenbankserver durchlesen...
--> Eine Datenbank erzeugt man nicht dadurch, indem man "irgendeine" Datei in ein Verzeichnis kopiert, sondern muss mit einem entsprechenden Verwaltungstool im Server angelegt werden.

fortbildung.sql habe ich auch schon probiert, das funktioniert auch nicht.
...
Die Datenbank: (Im Ordner mysql/bin) Die Datenbank ist frei erfunden, soll nur zum testen dienen

Das ist ein sogenannter Datenbank-Dump (Export), den man erstmal wieder in die Datenbank importieren muss, um damit arbeiten zu können. Tatsächlich besteht so ein Dump aus einer normalen Abfolge von SQL-"Befehlen", wie man sie auch von Hand in einem MySQL-Client eingeben könnte. Siehe dazu:
http://dev.mysql.com/doc/refman/5.1/en/ ... mands.html

Wenn ich die datenbank über die Eingabeaufforderung öffne funktioniert das auch (ich muss nur jedes mal "mysql --user=root" eingeben).

Damit hast du dich eigentlich nur am MySQL Server "eingeloggt", und könntest jetzt SQL-"Befehle" eingeben. (Eine evtl. im Server existierende Datenbank wurde so noch nicht ausgewählt)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Datenbank wird nicht gefunden

Postby schueler19 » 10. April 2009 18:00

Hmmm... aber ich hab doch in der Eingabeaufforderung mit dem Source-Befehl die Datenbank erzeugt.
Und die ist auch noch drin, wie man hier sieht:

Code: Select all
C:\xampp\mysql\bin>mysql --user=root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.30-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cdcol              |
| fortbildung        |
| mysql              |
| phpmyadmin         |
| test               |
| webauth            |
+--------------------+
7 rows in set (0.09 sec)

mysql> use fortbildung
Database changed
mysql>


In der Schule hat das so immer funktioniert, allerdings haben wir da auch Foxserv (was bei mir auf dem Rechner nicht läuft) benutzt.
Ich hab in der Mysql-doku nachgeguckt, aber ich schaff das trotzdem nicht. Könnt ihr mir da vielleicht konkret sagen, wie ich vorgehen muss?
Das wäre echt nett.
MfG schueler19
schueler19
 
Posts: 5
Joined: 09. April 2009 14:29

Re: Datenbank wird nicht gefunden

Postby Wiedmann » 10. April 2009 18:31

aber ich hab doch in der Eingabeaufforderung mit dem Source-Befehl die Datenbank erzeugt.

Hattest du das?
--> Davon war bisher mit keinem Wort die Rede.

Code: Select all
if (!$ID=@mysql_connect($Server)) die ("Server nicht gefunden");

Wie du ja schon mit dem Command Line Client bemerkt hast, möchte der MySQL bei der Verbindung/Anmeldung gern wissen welcher User du bist (und welches Passwort dieser hat, falls eines vergeben ist). Die trifft natürlich auch zu, wenn du den MySQL-Client von PHP benutzt,
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Datenbank wird nicht gefunden

Postby schueler19 » 10. April 2009 20:19

Wiedmann wrote:Wie du ja schon mit dem Command Line Client bemerkt hast, möchte der MySQL bei der Verbindung/Anmeldung gern wissen welcher User du bist (und welches Passwort dieser hat, falls eines vergeben ist). Die trifft natürlich auch zu, wenn du den MySQL-Client von PHP benutzt,


Jetzt würde mich eigentlich nur noch interessieren, wie ich das hinbekomme. Also muss ich wahrscheinlich irgendwo in der Php-datei hinschreiben "user=root", aber ich weiß nicht wo. Wahrscheinlich irgendwo in dieser Zeile:

Code: Select all
if (!$ID=@mysql_connect($Server)) die ("Server nicht gefunden");


aber ich weiß nicht wie genau... Oder kann man das auch hinbekommen, dass gar nicht mehr nach dem User gefragt wird, sondern, dass automatisch quasi der user "root" gewählt wird, weil in der Schule mussten wir auch nie einen User wählen.

MfG schueler19
schueler19
 
Posts: 5
Joined: 09. April 2009 14:29

Re: Datenbank wird nicht gefunden

Postby Xardas der Dunkle » 10. April 2009 20:40

Oder kann man das auch hinbekommen, dass gar nicht mehr nach dem User gefragt wird, sondern, dass automatisch quasi der user "root" gewählt wird,

Kann man, sollte man aber nicht tun.
http://de3.php.net/manual/de/mysql.conf ... fault-host

weil in der Schule mussten wir auch nie einen User wählen.

Das beweißt mal wieder die Kompetenz mancher Deutscher Lehrer ...
Mein Java-Lehrer lässt zwar auch vieles aus mit der Begründung: "Das ist zu schwer für euch".
Das trifft meiner Meinung nach in diesem Fall, aber absolut nicht zu.

Jetzt würde mich eigentlich nur noch interessieren, wie ich das hinbekomme. Also muss ich wahrscheinlich irgendwo in der Php-datei hinschreiben "user=root", aber ich weiß nicht wo. Wahrscheinlich irgendwo in dieser Zeile:

http://de3.php.net/manual/de/function.mysql-connect.php
Last edited by Xardas der Dunkle on 10. April 2009 20:43, edited 1 time in total.
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: Datenbank wird nicht gefunden

Postby Wiedmann » 10. April 2009 20:42

aber ich weiß nicht wie genau..

Eben aus dem Grund haben Menschen Handbücher and Anleitungen erfunden:
http://de.php.net/manual/en/function.mysql-connect.php

Oder kann man das auch hinbekommen, dass gar nicht mehr nach dem User gefragt wird, sondern, dass automatisch quasi der user "root" gewählt wird,

Das will man nicht wirklich. (Bzw. gewöhn dir lieber an, wie es richtig geht und normal auf jedem Server bei einem Provider ist)

weil in der Schule mussten wir auch nie einen User wählen.

Da war dann auf dem Server einfach:
a) der User eingerichtet, denn ein MySQL-Client unter Windows standardmässig benutzt, wenn man bei der Verbindung keinen angibt (siehe MySQL Manual)

b) oder es gab einen Anonmyous - User mit allen Rechten (für alles...).
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Datenbank wird nicht gefunden

Postby schueler19 » 10. April 2009 21:06

Xardas der Dunkle wrote:Mein Java-Lehrer lässt zwar auch vieles aus mit der Begründung: "Das ist zu schwer für euch".
Das trifft meiner Meinung nach in diesem Fall, aber absolut nicht zu.


Nein, da hast du allerdings recht. Warum unser Lehrer uns das nicht beigebracht hat versteh ich nicht.
Ist ja wirklich nicht schwer, jetzt wo ich weiß wie das geht.

Endlich funktioniert das :D
Besten Dank für eure Hilfe!
MfG schueler19
schueler19
 
Posts: 5
Joined: 09. April 2009 14:29


Return to MySQL

Who is online

Users browsing this forum: No registered users and 2 guests