Frage Falsche Verlinkung????

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Lu4ap

Neues Mitglied
7 März 2020
11
0
1
35
Hallo an alle,

ich habe ein kleines Problem. Wiedermal sehe ich den Fehler nicht oder ich habe einen komplett falschen Ansatz gewählt.

Ich schreibe mit Hilfe eines Formulars in die Datenbank und hole mir dann mit Hilfe des folgenden Codes die Daten aus der Datenbank.

startseite.php
Code:
<?php
if(isset($_GET['id']))
{
   // hier dann das Thema der id holen
    $id=htmlspecialchars($_GET['id']);
    include_once 'mysql.php';   
    $query="SELECT * FROM `upload` WHERE `id`='$id'";
    $result = mysqli_query($db_con, $query) or die ("MySQL-Error: " . mysqli_error($db_con));
    if (mysqli_num_rows($result)==1)
    {
           $row = mysqli_fetch_assoc($result);
        
              $id=htmlspecialchars($row['id']);
            $kat=htmlspecialchars($row['kat']);
            $tag=htmlspecialchars($row['tag']);
            $monat= htmlspecialchars($row['monat']);
            $jahr=htmlspecialchars($row['jahr']);
            $title=htmlspecialchars($row['title']);
            $image1=htmlspecialchars($row['image1']);
            $text1=htmlspecialchars($row['text1']);
        
            echo "<table align=center width=940 border=0>
                   <tr>
                   <td colspan=2><kattitel>$title</kattitel></td>
                   </tr>
                   <tr>
                   <td width=100><katseite>&nbsp;&nbsp;$kat&nbsp;&nbsp;</katseite></td>
                   <td><ktag>$tag.&nbsp;</ktag><kmonat>$monat</kmonat><kjahr>&nbsp;$jahr</kjahr></td>
                   <img src='images/$image1' width=175 height=101>
                   </tr>
                   <tr>
                   <td colspan=2>$text1</td>
                   </tr>
                 </table>";
        
    }
}
else
{
   // hier der ganze code den du jetzt schon auf der startseite hast ,wo die ganzen Theman gelisten werden
    include_once 'mysql.php';   
    $query="SELECT * FROM `upload` ORDER BY `id` DESC";
    $result = mysqli_query($db_con, $query) or die ("MySQL-Error: " . mysqli_error($db_con));
    echo "<div class='container'>";
    if (mysqli_num_rows($result)){
        while ($row = mysqli_fetch_assoc($result))
        {
            $id=htmlspecialchars($row['id']);
            $kat=htmlspecialchars($row['kat']);
            $tag=htmlspecialchars($row['tag']);
            $monat= htmlspecialchars($row['monat']);
            $jahr=htmlspecialchars($row['jahr']);
            $title=htmlspecialchars($row['title']);
            $image1=htmlspecialchars($row['image1']);
            $text1=htmlspecialchars($row['text1']);
            
            echo "<a href='index.php?id=$id'>
                     <div class='item'>
                         <table width=460px height=101px border=1>
                            <tr>
                                <td rowspan=2 width=30%><img src='images/$image1' width=175 height=101></td>
                                <td width=70% valign=top><br><titel>$title</titel></td>
                            </tr>
                            <tr>
                                <td><kategorie>&nbsp;&nbsp;$kat&nbsp;&nbsp;</kategorie><tag>&nbsp;&nbsp;&nbsp;$tag.</tag><monat>$monat</monat><jahr>&nbsp;$jahr</jahr></td>
                          </table>
                     </div>
                 </a>";
        }
    
    }
    echo "</div>";
    mysql_close($result);
}
?>
<center><div class='back_btn'><a href='index.php'>Zurück</a></div></center>
Das funktioniert auch wunderbar. Jetzt ist es so, dass ich in der Datenbank eine Spalte mit dem Namen "kat" für Kategorie habe. Nennen wir diese Kategorie einmal "News".

Wenn ich jetzt auf die Navigation gehe, dann hole ich mir mit folgendem Code nur die Daten aus der Datenbank wo "News" steht.

news.php
Code:
<?php
if(isset($_GET['id']))
{
   // hier dann das Thema der id holen
    $id=htmlspecialchars($_GET['id']);
    include_once 'mysql.php';   
    $query="SELECT * FROM `upload` WHERE `id`='$id'";
    $result = mysqli_query($db_con, $query) or die ("MySQL-Error: " . mysqli_error($db_con));
    if (mysqli_num_rows($result)==1)
    {
           $row = mysqli_fetch_assoc($result);
        
             $id=htmlspecialchars($row['id']);
            $kat=htmlspecialchars($row['kat']);
            $tag=htmlspecialchars($row['tag']);
            $monat= htmlspecialchars($row['monat']);
            $jahr=htmlspecialchars($row['jahr']);
            $title=htmlspecialchars($row['title']);
            $image1=htmlspecialchars($row['image1']);
            $text1=htmlspecialchars($row['text1']);
            $text1=htmlspecialchars($row['text2']);
        
               echo "<div class='news'>
                <table align=center width=940 border=0>
                   <tr>
                   <td colspan=2><kattitel>$title</kattitel></td>
                   </tr>
                   <tr>
                   <td width=100><katseite>&nbsp;&nbsp;$kat&nbsp;&nbsp;</katseite></td>
                   <td><ktag>$tag.&nbsp;</ktag><kmonat>$monat</kmonat><kjahr>&nbsp;$jahr</kjahr></td>
                   </tr>
                  
                   $text1
                   $text2
                   
                 </table>
                 <center><a href='index.php'><div class='back_btn'>Zurück</div></a></center>    
                </div>";
    }
}
else
{
   // hier der ganze code den du jetzt schon auf der startseite hast ,wo die ganzen Theman gelisten werden
    include_once 'mysql.php';   
    $query="SELECT * FROM `upload` WHERE KAT='News'";
    $result = mysqli_query($db_con, $query) or die ("MySQL-Error: " . mysqli_error($db_con));
    echo "<div class='container'>";
    if (mysqli_num_rows($result)){
        while ($row = mysqli_fetch_assoc($result))
        {
        $id=htmlspecialchars($row['id']);
            $kat=htmlspecialchars($row['kat']);
            $tag=htmlspecialchars($row['tag']);
            $monat= htmlspecialchars($row['monat']);
            $jahr=htmlspecialchars($row['jahr']);
            $title=htmlspecialchars($row['title']);
            $image1=htmlspecialchars($row['image1']);
            $text1=htmlspecialchars($row['text1']);
            
            echo "<a href='index.php?id=$id'>
                     <div class='item'>
                         <table width=470px height=101px border=1>
                            <tr>
                                <td rowspan=2 width=30%><img src='images/$image1' width=175 height=101></td>
                                <td width=70% valign=top><br><titel>$title</titel></td>
                            </tr>
                            <tr>
                                <td><kategorie>&nbsp;&nbsp;$kat&nbsp;&nbsp;</kategorie><tag>&nbsp;&nbsp;&nbsp;$tag.</tag><monat>$monat</monat><jahr>&nbsp;$jahr</jahr></td>
                          </table>
                     </div>
                 </a>";
        }
    }
    echo "</div>";
    mysql_close($result);
}
?>
Jetzt ist jedoch das Problem. Das in dem Formular zwei Text geschrieben habe. Diese werden mir auch in der Datenbank angezeigt. Jedoch wird mir bei "NEWS" nur einer angezeigt obwohl ich zwei geschrieben habe und auch in dem Code $text1 und $text2 klar definiert ist.

Es scheint so, als wenn er die Formatierung der Tabelle aus der startseite.php übernimmt. Nur ich habe absolut keine Ahnung warum er das macht?????

Würde mich über konstruktive Kritik freuen!
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
1.721
332
83
67
Der Grund scheint mir ziemlich einfach zu sein. Hier:
Code:
            $text1=htmlspecialchars($row['text1']);
            $text1=htmlspecialchars($row['text2']);
überschreibst Du in der zweiten Zeile den ersten Text. Vermutlich möchest Du zwei Variablen anlegen:
Code:
            $text1=htmlspecialchars($row['text1']);
            $text2=htmlspecialchars($row['text2']);
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.095
130
63
Mit

Richtig debuggen

  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
hättest du das selber herausfinden können. Besonders Punkt 2 und 3 wären da hilfreich gewesen.