Übersicht der Tabelleninhalte auf der HP

Silvestergirly

Grünschnabel
Hallo liebe Programmierfreunde,

Ich bin wirklich schlecht in PHP. Was wohl auch an unserer Dozenten liegt, die nach wirklich wenigen Wochen des Lernens (wobei der größte Teil aus einem online turorial bestand, das schwer zu verstehen war) verlangt, dass wir eine einfache Webanwendung mittels HTML, CSS, einer rationalen Datenbank, MySQL und PHP machen sollen.

Datenbank ist zum Glück fertig -> check!
Internetseite aufgeteilt -> check!
Verbindung mit Datenbank -> check!

Nun aber das Problem mit der Abfrage der Datenbank o_O

Auf meiner Seite soll man Bücher und Autoren mittels einer erstellen Liste anklicken können und dann die Informationen zu den jeweiligen Daten der jeweiligen Tabellen bekommen.
Die Anzahl der Abfragen soll sich auf zwischen 4 und 8 belaufen. (davon eine Joinabfrage, die 3 Tabellen umfassen muss)

was allein schon der Horror ist und ich mich frage wie ich auf einer Internetseite so viele Abfragen machen soll...:(:mad:

Zum Verständnis bzw. damit ich wenigsten anhand konrrekter Daten es lernen kann, habe ich die Beispiel Datenbank meiner Dozenten genommen, um der es um Veranstaltungen an unserer FH geht.

Zu meinem Problem:

Notice: Undefined index: id in D:\tools\portable\xampp\htdocs\dynamic\VorlesungsDB\php\veranstaltung.php on line 37
Fehler bei Datenbankabfrage: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1


Diese Fehlermeldung bekomme ich, wenn ich auf die sogenannte Veranstaltungsübersicht gehe, wo mir die ganzen Veranstaltungen angezeigt werden. Das sieht wie auf dem beigefügten Bild aus. Es funktioniert ja eig dass ich die Veranstaltungen anschauen kann und auch auf die (jeweiligen) Veranstaltungen klicken kann, aber trotzdem bekomme ich diese Fehlermeldung.o_O
Kann mir jemand helfen und mir aufzeigen wo da der Fehler ist und wie ich ihn beseitigen Kann?

Vielen lieben Dank schon einmal im Vorraus!!

Hier ist mein kompletter code meiner veranstaltung.php

PHP:
<h2>Veranstaltungsübersicht</h2>
<?php
$sql = "SELECT * FROM `veranstaltungen` ORDER BY `Veranstaltungsbezeichnung` ASC ";
$result=$tools->holeDaten($sql);
echo "<ul class=\"list-group\">";
/*
while($row = $result->fetch_array())
{
   echo "<li class=\"list-group-item list-group-item-warning\">
   <a href=\"index.php?x=edata&id=".$row[0]."\">".$row[1]."
   </a>&nbsp;&nbsp;&nbsp;&nbsp;
   <a href=\"index.php?x=edata&amp;action=removev&amp;id=".$row[0]."\">
   <i style=\"color:red\" class=\"glyphicon glyphicon-remove\"></i></a>
   <a href=\"index.php?x=editv&amp;id=".$row[0]."\">
   <i style=\"color:blue\" class=\"glyphicon glyphicon-pencil\"></i></a>
   </li>";
}
echo "</ul>";
*/

while($row = $result->fetch_array())
{
echo "<li class=\"list-group-item list-group-item-warning\">
<a href=\"index.php?x=showv&id=".$row[0]."\">".$row[1]."</a>
&nbsp;&nbsp;&nbsp;&nbsp;
<a href=\"index.php?x=edata&amp;action=removev&amp;id=".$row[0]."\">
<i style=\"color:red\" class=\"glyphicon glyphicon-remove\"></i></a>
<a href=\"index.php?x=editv&amp;id=".$row[0]."\">
<i style=\"color:blue\" class=\"glyphicon glyphicon-pencil\"></i></a>
</li>";
}
echo "</ul>";
?>
<div class="row">
<div class="col-md-12">
<?php
$sql = "SELECT * FROM `Veranstaltungen` WHERE idVeranstaltungen = ".$_GET['id'];
$result=$tools->holeDaten($sql);
echo "<ul class=\"list-group\">";
while($row = $result->fetch_array())
{
echo "<h2>".$row[1]."</h2>";
echo "<p>".$row[2]."</p>";
echo "<p>SWS ".$row[3]." Semester ".$row[4]."</p>";
}
echo "</ul>";
?>
</div>
</div> <!-- Ende Row -->
 

Anhänge

  • fehlermeldung.png
    fehlermeldung.png
    308,4 KB · Aufrufe: 10
Zuletzt bearbeitet:
Hi

die Fehlermeldung sagt was von Zeile 37 in der PHP-Datei, die gezeigte Datei hat aber nur 36 Zeilen :rolleyes:

PS: Uni != Schule. Bitte nicht auf die Dozenten schieben, dass man nach "Notice: Undefined index" googlen kann.

PPS: Kennst du SQL-Injections und XSS?
 
haha ok , kopieren sollte gelernt sein XD
gleich geändert!

PS: oh doch. KEINER checkt das wirklich , ALLE haben ihre Probleme. Das Problem ist, dass die Dozentin selber keine Ahnung hat oder es zumindestens so vermittelt. Als Beispiel: Montag ist Präsentation des Aktuellen Standes des Projektes. Seit letzter Woche in den Übungsstunden wird sie durchgehend mit Fragen belagert, wirklich durchgehend von so gut wie jedem. Sie hat die Sachen, wie unsere HP erfüllen soll, nie wirklich richtig erklärt, sonder immer so macht mal bzw. jetzt sollen wir als mindest Anforderung Sachen haben, die wir wirklich nie gemacht habe. Zudem kommt es, dass ihre Folien kreuz und quer sind und man keine Ahnung hat, was man damit eig macht, weil sie es nie erklärt hat. Sie hat uns den Aufbau von PHP und etc NIE erklärt sondern uns ein online Tutorial auf englisch machen lassen, was durch die Fachwörter etc für mich noch unverständlicher war. Das einzige was sie erklärt hat ist SQL und wie man die Verbindung zur Datenbank erstellt. Der Rest besteht aus Folien, die sie nicht erläutert hat. XDD

PPS: Noch nie von gehört. Was ist das und was bringt das?o.o
 
Zuletzt bearbeitet:
und dazu kommt, dass ich nicht sonderlich begabt auf dem Gebiet bin XD


Ich würde mich sehr freuen, wenn mir hier jemand weiter helfen könnte :/
Weil ich stehe wirklich auf dem Schlauch
 
Code:
WHERE idVeranstaltungen = ".$_GET['id'];
und es beschwert sich dass id undefiniert ist ...
Rufst du die PHP-Datei mit Parameter auf, also meinedomain.com/meinedatei.php?id=1234 ?
Wenn nicht ists ja klar dass es nicht gehen kann.

Zu SQL-Injections:
Beim Beispielcodestück oben (und auch an einigen anderen Stellen in deinem Code) wird ein Variablenwert direkt in die Abfrage eingefügt. Noch dazu ist es ein Wert, den der Benutzer sich frei aussuchen kann (meinedatei.php?id=1234) bzw. genereller ein Wert der außerhalb vom Programm erzeugt wird.
Für zB.
Code:
1234
kommt eben die Abfrage
Code:
SELECT * FROM `Veranstaltungen` WHERE idVeranstaltungen = 1234
raus, klar. Wenn ich jetzt aber auf die Idee komme, folgendes zu übergeben:
Code:
1; DROP TABLE Veranstaltungen;
? Das ergibt
Code:
SELECT * FROM `Veranstaltungen` WHERE idVeranstaltungen = 1; DROP TABLE Veranstaltungen;
zwei getrennte Anweisungen, und die zweite löscht dir die Tabelle.
Das nur als Beispiel, man kann noch viel mehr Unsinn damit anstellen.
Lösung: Prepared Statements (dazu gibts viele Beispielcodes).

Zu XSS:
Falls ein Benutzer über ein Formular/GET-Parameter/irgendwas Werte eingeben kann, die in der DB gespeichert werden, und dann irgendwann "anderen" Benutzern auch wieder angezeigt werden können ... wie die Posttexte hier, unsere Benutzernamen, usw.usw.:
Was hindert mich, statt zB. meinem Benutzernamen
Code:
sheel
sowas einzutragen
Code:
<script> /*some evil code here*/</scipt>
? Das stört die DB zwar nicht, aber wenn es in den Browser von jemandem kommt wird es ausgeführt. Wenn das Forum hier nicht dagegen abgesichert wäre könnte jeder Benutzer jedem anderen beliebige Programme unterschieben.
Lösung: Ausgaben, die von anderen Benutzern etc. kommen, zuerst durch htmlspecialchars durchlassen.



jetzt sollen wir als mindest Anforderung Sachen haben, die wir wirklich nie gemacht habe
Ja, weil eben Uni.
 
FH's sind da schon etwas anders. Ich bin extra auf eine FH gegangen, damit es mehr wie Schule ist (und das ist es definitiv)


meint du mit localhost/.../index.php ? dann ja.
Bei mir sieht das so aus: http://localhost/dynamic/VorlesungsDB/index.php?x=veranstaltung

Ich hab es jetzt mal wie folgt eingegeben:
http://localhost/dynamic/VorlesungsDB/index.php?id=1

kommt das:
Notice: Undefined index: x in D:\tools\portable\xampp\htdocs\dynamic\VorlesungsDB\index.php on line 21

Notice: Undefined index: x in D:\tools\portable\xampp\htdocs\dynamic\VorlesungsDB\index.php on line 24

Notice: Undefined index: x in D:\tools\portable\xampp\htdocs\dynamic\VorlesungsDB\index.php on line 27

Notice: Undefined index: x in D:\tools\portable\xampp\htdocs\dynamic\VorlesungsDB\index.php on line 30

Notice: Undefined index: x in D:\tools\portable\xampp\htdocs\dynamic\VorlesungsDB\index.php on line 33

Notice: Undefined index: x in D:\tools\portable\xampp\htdocs\dynamic\VorlesungsDB\index.php on line 36

Ich habe weder Ahnung, was ich da gemacht habe noch was das bedeutet und vorallem warum ich Fehlermeldungen bekommen habe.


Ich kenne diese Art nicht. Wir haben gekernt alles über index zu machen
 
Hi,

die Fehlermeldung besagt, dass ein nicht bekannter Index "x" genutzt wird.

Solche Fehlermeldungen sollte man von vornherein ausschleißen ;)

Der Fehler entsteht, weil Dein Code sicher irgendwo auf "$_GET[x]" bezieht - der Index "x" aber nicht verfügbar ist.



Zeig uns am besten nochmal Deinen Code, da sich dieser inzwischen geändert hat (Die Fehlermeldungen stehen in keinem Zusammenhang mehr mit dem o.g. Code)

Viele Grüße
 
Zurück