PHP-Kurs: Datenbank anlegen

  • Hallo Zusammen,


    ich bin gerade beim PHP-Kurs beim Kapitel Datenbank anlegen.


    Leider tut sich bei mir gar nichts obwohl ich den Code aus dem Kurs übernommen habe. Ich bekomme ich einen Fehler:


    Parse error: parse error in C:\xampplite\htdocs\adressverwaltung.php on line 7


    Ich würde auch gerne den Code als Datei anhängen, jedoch sind weder txt, php oder pdf - Endungen erlaubt... ???



    Danke

  • ja warum nicht einfach hier rein kopieren... :D sorry ;)


    <?php


    // Datenbank-Verbindung herstellen
    // siehe (mysql-datenbank-verbindung-herstellen.htm)
    require_once ('konfiguration.php');
    // zuweisen der MySQL-Anweisung einer Variablen
    $sql = CREATE DATABASE `adressverwaltung` ;
    $result = mysql_query($sql)
    or die("Anfrage fehlgeschlagen: " . mysql_error());


    // Datenbank-Verbindung herstellen
    // siehe (mysql-datenbank-verbindung-herstellen.htm)
    require_once ('konfiguration.php');


    // Nutzen von Datenbank (Name ist hinterlegt in Konstante MYSQL_DATENBANK)
    mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");


    // Datenbank-Verbindung herstellen
    require_once ('konfiguration.php');
    // Nutzen von Datenbank (Name ist hinterlegt in Konstante MYSQL_DATENBANK)
    mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");
    // MySQL-Befehl der Variablen $sql zuweisen
    $sql = "
    CREATE TABLE `adressen` (
    `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `nachname` VARCHAR( 150 ) NOT NULL ,
    `vorname` VARCHAR( 150 ) NULL ,
    `akuerzel` VARCHAR( 2 ) NOT NULL ,
    `strasse` VARCHAR( 150 ) NULL ,
    `plz` INT( 5 ) NOT NULL ,
    `telefon` VARCHAR( 20 ) NULL
    ) ENGINE = MYISAM ;
    ";
    // MySQL-Anweisung ausführen lassen
    $db_erg = mysql_query($sql) or die("Anfrage fehlgeschlagen: " . mysql_error());
    ?>

  • Erstmal: Verwende bitte das nächste mal den BB-Code für deinen php-Code

    Zitat von &quot;MatzeDB&quot;

    ja warum nicht einfach hier rein kopieren... :D sorry ;)

    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php </span><span class="syntaxcomment">//1<br />//2<br />// Datenbank-Verbindung herstellen //3<br />// siehe (mysql-datenbank-verbindung-herstellen.htm) //4<br /></span><span class="syntaxdefault">require_once </span><span class="syntaxkeyword">(</span><span class="syntaxstring">'konfiguration.php'</span><span class="syntaxkeyword">);</span><span class="syntaxdefault">  </span><span class="syntaxcomment">//5<br />// zuweisen der MySQL-Anweisung einer Variablen //6<br /></span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> CREATE DATABASE </span><span class="syntaxkeyword">`</span><span class="syntaxdefault">adressverwaltung</span><span class="syntaxkeyword">`</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">//7<br /></span><span class="syntaxdefault">$result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">or die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Anfrage fehlgeschlagen: "</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> mysql_error</span><span class="syntaxkeyword">());<br /><br /></span><span class="syntaxcomment">// Datenbank-Verbindung herstellen<br />// siehe (mysql-datenbank-verbindung-herstellen.htm)<br /></span><span class="syntaxdefault">require_once </span><span class="syntaxkeyword">(</span><span class="syntaxstring">'konfiguration.php'</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Nutzen von Datenbank (Name ist hinterlegt in Konstante MYSQL_DATENBANK)<br /></span><span class="syntaxdefault">mysql_select_db</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> MYSQL_DATENBANK </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">      or die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Auswahl der Datenbank fehlgeschlagen"</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Datenbank-Verbindung herstellen<br /></span><span class="syntaxdefault">require_once </span><span class="syntaxkeyword">(</span><span class="syntaxstring">'konfiguration.php'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxcomment">// Nutzen von Datenbank (Name ist hinterlegt in Konstante MYSQL_DATENBANK)<br /></span><span class="syntaxdefault">mysql_select_db</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> MYSQL_DATENBANK </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">or die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Auswahl der Datenbank fehlgeschlagen"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxcomment">// MySQL-Befehl der Variablen $sql zuweisen<br /></span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"<br />CREATE TABLE `adressen` (<br />`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,<br />`nachname` VARCHAR( 150 ) NOT NULL ,<br />`vorname` VARCHAR( 150 ) NULL ,<br />`akuerzel` VARCHAR( 2 ) NOT NULL ,<br />`strasse` VARCHAR( 150 ) NULL ,<br />`plz` INT( 5 ) NOT NULL ,<br />`telefon` VARCHAR( 20 ) NULL<br />) ENGINE = MYISAM ;<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxcomment">// MySQL-Anweisung ausführen lassen<br /></span><span class="syntaxdefault">$db_erg </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> or die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Anfrage fehlgeschlagen: "</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> mysql_error</span><span class="syntaxkeyword">());<br /></span><span class="syntaxdefault">?></span></span>


    So, und der PHP-Parser meldet uns jetzt einen Fehler in Zeile 7:
    Ich hab dir die Zeilennummern mal mit Kommentaren markiert, und in Zeile 7 fehlen die Anführungszeichen um den SQL-Befehl, damit PHP weiß, dass es sich um eine Zeichenkette handelt.
    Also muss die Zeile 7 so aussehen:

    PHP
    <span class="syntaxdefault"><br />$sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"CREATE DATABASE `adressverwaltung`"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">//7<br /></span><span class="syntaxdefault"> </span>
  • was meinst du denn mit BB-Code???


    Ich haben nun die Anführungszeichen gesetzt und nun folgt diese Fehlermeldung:


    Anfrage fehlgeschlagen: Access denied for user ''@'localhost' to database 'adressverwaltung'

  • Die Frage mit den 3x require würde mich auch mal interessieren.. :/


    Naja, wenn du dir das mal übersetzt steht dort, dass du keine Erlaubnis hast das zu tun :P
    Dadurch, dass aber vor dem @ nichts steht habe ich irgendwie die Vermutung, dass du keinen Benutzer angegeben hast?


    was steht den in der konfiguration.php? (Passwort bitte ggf. durch * o.Ä. ersetzen!)


    Und zum Code-BB-Code:

    Code
    Code der zwischen [code]

    steht wird preformatiert (also so wie hier) dargestellt (:[/code]

    PHP
    <span class="syntaxdefault">$str </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"und wenn du sogar [code=php]MEIN CODE..

    schreibst wird der PHP-Code gefärbt (gehighlighted)"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">echo $str</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span>[/code]

  • ich habe den code aus dem kurs übernommen, daher dachte ich das es auch funktioniert...


    mit require stelle ich doch die verbindung zur db her oder?


    1x zum Erstellen der DB
    1x der Zugriff
    1x um eine Tabelle zu erstellen...


    ich bin absoluter neuling auf dem gebiet... :D


    hier der code aus der konfig... php


    PHP
    <span class="syntaxdefault"><br /><br /></span><span class="syntaxcomment">// d<?phpie Konstanten auslagern in eigene Datei<br />// die dann per require_once ('konfiguration.php');<br />// geladen wird.<br /><br />// Damit alle Fehler angezeigt werden<br /></span><span class="syntaxdefault">error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">E_ALL</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Zum Aufbau der Verbindung zur Datenbank<br />// die Daten erhalten Sie von Ihrem Provider<br /></span><span class="syntaxdefault">define </span><span class="syntaxkeyword">( </span><span class="syntaxstring">'MYSQL_HOST'</span><span class="syntaxkeyword">,      </span><span class="syntaxstring">'localhost' </span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// bei XAMPP ist der MYSQL_Benutzer: root<br /></span><span class="syntaxdefault">define </span><span class="syntaxkeyword">( </span><span class="syntaxstring">'MYSQL_BENUTZER'</span><span class="syntaxkeyword">,  </span><span class="syntaxstring">'' </span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">define </span><span class="syntaxkeyword">( </span><span class="syntaxstring">'MYSQL_KENNWORT'</span><span class="syntaxkeyword">,  </span><span class="syntaxstring">'' </span><span class="syntaxkeyword">);<br /></span><span class="syntaxcomment">// für unser Bsp. nennen wir die DB adressverwaltung<br /></span><span class="syntaxdefault">define </span><span class="syntaxkeyword">( </span><span class="syntaxstring">'MYSQL_DATENBANK'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'adressverwaltung' </span><span class="syntaxkeyword">);<br /><br /> </span><span class="syntaxdefault"></span>
  • Mit require_once wird die Datei eingebunden, mit der du die für eine Verbindung nötigen Daten zusammenträgst.
    Die musst du natürlich ggf. noch für deine Bedürfnisse umändern, z.B. einen Benutzer angeben (wnen du nichts geändert hast 'root' ohne Passwort.)
    Um dann eine Verbdinung zurm Server aufzubauen musst du nur 1x am Anfang des Scriptes die Funktion mysql_connect($serverAddress, $user, $password) aufrufen. ($serverAdress = welcher Server, entweder also eine IP-Adresse oder wenn die Datenbank auf dem selben Server liegt 'localhost'. Die beiden anderen Sachen sollten sich von selbst erklären O.o)
    Dann gilt diese bis zum ende des Scriptes.


    (Du muss übrigens auch nur 1x eine Datenbank auswählen. [also via mysql_select_db()] auf diese wird dann solange zugegriffen, bis du diese änderst^^).

  • hi sarkkan,


    irgendwie funktioniert es nun ... wenn ich aber den zugriff auf die db mit mysql_connect ( xy ) mache,


    brauche ich doch die konfiguration.php nicht mehr oder?

  • Mehrfaches verwenden von include (auch invariante _once) oder require (_once) kann fehler werfen weil php versucht immer ein und das selbe neu zu deklarieren !


    Jede datei immernur einmal einbinden sonst suchst du dich nach dem fehler dumm und dähmlich.


    lg
    R4Zz0R

  • Zitat von &quot;R4Zz0R&quot;

    Mehrfaches verwenden von include (auch invariante _once) oder require (_once) kann fehler werfen weil php versucht immer ein und das selbe neu zu deklarieren !


    ..das ist Schwachsinn O.o Gerade dafür gibt es doch include_once() und require_once(). Hier wird ja vorher überprüft ob die Datei schon einmal eingebunden wurde, sollte dies schon passiert sein wird sie kein weiteres mal eingebunden und es wird kein Fehler ausgeworfen.

  • Dann war deine Formulierung durch die Klammern falsch.
    Ein include_once oder ein require_once wird nie einen Fehler auswerfen. (Außer du versuchst damit eine nicht vorhandene Datei einzubinden o.Ä. :P)

  • die klammern waren dazu da um zu zegen das es sowas wie include_once / require_once gibt die natürlich keinen fehler werfen !


    ich sprach ja von include und reqire die fehler werfen bei doppelter einbindung einer datei ..XD

  • Achso.. Das war aber aus deinem Text in keinster weise ersichtlich :P
    Besonders dadurch, dass du versucht hast ein Fremdwort einzubauen :D (Ist dir die Bedeutung von diesem eigentlich bekannt? O.o)
    Weil es bedeutet soviel wie "Gleichbleibende Bewegung", "Unveränderliche Größe" :D
    Besonders durch die erste Bedeutung bin ich davon ausgegangen, dass du damit ausdrücken wolltest, dass es quasi das selbe ist/die selben Folgen hat :P

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!