PHP und SQL

  • Hi... Ich habe mal wieder ein Prob...


    Ich habe folgende Daten meiner Datenbank
    DB (Datenbank_1)
    Benutzername (User_1)
    PW (Passwort_1)


    Ich habe ein Formular, das beim ausfüllen einen Text erstellt. (also eig macht das der php-script...)


    Diesen Text speichere ich in der Variable $code


    Jetzt möchte ich, dass beim Klick auf folgenden Button

    Code
    1. <input type="submit" value="zur Datenbank hinzuf&uuml;gen" class=bgform />


    der Inhalt der Variable $code der obene angegeben Datenbank hinzugefügt wird.


    1. Wie mache ich das?



    2. ich will dann anschließend in einer anderen Datei per Zufall einen der Texte, die in der DB gespeichert sind ausgeben.


    Dies tue ich im mom (arbeite im mom mit einem Array) mit folgendem Code:

    Code
    1. srand ((double)microtime()*10000);
    2. $maxwert = count($ads)-1
    3. $nr = rand(0,$maxwert);
    4. echo $ads[$nr][Banner];
    5. // $ads = Array


    Wie muss ich den ändern, dass er statt eines Inhalts des Arrays, einen Inhalt der DB ausgibt???


    mkG YetiZwerg....


    nachstehend nocheinmal der komplette Code:




  • Hi,


    der Code ist ja grausig an einigen Stellen... :shock: .
    Sowohl der HTML-Teil als auch das CSS. Ich habe Dir unten mal den verbesserten Code gepostet mit Kommentaren zu meinen Änderungen. Integriert ist das schreiben in eine Datenbank.


    Grundsätzlich ist es falsch, HTML Code in die Datenbank zu schreiben. Speichere die beiden Urls in eine Tabelle und setze den HTML Code zum Ausgeben erst in der Ausgabedatei nach dem Holen der Daten aus der DaBa zusammen. Der Sinn ist, dass dann bei Änderung der Ausgabe nur einmal Code geändert werden muss, ansonsten musst Du alle DaBa Einträge editieren.


    Vorausgesetzt habe ich jetzt einfach mal folgende Struktur der DaBa Tabelle, in die die Texte gespeichert werden sollen:


    Name der Tabelle: banner
    id -> int, Primary key, Auto increment
    hurl -> varchar(100)
    burl -> varchar(100)



    Habe den CSS Teil mal in eine externe Datei ausgelagert. Nebenbei bemerkt gehört in einer HTML Datei der <style type="text/css"></style> Teil zwischen <head> und </head> und nicht nach <body>.


    CSS Datei 'style.css'


    Warum gibst Du unnötigerweise statischen HTML Code mit echo aus? PHP musst Du nur da deklarieren, wo Du auch wirklich PHP benutzt. Das entlastet den Server.


    PHP-Datei mit Formular:


    Nun die Datei zum Anzeigen der Banner:


    Aber vorsicht, es können noch kleine Fehler drin sein, Code ist ungetestet!


    Gruß Talwin

  • danke erstmal für die schnelle Antwort aber mir wird ein Fehler andezeigt


    un zwar soll in den Zeilen 77 un 78 ein Fehler sein...


    dies hier sind die betreffenden Zeilen:


    Code
    1. $hurl = mysql_real_escape_string($_POST['hurl']);
    2. $burl = mysql_real_escape_string($_POST['burl']);


    folgender Fehler wird mir angezeigt...



    Ich habe die Daten meiner DB angepasst...


    also er kann sich verbinden... hat halt nur das Prob mit dem Abschnitt


    mkG YetiZwerg

  • Hi,


    laut Manual (unten unter 'Anmerkungen') muss man sich erst mit der DaBa verbinden, dann kann man die Funktion benutzen.


    Du musst also die beiden Zeilen hinter die DaBa-Verbindung verschieben, dann sollte es klappen.


    Gruß Talwin

  • danke... der Fehler kommt schonmal nicht mehr...


    jetzt sag er mir, dass es einen Fehler beim auswählen der DB gab...


    Ich schätze, dass dort der Fehler liegt


    Muss ich da nicht noch iwo den Namen der DB angeben???

  • Hi,


    sorry, war vielleicht etwas verwirrend: Das musst Du hier machen, nicht wie ich schrieb die Tabelle auswählen, sondern die Datenbank. Also nicht 'banner' nehmen, sondern den Namen der Datenbank:

    Code
    1. // Tabelle auswaehlen
    2. if(!@mysql_select_db('banner')) {
    3. exit('Error beim Auswaehlen der Tabelle!');
    4. }
  • danke... das funzt jetzt...


    doch, wenn ich mir das anzeigen lassen will, so bekomme ich die Fehlermeldung: Select fehlgeschlagen


    nachfolgend der Code:


  • Dann liegt hier der Fehler:

    Code
    1. $sql = "SELECT * FROM banner ORDER BY random() LIMIT 1";
    2. $result = @mysql_query($sql);
    3. if(!$result) {
    4. exit('Select fehlgeschlagen');
    5. }


    Ändere das mal in:

    Code
    1. $sql = "SELECT * FROM banner ORDER BY random() LIMIT 1";
    2. $result = @mysql_query($sql);
    3. if(!$result) {
    4. exit('Select fehlgeschlagen: '.mysql_error());
    5. }


    und poste dann den Fehler, den MySQL ausgibt. Entweder gibt es die Tabelle banner nicht in deiner DaBa oder die Spalten sind anders, oder es gibt einen Fehler in der Syntax der Query. Die Fehlermeldung sollte selbsterklärend sein.


    Gruß Talwin

  • Select fehlgeschlagen: FUNCTION Name_der_DB.random does not exist


    die DB existiert aber... ich habe sie eben erstellt...

  • oops, sorry, habe die falsche Funktion benutzen wollen. So müsste es richtig sein:

    Code
    1. $sql = "SELECT * FROM banner ORDER BY RAND() LIMIT 1";
    2. $result = @mysql_query($sql);
    3. if(!$result) {
    4. exit('Select fehlgeschlagen: '.mysql_error());
    5. }