Hi,
ich arbeite gerade am Episodenguide meiner Seite und habe nun ein Problem. Die Episodentitel werden immer richtig ausgelesen aber statt der Beschreibungen, Ausstrahlungsdatum und anderen Infos wird immer "1" angezeigt. Die Spalten sind schon auf Text gestellt. Hier mal der Link zur Seite: Link
Keine korrekte Anzeige der mysql-Daten
-
-
ohne quelltext keine hilfe möglich
-
Habe eben mal ein echo vor die Abfrage gepackt und nun wird zumindestens etwas ausgelesen. Aber es wird immer noch eine 1 davor gestzt. Neue Daten kann ich übrigens auch nicht hinzufügen, denn sie werden beim import von der csv-Datei einfach irgnoriert als wenn ich gar nichts importiert hätte.
So, und nun der Quelltext der ersten Abfragen:PHP- <?php
- echo $result = mysql_query($abfrage) OR die(mysql_error());
- while($row = mysql_fetch_assoc($result)) {
- echo $row['ID'];
- }
- ?>
- <strong>| Staffel </strong>
- <?php
- echo $result = mysql_query($abfrage) OR die(mysql_error());
- while($row = mysql_fetch_assoc($result)) {
- echo $row['Staffel'];
- }
- ?>
- <strong>| PCode:</strong>
- <?php
- echo $result = mysql_query($abfrage) OR die(mysql_error());
- while($row = mysql_fetch_assoc($result)) {
- echo $row['PCode'];
- }
- ?>
-
wenn du keine verbindung zur datenbank herstellst, kann auch nichts kommen.
auch ist es überflüssig bei der variablen row immer wieder 'ne neue abfrage zu machen.
du solltest erstmal ein wenig zeit investieren und programmieren lernen bzw. üben
-
Zitat
Original von fry-bart
wenn du keine verbindung zur datenbank herstellst, kann auch nichts kommen.auch ist es überflüssig bei der variablen row immer wieder 'ne neue abfrage zu machen.
du solltest erstmal ein wenig zeit investieren und programmieren lernen bzw. üben
Die Verbindung habe ich hier nur nicht mit reingeschrieben. Ohne Verbindung würden ja auch nicht die Episodentitel da stehen. Die Abfrage habe ich auch rausgelassen aber hier ist sie nochmal:
Ingesammt wäre der Quelltext zu lang um in hier zu zeigen.
Dass ich immer alles neu geschrieben habe, war für mich irgedwie übersichtlicher, weil es dann mein Editor besser angezeigt hat. Eben weil ich kein php auf meinem Rechner installiert habe. -
erstens ist das auch übersichtlich:
PHP2. ist langer quelltext manchgmal von nöten um überhapt eine idee davon zu bekommen, was passiert
-
ok hier der komplette quelltext und ich meine mit der Übersicht auch die, die man im Vorschaufebster sehen kann oder wwenn man die datei auf seinem pc öffnet um abgesehne von der daten aus der dateinbank eine gesammtüberblick von der seite zu bekommen.
PHP- <?php
- include("../dbconnect.php");
- ?>
- <html>
- <head>
- <title>Episoden_detail</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <style type="text/css">
- <!--
- body {
- background-color: #958BFB;
- }
- body,td,th {
- font-family: Comic Sans MS;
- }
- .Stil7 {font-size: 18px}
- .Stil9 {font-size: 12px}
- -->
- </style></head>
- <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
- <?php
- $abfrage = "SELECT * FROM AmericanDad WHERE ID='$_GET[id]'";
- if(gettype($_GET["id"])=="integer" AND $_GET["id"]>=0) {
- // do
- }
- else {
- // benutzerdefinierte eingabe geblockt
- }
- $zurück = $_GET ['id'] - 1;
- $weiter = $_GET ['id'] + 1;
- include("navi.php");
- ?>
- <!-- ImageReady Slices (Toon_Fan_episoden_detail.psd) -->
- <table width="696" height="379" border="0" align="center" cellpadding="0" cellspacing="0" id="Tabelle_01">
- <tr>
- <td colspan="2" rowspan="2"> </td>
- <td colspan="5">
- <img src="../Bilder/episoden_detail_02.gif" width="456" height="18" alt=""></td>
- <td colspan="3" rowspan="2"> </td>
- <td width="38">
- <img src="../Bilder/Abstandhalter.gif" width="1" height="18" alt=""></td>
- </tr>
- <tr>
- <td width="23" rowspan="6">
- <img src="../Bilder/episoden_detail_04.gif" width="23" height="107" alt=""></td>
- <td colspan="3" rowspan="2" bgcolor="#FFFFFF"><div align="center">
- <span class="Stil7">
- <?php
- $result = mysql_query($abfrage) OR die(mysql_error());
- while($row = mysql_fetch_object($result)) {
- echo $row->Orginaltitel;
- ?>
- </span>
- <br>
- <span class="Stil9">(
- <?php
- echo $row->Orginaltitel;
- ?>
- )</span></div></td>
- <td width="28" rowspan="6">
- <img src="../Bilder/episoden_detail_06.gif" width="28" height="107" alt=""></td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="1" height="11" alt=""></td>
- </tr>
- <tr>
- <td colspan="2" rowspan="4"> <a href="episoden_detail.php?id=
- <?php
- echo "$zurück";
- ?>
- ">
- <img src="../Bilder/episoden_detail_07.gif" border="0"></a>
- <td colspan="3" rowspan="4"> <a href="episoden_detail.php?id=
- <?php
- echo "$weiter";
- ?>
- ">
- <img src="../Bilder/episoden_detail_08.gif" border="0"></a></td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="1" height="30" alt=""></td>
- </tr>
- <tr>
- <td width="55" rowspan="4">
- <img src="../Bilder/episoden_detail_09.gif" width="55" height="66" alt=""></td>
- <td>
- <img src="../Bilder/episoden_detail_10.gif" width="297" height="13" alt=""></td>
- <td rowspan="4">
- <img src="../Bilder/episoden_detail_11.gif" width="53" height="66" alt=""></td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="1" height="13" alt=""></td>
- </tr>
- <tr>
- <td bgcolor="#F3F478"><div align="center"><strong># </strong>
- <?php
- echo $row->ID;
- ?>
- <strong>| Staffel </strong>
- <?php
- echo $row->Staffel;
- ?>
- <strong>| PCode:</strong>
- <?php
- echo $row->PCode;
- ?>
- </div>
- </td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="1" height="33" alt=""></td>
- </tr>
- <tr>
- <td width="297" rowspan="2">
- <img src="../Bilder/episoden_detail_13.gif" width="297" height="20" alt=""></td>
- <td width="38">
- <img src="../Bilder/Abstandhalter.gif" width="1" height="8" alt=""></td>
- </tr>
- <tr>
- <td colspan="2">
- <img src="../Bilder/episoden_detail_14.gif" width="101" height="12" alt=""></td>
- <td colspan="3">
- <img src="../Bilder/episoden_detail_15.gif" width="101" height="12" alt=""></td>
- <td width="38">
- <img src="../Bilder/Abstandhalter.gif" width="1" height="12" alt=""></td>
- </tr>
- <tr>
- <td background="../Bilder/epi_oben_links.gif"> </td>
- <td colspan="8" align="left" valign="top" bgcolor="#FFFFFF">
- <p>
- <?php
- echo $row->Beschreibung;
- ?>
- </p>
- -----------------------------------------------------------------------------------<br>
- <strong>Erstausstrahlung USA:
- </strong>
- <?php
- echo $row->Premiere_USA;
- ?>
- </p>
- <p><strong>Erstausstrahlung Deutschland:
- </strong>
- <?php
- echo $row->Premiere_DE;
- }
- ?>
- </p></td>
- <td width="39" background="../Bilder/epi_oben_rechts.gif"> </td>
- <td width="38">
- <img src="../Bilder/Abstandhalter.gif" width="1" height="66" alt=""></td>
- </tr>
- <tr>
- <td colspan="10">
- <img src="../Bilder/episoden_detail_19.gif" width="658" height="74" alt=""></td>
- <td width="38">
- <img src="../Bilder/Abstandhalter.gif" width="1" height="74" alt=""></td>
- </tr>
- <tr>
- <td width="36" background="../Bilder/epi_unten_links.gif"> </td>
- <td colspan="7" valign="top" bgcolor="#FFFFFF">
- <?php virtual("../epi_comments/comments.php"); ?>
- </td>
- <td colspan="2" background="../Bilder/epi_unten_rechts.gif"> </td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="1" height="134" alt=""></td>
- </tr>
- <tr>
- <td colspan="10">
- <img src="../Bilder/episoden_detail_23.gif" width="658" height="22" alt=""></td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="1" height="22" alt=""></td>
- </tr>
- <tr>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="36" height="1" alt=""></td>
- <td width="65">
- <img src="../Bilder/Abstandhalter.gif" width="65" height="1" alt=""></td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="23" height="1" alt=""></td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="55" height="1" alt=""></td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="297" height="1" alt=""></td>
- <td width="53">
- <img src="../Bilder/Abstandhalter.gif" width="53" height="1" alt=""></td>
- <td>
- <img src="../Bilder/Abstandhalter.gif" width="28" height="1" alt=""></td>
- <td width="56">
- <img src="../Bilder/Abstandhalter.gif" width="56" height="1" alt=""></td>
- <td width="6">
- <img src="../Bilder/Abstandhalter.gif" width="6" height="1" alt=""></td>
- <td width="39">
- <img src="../Bilder/Abstandhalter.gif" width="39" height="1" alt=""></td>
- <td></td>
- </tr>
- </table>
- <!-- End ImageReady Slices -->
- </body>
- </html>
Wie gesagt sind da auch ein paar überflüssige dinge drin aber es geht ja hier nur um die datenbank.EDIT: Ich habe den Quelltext nochmal so reingeschrieben wie er jetzt gespeichert ist.
-
$_get ['id'] zu $id
mysql_fetch_assoc zu mysql_fetch_object
$row['...'] zu $row->...
negative ids und zu hohe ids möglich
ich würde noch viel mehr anders machen
-
Sehr, sehr unsicher:
Checke mal, ob $_GET["id"] überhaupt ein Integer ist.
Verwende hierzu gettype().
Minuszahlen solltest du auch abfangen:Das Abfragen des Types ist sehr wichtig, da man sonst, mit ein bisschen Wissen oder ein bisschen googlen deine Datenbank löschen könnte --> Stichwort: Mysql Injection.
Wäre ja nicht unbedingt gut?
Wenn das Skript mit Fry-Bart's Hilfe noch nicht geht, kannst ja noch einmal schreiben, dann schaue ich's mir genau an, ich habe jetzt nur sofort diese Sicherheitslücke gesehen.
Ansonsten könnte ich dir noch empfehlen, erstmal gutes HTML und CSS zu lernen, ich setze dies eigentlich für PHP/MYSQL vorraus.
Dazu empfehle ich dir gleich ein Buch, was ich für sehr gut empfinde, wenn man interesse hat, mehr in Richtung Barrierefrei, bzw. Semantischen Code zu gehen:
http://www.amazon.de/exec/obid…98427358/einfachperson-21Mit freundlichen Grüßen,
DaniP.S.: Weil ich's grad sehe, mach diese immer wiederholte while-Schleife raus!
fry-bart hat eh oben geschrieben, wie du es machen kannst.
-
Vielen Dank für die Tipps!
Das mit der mysql-Injection habe ich auch schon gelesen, nur bin ich ersteinmal bei diesem Problem mit der falschen Ausgabe stehengeblieben. Den Code werde ich mal einbauen, aber dass dann eine richtige Ausgabe kommt hat damit doch nichts zu tun, sondern nur mit der Sicherheit? -
Nur mit der Sicherheit ja, ich werde mir das Script nochmal durchschauen, beziehungsweise offline testen.
-
So, das Problem ist gelöst! Ich habe einfach wie schon gesagt die while-Schleifen rausgenommen und siehe da: Es funktioniert! Ich habe den Quelltext nochmal im vorigen Threat aktualisiert. Nun muss ich nur noch wissen warum die neuen Daten nicht übernommen und gespeichet wurden.
EDIT: Auch das zweite Problem ist gelöst. Ich habe einfach mal die Tabelle geleert und die fertige csv wieder importiert und nun funktioniert alle prima. Ist nur etwas aufwendig wenn man mal ein paar neue Spalten hinzufügen will.