Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem: Fehlerhafte Ausgabe von HTML-Code / Variablen (dringend!)

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Problem: Fehlerhafte Ausgabe von HTML-Code / Variablen (dringend!)

    Guten Morgen!

    Für eine Website habe ich einen internen Loginbereich mit PHP und SQL-Anbindung geschaffen. Momentan bereitet mir die Ausgabe des HTML Gerüsts und die Ausgabe der Variablen Kopfzerbrechen. Bekomme es einfach nicht zum Laufen und bin am Verzweifeln, da ich nicht weiß, woran es liegt... Hier der Code der 'internen' Seite:

    Datei: intern.php
    PHP-Code:
    <?php
    require_once("functions.php");
    require_once(
    "db_config.php");
    session_start();
    if (
    logged_in() == true) {
        
    $logout '<a href="logout.php" title="Logout"><div id="login-button"><img src="img/icon-login.png" alt="Logout"><h2>Logout</h2></div></a>';
    } else {
        
    $logout '';
    }
    if (
    logged_in() == false) {
        
    redirect_to("index.php?login=false");
    } else {
        if (isset(
    $_GET['id']) && $_GET['id'] != "") {
            
    $id $_GET['id'];
        } else {
            
    $id $_SESSION['user_id'];
        }
     
            
    $mysqli = new mysqli(DB_HOSTDB_USERDB_PASSDB_NAME);

            if (
    $mysqli->connect_errno) {
                echo 
    "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
                exit();
            }

            
    $sql "SELECT * FROM users WHERE id = {$id} LIMIT 1";
     
            if (
    $result $mysqli->query($sql)) {
                
    $user $result->fetch_array();
            } else {
                echo 
    "<p>MySQL error no {$mysqli->errno} : {$mysqli->error}</p>";
                exit();
            }
     
            if (
    $result->num_rows == 1) {
            echo 
    "{$user['id']}";
            
    $username "{$user['username']}";
            
    $first_name "{$user['first_name']}";
            
    $last_name "{$user['last_name']}";
            
    $video "{$user['video']}";
            
    $text "{$user['text']}";
            } else {
                
    $error 'Error';
            }
    }
    ?>

    <html lang="de">
    <head>
    ...
    </head>
    <body>

    <? $first_name ?><? $last_name ?><? $video ?><? $text ?>

    </body>
    </html>
    Zur Erklärung: Als erstes wird der Login-Status abgefragt (das klappt soweit auch). Wenn positiv, dann wird zur SQL DB connected (die Verbindung passt, hier kann auch nicht der Fehler liegen). Anschließend werden die abgefragten Werte in einem Array gespeichert, die einzelnen Array-Teile wollte ich in Variablen packen, die ich dann im folgenden HTML-Code ausgeben möchte - macht das von der Logik Sinn?

    Probleme:
    - Die Variablen, die ich oben definiert und im <body> eingesetzt habe, werden nicht ausgegeben
    - Entferne ich "echo "{$user['id']}";" erfolgt als Ausgabe eine leere Seite
    - Lasse ich "echo "{$user['id']}";" drin, wird es natürlich vor der HTML-Seite ausgegeben, aber die Seite wird immerhin ausgegeben

    Ich habe auch schon probiert, das komplette HTML-Gerüst an gleicher Stelle wie "echo "{$user['id']}";" mit einem echo ausgeben zu lassen -> leere Seite.

    Bin mit meinem Latein am Ende... kann mir jemand helfen?

    Viele Grüße

  • phpnewcomer014
    antwortet
    Ok, hat sich erledigt. Hab's nun hinbekommen. Das echo war an der Stelle scheinbar doch nicht notwendig...

    DANKE für eure schnelle Hilfe!

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Wie meinst du hochgesetzt?
    PHP-Code:
    error_reporting ( -);
    ini_set 'display_errros'true ); 

    Einen Kommentar schreiben:


  • phpnewcomer014
    antwortet
    Zitat von Tropi Beitrag anzeigen
    1. Ist das Error-Reporting hochgesetzt? Wenn $video nicht ein Leerstring oder false ist, dann müsste echo $video eine Notice werfen, wenn du keine Ausgabe bekommst.
    2. Schaust du dir $error überhaupt irgendwo an? Vielleicht gabs ja einen. (Du könntest anstatt $error = "Error" auch einfach "Error" ausgeben und das Skript beenden.)
    Wie meinst du hochgesetzt? Eigentlich ist der Error (glaube ich) ziemlich sinnlos an der Stelle. Wollte da evtl. später eine Rückumleitung einbauen, falls irgendetwas nicht funktioniert.

    ABER, ich denke, ich komme dem Problem allmählich auf die Schliche:

    Wenn ich eine Ausgabe in diesem Teil habe (hier User-ID):

    PHP-Code:
            if ($result->num_rows == 1) {
                echo 
    $user['id'];
                
    $username $user['username'];
                
    $first_name $user['first_name'];
                
    $last_name $user['last_name'];
                
    $video $user['video'];
                
    $text $user['text'];
            } else {
                
    $error 'Error';
            } 
    dann wird die Seite korrekt angezeigt mit allen Variablen die im HTML verbaut sind. Sobald ich das echo oben allerdings entferne und eine Variable für die User-ID definiere, wird wieder eine leere Seite ausgespuckt.
    Irgendwie zwingt mich das PHP an der Stelle dazu, etwas auszugeben, sonst bricht es ab - stimmt das? Woran liegt das? Kann ich das Problem umgehen?

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Öhöm... Kann man sich alles sparen, wenn man das hier richtig macht:
    PHP-Code:
    <? echo $video; ?>


    Au verdammt... Irrtum bemerkt, sorry!
    Geht auch ohne = oder php! Nehme das oben geschriebene zurück und verweise auf Tropi

    Einen Kommentar schreiben:


  • Tropi
    antwortet
    1. Ist das Error-Reporting hochgesetzt? Wenn $video nicht ein Leerstring oder false ist, dann müsste echo $video eine Notice werfen, wenn du keine Ausgabe bekommst.
    2. Schaust du dir $error überhaupt irgendwo an? Vielleicht gabs ja einen. (Du könntest anstatt $error = "Error" auch einfach "Error" ausgeben und das Skript beenden.)

    Einen Kommentar schreiben:


  • phpnewcomer014
    antwortet
    Danke für die schnelle Hilfe, aber es funktioniert leider noch immer nicht...

    Habe nun die Variablen so definiert:

    PHP-Code:
            if ($result->num_rows == 1) {
                
    $user-id $user['id']};
                
    $username $user['username'];
                
    $first_name $user['first_name'];
                
    $last_name $user['last_name'];
                
    $video $user['video'];
                
    $text $user['text'];
            } else {
                
    $error 'Error';
            } 
    und im HTML unten:

    PHP-Code:
    <? echo $video; ?>
    ist das nun korrekt?
    Bekomme leider immer eine leere Seite zurück...

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    PHP-Code:
    echo "{$user['username']}"
    funktioniert schon, aber sinnvoll finde ich das auch nicht! Wäre nicht abgeneigt ein Beispiel gezeigt zu bekommen, wo dies erforderlich wäre?
    Der meiner Meinung nach korrekte und saubere Weg ist der, den tkausl gezeigt hat!

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    Zitat von Tropi Beitrag anzeigen
    ? String-Interpolation mit assoziativen bzw. mehrdimensionalen Arrays geht eben nicht anders. Obwohl man hier natürlich keine String-Interpolation bräuchte.
    Das ist mir schon klar, aber Konkatenation ist ohnehin besser, vorallem der Lesbarkeit zuliebe.

    Einen Kommentar schreiben:


  • Tropi
    antwortet
    Zitat von tkausl Beitrag anzeigen
    Wo hast du das denn bitte gelernt? Ich habe ja schon viel gesehn, aber DAS sprengt meine Vorstellung. Eine Variable (In dem fall Array) Spricht man SO an:
    ? String-Interpolation mit assoziativen bzw. mehrdimensionalen Arrays geht eben nicht anders. Obwohl man hier natürlich keine String-Interpolation bräuchte.

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    #1:
    PHP-Code:
    echo "{$user['id']}"
            
    $username "{$user['username']}"
            
    $first_name "{$user['first_name']}"
            
    $last_name "{$user['last_name']}"
            
    $video "{$user['video']}"
            
    $text "{$user['text']}"
    Wo hast du das denn bitte gelernt? Ich habe ja schon viel gesehn, aber DAS sprengt meine Vorstellung. Eine Variable (In dem fall Array) Spricht man SO an:
    PHP-Code:
    echo $user['id']; //Richtig
    echo "{$user['id']}"//Falsch
    $username $user['username']; //Richtig
    $username "{$user['username']}"//Falsch 

    Und
    PHP-Code:
    <? $first_name ?>
    tut einfach nur garnichts.

    Einen Kommentar schreiben:

Lädt...
X