Einbindung einer stupiden mySQL Datenbank will nich...

  • Hallo liebe Comunity,
    ich habe vor einigen Wochen eine HTML und CSS Website erstellt, in die ich nun eine mySQL DB mit hilfe von PHP einfügen möchte. Ich habe mir dazu Tutorials angesehen und alles wie dort beschrieben nachgebaut. Mein Problem ist, dass ich zwar keine Fehlermeldung jedoch auch keine Ausgabe Bekomme. Woran liegt das? (wahrscheinlich bin ich nur zu blöd den Fehler zu erkennen...)


    Hier die meiner Ansicht nach relevanten Teile des Codes:


    Weiter unten in der Datei:


    Hier noch die functions.php und die config.php:


    Und die config.php:


    PS: Ich gehe davon aus, dass es bereits eine Antwort auf die Frage giebt, ich habe jedoch keine gefunden. Solltet ihr eine finden, reicht ein Verweis darauf. Solltet ihr mehr informationen benötigen, sagt bescheid!


    EIN GAAAAAANZ GROßES Dankeschön schon jetzt, allen die sich gedanken machen / gemacht haben! ;)

  • probier doch mal

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von wolf ()

  • Empfehlung:

    PHP
    1. # anstatt:
    2. $sql = 'SELECT `artikel` FROM `aktuelles` WHERE `slug` = "'.mysqli_real_escape_string($pagename).'" ASC;';
    3. #mMn besser:
    4. $sql = "SELECT `artikel` FROM `aktuelles` WHERE `slug` = '".mysqli_real_escape_string($pagename)."' ASC;";


    Also in der Sql-Query Werte mit einfachem Anführungszeichen. (ist aber Geschmackssache)


    Wenn kein Fehler, dann kann es sein, dass zb " page " rein kam. also der Wert in der db nicht existiert.
    Oder Groß/-Kleinschreibung ... ect.


    Einfach mal die Query ausgeben lassen (echo $sql) und direkt anwenden, um zu sehen ob es denn etwas zu SELECTen gibt =)
    (SELECT gibt keinen Fehler aus, wenn nichts "gefunden" wurde.)

  • Vielen Dank für die Antworten, ich werde mich morgen mal damit befassen, wenn ich Zeit und Ruhe habe! Nochmals vielen vielen Dank für die sau schnelle Antwort. Echt Cool.

  • Folgende 4 Fehler bekomme ich mit wolf's code leider immernoch:


    Warning: mysql_select_db() expects parameter 2 to be resource, object given in E:\xampp\htdocs\testwebsite\functions.php on line 14




    Deprecated: mysql_real_escape_string(): The mysql extension is
    deprecated and will be removed in the future: use mysqli or PDO instead
    in E:\xampp\htdocs\testwebsite\functions.php on line 16




    Warning: mysql_query() expects parameter 2 to be resource, object given in E:\xampp\htdocs\testwebsite\functions.php on line 18




    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in E:\xampp\htdocs\testwebsite\functions.php on line 20


    Hier der entsprechende Code:


    PHP
    1. <?php function lese_artikel($pagename) { //DB verfügbar machen global $DB; //eine verbindung aufbauen $verbindung = mysqli_connect($DB['host'], $DB['user'], $DB['password']); //Wenn verbindung FALSE if (!$verbindung){ die ("<article>Die Artikel k&ouml;nnen nicht geladen werden, da keine Verbindung mit der Datenbank hergestellt werden konnte!</article>"); } //Datenbank auswählen mysql_select_db ($DB['name'], $verbindung); //WÄHLE artikel VON aktuelles WO slug = 'seitenname'; $sql = 'SELECT `artikel` FROM `aktuelles` WHERE `slug` = "'.mysql_real_escape_string($pagename).'" ASC;'; //sql ausführen $res = mysql_query($sql, $verbindung); //Die Datensätze in ein array schreiben $array = mysql_fetch_assoc($res); //Den 1. artikel holen $content = $array[0]; //und zurrückgeben return $content; }?>


    Ich verstehe ehrlich gesagt niccht, warum das jetzt fehler sind?

  • ich glaube (ohne nachzuprüfen) Du mischt hier mysqli functions und mysql functions.
    die "alten" mysql sind depreciated (nicht empfohlen/veraltet) und die mysqli (i für improved) the way to go.


    Aber ... um es gleich von Anfang an richtig zu machen: prepared statements
    in deinem Fall:


    EDIT:
    Da war noch ein Fehler:

    SQL
    1. SELECT `artikel` FROM `aktuelles` WHERE `slug` = :pagename ASC;
    2. // SELECT .. FROM ... WHERE ... ORDER BY xyz ASC/DESC
    3. // also richtig:
    4. SELECT `artikel` FROM `aktuelles` WHERE `slug` = :pagename ORDER BY `dasNachDemDuSortierenWillst` ASC;

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von cottton ()

  • Cool :D , ein vertiger Qellcode währe ganicht nötig gewesen, aber geil DANKE, mal sehen, wenn ich noch Probleme habe, melde ich mich nochmal.
    Vielen DANK nochmal an alle für alles... 8|


    PS: Ich kann ORDER BY doch auch weglassen oder?

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von Jan_Ph ()

  • Sagen wir es so, du solltest eine Datums spalte anlegen und dann oder by 'datum' ASC ... Damit der neueste Eintrag zuerst ausgegeben wird.

  • Hallo alle zusammen,
    da ich erst kürzlich in PHP eingestiegen bin, muss ich zugeben, dass mich der Code von cotton etwas in der Hinsicht verwirrt, dass ich oft nicht weiß, was als recource eingegeben werden soll und wofür man das braucht, ich kann verstehen, wenn ihr jetzt denkt, das ich wahrscheinlich keine Ahnung von nichts habe, aber ich blicke einfach an einigen Stellen nicht durch.


    Hier fndet ihr nochmal den von mir kommentierten Code von cotten, sollte etwas falsch oder mit ? kommentiert sein, erklährt es mir bitte.


    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von Jan_Ph ()

  • Ich glaub ich hab da Dein und wolfs code gemischt :D sorry,


    Fragen ist immer gut. Man muss verstehen, was der Code macht.
    Ich hoffe ich konnte das hier verständlich erklären :D


    Zusätzlich solltest Du Dir das hier mal ansehen: Prepared Statements und Stored Procedures

  • Oder einfach ertsmal mit altem mysqli arbeiten.. cotton, ich denke PDO ist zu viel... versuche mal den Code von mir oben wirklich 1:1 übernehmen und schauen.!!! (nichts auser tabellen und spaltennamen ändern).
    Wenn du keine date spalte hast musst du im $sql am ende das `date` mal durch `slug` ersetzen.

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von wolf ()

  • Hallo, ich habe den neuen Code von cotton nochmal ausprobiert, und wie es scheint läuft er. Ich habe ihn außerdem im Groben verstanden. Jedoch habe ich noch folgende Frage, von der wie ich glaube auch die folgenden Fehlermeldungen herrühren: Wie muss ich mit der Variablen $pagename umgehen ? Ihr könnt es mir gerne in den Code schreiben.


    Hier die Fehlermeldungen:


    Notice: Undefined index: page in E:\xampp\htdocs\testwebsite\aktuell.php on line 6


    Notice: Undefined variable: pagename in E:\xampp\htdocs\testwebsite\aktuell.php on line 95


    Deprecated: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in E:\xampp\htdocs\testwebsite\functions.php on line 30


    Notice: Undefined variable: table in E:\xampp\htdocs\testwebsite\functions.php on line 49


    PS: Nochmal vielen Dank :!: , ich habe das Gefühl, dass es nun funkt. :whistling:

  • So,


    nun da ich alles noch einmal korrigiert habe, sind 3 der Fehler verschwunden,
    einer wegen der Adresse und einer wegen doppelgemoppel oder wie ihr das nennt.


    Folgender bleibt vorhanden:




    Notice: Undefined variable: table in E:\xampp\htdocs\testwebsite\functions.php on line 49


    Der Code steht oben (letzter Beitrag von cotton, vor diesem).


    An sonsten funkts, GEIIIILLLLLLL!!!!!!! :thumbsup: :thumbsup: :thumbsup:

  • Poste doch mal den Code. Dann müssen wir nicht raten und in den Vergangenen Posts alles zusammen suchen =)


    "Notice: Undefined variable: table in" sagt aus, dass die var $table nicht definiert ist - also unbekannt / nicht gesetzt.

  • Hier der Code:



    Hier in Zeile 47.


    LG

  • k,
    Erstmal was wegen den Platzhaltern:

    SQL
    1. WHERE `slug` = "aktuell"


    Du brauchst dort nicht den Wert fest reinschreiben.
    Die Funktion erwartet $pagename. Also wird sicherlich im Script

    PHP
    1. getPage('aktuell')


    aufgerufen.


    Um den Wert jetzt in die Sql-Query zu bekommen nutzen wir die Platzhalter (zB :platzhalter oder :xyz):

    SQL
    1. WHERE `slug` = :pagename


    Dieser Platzhalter wird dann mit dem Wert ersetzt, den wir über die Parameter mitgeben:

    PHP
    1. $para = array(
    2. ':pagename' => $pagename
    3. // :pagename ist der platzhalter (könnte auch :a benannt werden), und $pagename ist die var welche wir in die funktion bekommen ( function getPage($pagename) )
    4. );



    $table:
    Copy/Paste Fehler.
    Wenn die Abfrage funktioniert hat, dann kommen wir ja zu diesem Punkt:


    Da Du hier nur einen Datensatz erwartest steckt "das Gesuchte" also im Array auf Ebene 0: $content[0]
    Und Du willst ja nur den Artikel zurückgeben, also:

    PHP
    1. return $content[0]["artikel"];



    hier nochmal alles zusammen:

  • UFFFFFFFFFFFFFFFFF :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!: :!:


    Ich kann meine Freude nicht in Worte fassen, DAAAAAANNNNNKEEEEEEE an ALLE es funktioniert.


    Wirklich an alle die mit gedacht haben und besonders "cotton" und "wolf" :love: die mir in den letzten Tagen sehr geholfen haben, auch im allgemeinen PHP und Programmier Verständnis. DANKE.


    LG Jan_Ph ^^


    Wer möchte kann sich mal meine Website ansehen, die Datenbank wird in den nächsten Tagen implementiert...


    PS: Ich weiß nicht ob nötig aber wenn kann der Artikel nun geschlossen werden.

  • Eine Frage habe ich noch, wie stelle ich es an, dass ich mehrere Zeilen anzeigen und nach Spalte Datum sortieren lasse?


    Letzteres ist klaar (mit: ...ORDER BY Datum...) aber wie geht ersteres, bei mir spuckte er immer nur eine bestimmte aus?


    Danke schoneinmal im Vorraus. :?: