Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalte in Datenbank speichern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Montellese
    antwortet
    Stimmt mit dem die() hast du natürlich recht. Naja ich mach das mit dem Datenbank-Verbindungsfehler immer bissl anders, sodass der Rest doch angezeigt wird ^^

    Jo SQL-Injection ist hier sehr einfach.....

    Einen Kommentar schreiben:


  • PsychoEagle
    antwortet
    Zitat von Montellese Beitrag anzeigen
    Ich würde folgenden Teil erst nach dem <html> Tag schreiben und nicht vor dem Doctype:

    PHP-Code:
    <?php 
      
    @mysql_connect("localhost""user""password") OR die("Keine Verbindung möglich: "mysql_error()); 
      
    mysql_select_db('database') OR die(mysql_error());
    ?>
    Grund: Der Doctype sollte immer die erste Information in einem HTML-Dokument sein. Solange die Datenbankverbindung problemlos hergestellt wird, ist das auch kein Problem. Sollte die Verbindung jedoch mal fehlschlagen, steht vor dem Doctype der mysql_error, was vor allem im IE bewirkt, dass er in den Quirksmode wechselt und nicht mehr im Standardkomformen Modus ist, was sich stark auf das Verhalten bestimmter CSS-Attribute auswirken kann.
    Ist aber nur Kosmetik ^^
    Eigentlich ist das doch völlig egal. Soll er doch in den Quirksmode gehn er macht mit dem SQL-Error ein die(), also wird nichts nach dem Fehler ausgegeben. Kein HTML, kein CSS, nada nüx un nothing es gibt also nix, was irgendwie falsch angezeigt werden könnte.

    Wenn du es nach dem <html>-Tag machst, ist dein ebenso nicht nicht mehr valide, aber eine Ausgabe könnte da sein. Nun gut, dein SQL-Fehler hat dann deine CSS-Eigenschaften etc nicht mehr, aber soweit sollte es nicht kommen, dass du einen SQL-Fehler bekommst. Und falls doch musst du das ganze anders handeln, und kein die() Einbauen, damit dein Design etc verhaut wird.

    Gut, auch egal wie man es im Endeffekt macht, SQL-Injektions sind hier gut möglich und da is die Datenbank schnell weg ^^

    Einen Kommentar schreiben:


  • Montellese
    antwortet
    Ich würde folgenden Teil erst nach dem <html> Tag schreiben und nicht vor dem Doctype:

    PHP-Code:
    <?php 
      
    @mysql_connect("localhost""user""password") OR die("Keine Verbindung möglich: "mysql_error()); 
      
    mysql_select_db('database') OR die(mysql_error());
    ?>
    Grund: Der Doctype sollte immer die erste Information in einem HTML-Dokument sein. Solange die Datenbankverbindung problemlos hergestellt wird, ist das auch kein Problem. Sollte die Verbindung jedoch mal fehlschlagen, steht vor dem Doctype der mysql_error, was vor allem im IE bewirkt, dass er in den Quirksmode wechselt und nicht mehr im Standardkomformen Modus ist, was sich stark auf das Verhalten bestimmter CSS-Attribute auswirken kann.
    Ist aber nur Kosmetik ^^

    Einen Kommentar schreiben:


  • PsychoEagle
    antwortet
    Ich leg dir vorneweg erstmals nahe (wie schon erwähnt) ein Tutorial zu PHP durchzugehen und auch zu verstehen und nicht alles vorgekaut zu wollen. Aber nun ja ...

    Google hätte dir zu deinem Fehler einige Lösungen vorgeschlagen

    Da es früh am Morgen ist helf ich noch ein letztes Mal.

    PHP-Code:
    <?php 
      
    @mysql_connect("localhost""user""password") OR die("Keine Verbindung möglich: "mysql_error()); 
      
    mysql_select_db('database') OR die(mysql_error());
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> 
    <head> 
    <title>
    <?php  
      $sql 
    "SELECT * FROM Inhalte WHERE id = "$_GET['ID'] ." LIMIT 1";
      
    $result mysql_query($sql) OR die(mysql_error());  
      
    $row mysql_fetch_assoc($result);  
      echo 
    $row['Titel']; 
    ?></titel> 
    <link rel="shortcut icon" href="favicon.ico" /> 
    <link rel="stylesheet" type="text/css" href="css/blau.css"/> 
    <script type="text/javascript"> 
    <!-- 
    window.onload=montre; 
    function montre(id) { 
    var d = document.getElementById(id); 
        for (var i = 1; i<=10; i++) { 
            if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';} 
        } 
    if (d) {d.style.display='block';} 

    //--> 
    </script> 
    </head> 
    <body> 
    <div id="banner"></div><div id="footer"></div> 
    <div id="navigation"> 
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php">Startseite</a></span> 
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=1">Über dieses Projekt</a></span> 
    <dt onclick="javascript:montre('smenu2');"><span class="spannavi"><a tabindex="0" class="navielement"  href="index.php?id=2">Inhalte</a></span></dt> 
    <dd id="smenu2"> 
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 1 &laquo;</a></span> 
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 2 &laquo;</a></span> 
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 3 &laquo;</a></span> 
    </dd>     
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=3">nützliche Links</a></span> 
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=4">Gästebuch</a></span> 
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=5">Kontakt</a></span> 
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=6">Statistik</a></span> 
    </div> 
    <div id="inhalt"> 
    <hr /><?php include("counter.php"); ?> 
     </div></body></html>
    WICHTIG!!!: Informier dich doch bitte über SQL-Injections. Das mit dem $_GET in der SQL-Anweisung geht mal gar nicht, vor allem ohne voherige Prüfung!!

    Habs trotzdem so übernommen, da du doch ein wenig mehr Eigeninitiative zeigen solltest.

    Bitte geh doch folgendes Tutorial mal Schritt für Schritt (also von oben nach unten, A nach B,...) durch, denn es fehlen dir echt wichtige Grundkenntnisse.
    -> #php/QuakeNet Tutorial - Einführung

    Nun denn,

    Grüße
    Da Psy

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    Danke dir/euch.

    Zwei Fragen hab ich erstmal noch:

    1. Ich verbinde ja erst im Body-Bereich mit der DB, klappt das dann, wenn der Titel schon darüber ausgelesen werden muss? Oder muss ich da oben schon die ganzen Verbindungssachen schreiben?
    2. Muss ich die Datenbankverbindung am Ende auch wieder irgendwie trennen?

    Edit:

    Ich bekomme jetzt leider die Meldung "No database selected" wenn ich meine Homepage aufrufen möchte...

    Wo ist denn da der Fehler?

    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <title><?php
    $conn 
    mysql_connect("localhost""d005dfde""***"
        or die(
    "Keine Verbindung möglich: " mysql_error());

    echo 
    $row['Titel'];
    ?></titel>
    <link rel="shortcut icon" href="favicon.ico" />
    <link rel="stylesheet" type="text/css" href="css/blau.css"/>
    <script type="text/javascript">
    <!--
    window.onload=montre;
    function montre(id) {
    var d = document.getElementById(id);
        for (var i = 1; i<=10; i++) {
            if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
        }
    if (d) {d.style.display='block';}
    }
    //-->
    </script>
    </head>
    <body>
    <div id="banner"></div><div id="footer"></div>
    <div id="navigation">
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php">Startseite</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=1">Über dieses Projekt</a></span>
    <dt onclick="javascript:montre('smenu2');"><span class="spannavi"><a tabindex="0" class="navielement"  href="index.php?id=2">Inhalte</a></span></dt>
    <dd id="smenu2">
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 1 &laquo;</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 2 &laquo;</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 3 &laquo;</a></span>
    </dd>    
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=3">nützliche Links</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=4">Gästebuch</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=5">Kontakt</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=6">Statistik</a></span>
    </div>
    <div id="inhalt">
    <?php 
    $sql 
    "SELECT * FROM Inhalte WHERE id=".$_GET['ID'];  

    $result mysql_query($sql) or die(mysql_error()); 

    $row mysql_fetch_array($result); 
    ?>
    <hr /><?php include("counter.php"); ?>
     </div></body></html>

    Einen Kommentar schreiben:


  • Nendrew
    antwortet
    Dafür müsstest du dein SQL Statement anpassen.
    Anstatt:
    PHP-Code:
    $sql "SELECT * FROM Inhalte"
    Wäre das dann irgendwie so etwas:
    PHP-Code:
    $sql "SELECT * FROM Inhalte WHERE id=".$_GET['id']; 
    Dadurch liest du nur die Daten aus, die du auch wirklich auf dieser Seite benötigst.
    Dann kannst du das mit dem Titel auch so machen, wie du es geschrieben hast.

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    Danke dir

    Also mal schauen, ob ich das so richtig verstanden habe...

    Stimmt das so für die Verbindung?
    Und wo genau kommt dieser Code dann hin, ganz oben in den Body?

    PHP-Code:
    <?php
    $conn 
    mysql_connect("localhost""d005dfde""passwort")
        or die(
    "Keine Verbindung möglich: " mysql_error());

    $sql "SELECT * FROM Inhalte";

    $result mysql_query($sql) or die(mysql_error());

    $row mysql_fetch_array($result);
    ?>
    PHP-Code:
    <title><?php echo $row['Titel']; ?></titel>
    Und wie gebe ich dann die richtige ID für die richtige Seite aus, dass bei index.php?id=17 auch die Seite mit der ID 17 aufgerufen wird?

    Wäre das für den Seitentitel zum Beispiel richtig?

    Einen Kommentar schreiben:


  • XraYSoLo
    antwortet
    da du ja ein kollege bist, mach' ich mal 'ne ausnahme in sachen fertigem code. du brauchst eine funktion, die das ganze zeugs aus der datenbank 'rausholt, mysql_fetch_array():

    PHP-Code:
    <?php
    $conn 
    mysql_connect(); //hier die verbindungsdaten

    $sql "SELECT * FROM table"//die abfrage

    $result mysql_query($sql) or die(mysql_error()); //der ausführbefehl

    $row mysql_fetch_array($result);
    ?>
    so, jetzt kannst du die daten verwenden:

    PHP-Code:
    <?php
    echo $row['row_name'];
    //usw.
    ?>
    in diesem falle gilt: spaltenname = array-inhalt.

    Nils aka XraYSoLo

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    Noch mehr Problembeschreibung?

    Ich brauche einfach nur meinen Code, mit dem ich die entsprechenden Sachen wie Inhalte und Seitentitel an der richtigen Stelle aus meiner Datenbank auslesen kann.

    Das ist mein Code bisher:

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <title>Titel - domain.de</title>
    <link rel="shortcut icon" href="favicon.ico" />
    <link rel="stylesheet" type="text/css" href="css/blau.css"/>
    <script type="text/javascript">
    <!--
    window.onload=montre;
    function montre(id) {
    var d = document.getElementById(id);
        for (var i = 1; i<=10; i++) {
            if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
        }
    if (d) {d.style.display='block';}
    }
    //-->
    </script>
    </head>
    <body>
    <div id="banner"></div><div id="footer"></div>
    <div id="navigation">
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php">Startseite</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Über dieses Projekt</a></span>
    <dt onclick="javascript:montre('smenu2');"><span class="spannavi"><a tabindex="0" class="navielement"  href="#">Inhalte</a></span></dt>
    <dd id="smenu2">
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 1 &laquo;</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 2 &laquo;</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 3 &laquo;</a></span>
    </dd>    
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">nützliche Links</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Gästebuch</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Kontakt</a></span>
    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Statistik</a></span>
    </div>
    <div id="inhalt"><h1>mf-89.com</h1>
    <h2>Die Startseite</h2>
    <p class="erster">Dies hier wird die Startseite ergeben.</p>
    
    <hr /><?php include("counter.php"); ?>
     </div></body></html>
    Wie muss der dann aussehen?

    Ich frage ja extra hier nach, weil mein Thread bei phpfriend geschlossen wurde

    Einen Kommentar schreiben:


  • PsychoEagle
    antwortet
    Zitat von Maxi Beitrag anzeigen
    Dafür bräuchte ich einen Code, damit kenne ich mich leider gar nicht aus.....
    Ein wenig mehr Eigeninitiative und genauere Problemschilderung wäre sehr hilfreich für eine gute Hilfe.

    Vorneweg, für Komplettlösungen und Vorkauen von Einzelheiten bist du hier falsch. Wenn die nötige Vorkenntnis fehlt, erst mal paar Tutorials durcharbeiten oder sich ein wenig anderweitig schlau machen und bei konkreten Problemen nachfragen.

    Womit kennst du dich nicht genau aus? Falls es an Kenntnissen fehlt wie gesagt, Tutorials, Fertige Sachen (CMS wie Typo3, Templatesysteme, etc), ...

    (siehe auch: Inhalte in einer Datenbank speichern - phpfriend.de)

    Grüße
    Da Psy

    Einen Kommentar schreiben:


  • Nendrew
    antwortet
    Also als erstes musst du dir dafür ein template anlegen, in welchem du dann variablen für den titel und den einhalt einträgst.
    das sieht dann in etwa so aus:
    Code:
    <html>
     <head>
      <title>{titel}</title>
     </head>
     <body>
     {inhalt}
     </body>
    </html>
    Natürlich kannst du hier jegliche komplexität in diese Datei mit aufnehmen.
    Anschließend ersetzt du dann einfach diese variablen mit PHP: str_replace - Manual
    und gibst das ergebnis aus.
    Hoffe du kommst damit klar.

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    Danke.
    Also angelegt habe ich diese Tabelle jetzt. Ging jetzt auch Problemlos.

    Nun der nächste Punkt:
    Wie kann ich das in der PHP-Datei jetzt auslesen?

    Und zwar so, dass der Titel, der in der DB im Feld Titel eingetragen ist zwischen <title> und </title> erscheint und das, was innerhalb des Inhalts-Feldes steht als Inhalt ausgegeben wird.

    Dafür bräuchte ich einen Code, damit kenne ich mich leider gar nicht aus.....

    Einen Kommentar schreiben:


  • Montellese
    antwortet
    Also in der zweitletzten Zeile des Queries ist ein Fehler, da fehlt ein E bei INTEGER. Aber sonst sieht das ganz gut aus! In phpMyAdmin kannst du die Tabellen auch automatisch erstellen lassen. Aber wenn du SQL lernen/üben willst, ist es ganz gut, wenn du es selber machst.

    Natürlich kannst du den Inhalt von einer DB in einen anderen kopieren. Es gibt aber keinen direkten Befehl dafür. Wenn du es manuell per Script machen willst, musst du dich schon stärker mit SQL beschäftigen, damit alli Kollationen, die auto_increments, Primary Keys etc korrekt übernommen werden.....

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    Zitat von Montellese Beitrag anzeigen
    Du setzt den Typ des Feldes z.B. auf INTEGER! Wenn der Text sichtbar sein soll, schreibst du dort den Wert 1 (wie true) rein und wenn du eine Seite sperren willst, schreibst du 0 (wie false) rein.
    Danke, werd ich so mal versuchen.
    Zitat von Montellese Beitrag anzeigen
    Du kannst z.B. in phpMyAdmin eine komplette Datenbank mit der "Exportieren"-Funktion in ein .sql-File speichern (oder auch komprimieren etc) und dann in einer anderen Datenbank (auf einem anderen Server) einfach mit der "SQL"-Funktion die Datei laden und dann wird automatisch die ganze Datenbankstruktur, die du gespeichert hast, dort wieder erstellt.
    Kann ich zum Beispiel auch einfach die ganzen Inhalte aus DB 1 kopieren und in die zweite einfügen?

    Ist dieser Code hier richtig, um die Tabelle in der DB anzulegen?
    Code:
    CREATE TABLE Inhalte
    (
        ID     INT AUTO_INCREMENT PRIMARY KEY,
        Titel  VARCHAR(60),
        Inhalt TEXT,
        Aktiv INTEGR
    );
    Wenn nicht richtig, wie müsste der dann lauten?

    Einen Kommentar schreiben:


  • Montellese
    antwortet
    Zitat von Maxi Beitrag anzeigen
    Das Feld sichtbar/unsichtbar, wie mach ich das? Auch mit Text zum eintragen? oder wie sonst? Die restlichen Felder sind klar.
    Du setzt den Typ des Feldes z.B. auf INTEGER! Wenn der Text sichtbar sein soll, schreibst du dort den Wert 1 (wie true) rein und wenn du eine Seite sperren willst, schreibst du 0 (wie false) rein.

    Zitat von Maxi Beitrag anzeigen
    Kann man mit Inhalten einer Datenbank genau so leicht zu einem anderen Webspace umziehen, wie mit den restlichen Dateien, die auf dem server liegen? Also einfach aus der einen Datenbank rausnehmen und in die andere einfügen?
    Du kannst z.B. in phpMyAdmin eine komplette Datenbank mit der "Exportieren"-Funktion in ein .sql-File speichern (oder auch komprimieren etc) und dann in einer anderen Datenbank (auf einem anderen Server) einfach mit der "SQL"-Funktion die Datei laden und dann wird automatisch die ganze Datenbankstruktur, die du gespeichert hast, dort wieder erstellt.

    Einen Kommentar schreiben:

Lädt...
X