Kann Fehler nicht finden; Bitte um Hilfe!
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
attribut
code
datei
datenbank
datum
fehler
funktion
gross kleinschreibung
http
index
klammern
lese
programm
ren
string
tabelle
test
text
zeile
-
HI!
Ich versuche im Moment, ein Nachrichtensystem f?r meine Homepage zu scripten.
Leider gibrt es anscheinend einen/mehrere Fehler im Script, aber ich kann sie einfach nicht finden und verrzweifle daran!
Bitte helft mir mal!
Es soll ein Newssystem auf MySQL-Basis f?r meine neue Webiste werden.
Guckt hier, in diesen 3 Dateien. Ich habe die Php- in normale Textdateien umgewandelt. Also: Die 3 Dateien:
http://www.christopherschlosser.com/test/index.txt
http://www.christopherschlosser.com/test/Schreiben.txt
http://www.christopherschlosser.com/test/Lesen.txt
Hoffe auf schnelle Hilfe von besseren Programmierern als ich ;
Zualio
EDIT 0-checka: Links korrigiert...
Beitrag ge?ndert am Sat, 29.01.2005 22:32 von 0-checka -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Was helfen w?rde ist, wenn du schreibst was nciht stimmt.
Ein fehler ist aber schon mal in deiner index.txt
es fehlen die Klammern beim include:
richtig w?re:
include("Lesen.php"); include("Schreiben.php"); Lese(); Schreibe();
Beitrag ge?ndert am 29.01 18:07 von korbiw -
Hi!
Ok. Der 1. fehler ist schonmal beseitigt (von dem habe ich aber keine Fehler bekommen, hat trotzdem includet
Bei der Funktion lese() zeigt er nur die Spalte "geschrieben an" an und er f?llt sie nichtmal aus.
wenn ich durch die Funktion schreibe() etwas eingebe und auf "senden" Klicke, sendet er es anscheinend, aber danach kommt statt der "Gesendet" nachricht nur eine wei?e Seite.
Zualio -
Also soweit ich das sehe k?nnte es nur daran liegen dass vielleicht die Datenbank namen nicht exakt "DATUM"/"TEXT" sind ausserdem versteh ich nicht warum du
//--3.Ben?tigte Daten sammeln--\\
$Anzahl['Zeilen'] = MySQL_num_rows($Ergebnis);
$Anzahl['Spalten'] = MySQL_num_fields($Ergebnis);
dort reinschreibst es nachher aber nicht mehr verwendest.
was ich auch mal probieren w?rde stattMySQL_query ("USE $Datenbank;")
mysql_select_db("$Datenbank") benutzen -
Hi!
Diese Daten habe ich eingegeben, weil das Programm ja noch nicht ganz fertig geschrieben ist. Jetzt sind es die grundz?ge, aber bevor ich daas Grundger?st noch nicht fertig habe, fange ich noch nicht mit der Verfeinerung an. Die Daten brauche ich erst, wenn das Programm erweitert wird und ich es in die Webiste einbaue. also ist es eigentlich im Moment egal.
Ich habe den Use Databank Befehl ge?ndert, aber es hat nichts gebracht.
Wenn ihr es mal sehen wollt:
Hier ist der Direktlink zum Ausf?hren:
http://www.christopherSchlosser.com/Test2/
Zualio
Beitrag ge?ndert am 29.01 19:03 von zualio
EDIT 0-checka: Link korrigiert...
Beitrag ge?ndert am Sat, 29.01.2005 22:36 von 0-checka -
LOL, wenn ich mich richtig errinere hast du nen lustigen fehler gemacht und zwar m?ssen funktionen genau gleich geschrieben werden!
also kann
function lese () {}
nich durch Lese(); aufgerufen werden!
include("Lesen.php"); include("Schreiben.php"); [b]l[/b]ese(); [b]s[/b]chreibe();
-
1.: Die von korbiw getroffene Aussage ?ber include ist falsch.
2.: Die von lucas9991 getroffene Aussage ?ber Gross-/Kleinschreibung ist falsch.
Zu 1.:
include ist keine Funktion, sondern ein Kontrukt f?r den php-Interpreter, ?hnlich wie #include unter C f?r den Pr?prozessor. Selbst in der offiziellen PHP-Doku wird das Beispiel von include nur mit Hochkommata ohne Klammern gezeigt. Das include auch mit Klammern funktioniert, ist nur ein Feature (aber eigentlich ein Bug vom Programmierer des PHP-Skriptes ).
Zu 2.:
Gross-/Kleinschreibung wird nur bei Variablennamen ausgewertet. Bei Funktionen, vordefinierten Konstanten wie __LINE__, FALSE oder NULL ist es egal, wie man sie schreibt (Ausnahme: Ggf. bei mit define() definierten Konstanten).
Zu beiden Aussagen habe ich ein Beispielskript hochgeladen:
http://0-checka.pyrokar.lima-city.de/thread21604.php
http://0-checka.pyrokar.lima-city.de/thread21604-2.php (wird inkludiert)
Quelltexte:
http://0-checka.pyrokar.lima-city.de/thread21604.txt
http://0-checka.pyrokar.lima-city.de/thread21604-2.txt (wird inkludiert)
Der Fehler steckt also woanders.
Mir sind folgende Dinge aufgefallen:
Lese.php:
$Anfrage = "SELECT * FROM $Tabelle;";
$Tabelle wird erst in Schreibe.php definiert und gesetzt. Normalerweise wird bei einer in Anf?hrungsstrichen benutzten Variablen der ganze Code nach der Variablen durchforstet und dann benutzt (*s.u.), allerdings weiss ich nicht, wie es ist, wenn die Variable erst sp?ter durch ein include in den Code "?bernommen" wird. Das include von Schreibe.php, wo $Tabelle definiert und gesetzt ist, kommt ja erst nach dem include von Lese.php. Also mal versuchen, $Tabelle bereits in Lese.php zu setzen (besser w?re es, wenn $Tabelle in index.php gesetzt werden w?rde).
Mir f?llt gerade auf, das selbe wie f?r $Tabelle gilt auch f?r $Servername, $Benutzer, $Passwort und $Datenbank.
K?nnte also sein, das in Lese.php gar keine DB-Verbindung aufgebaut wird...(?)
Schreibe.php:
$USER = $_POST['User'];
$Titel = $_POST['Titel'];
$Text = $_POST['Text'];
$Datum = Date("j.n.Y") . " " . Date("h:i:s");
MySQL_query ("INSERT INTO $Tabelle (User, Titel, Text, Datum) VALUES ('$User', '$Titel', '$Text', '$Datum')");
In dem String, der mysql_query() ?bergeben wird, wird eine Variable $User angef?hrt. Vorher ist allerdings nur eine Variable $USER gesetzt worden. Die sind allerdings nicht dasselbe, wie ich oben schon unter 2. geschrieben hatte.
Tip: Auch wenn das eigentlich nur bei Variablen der Fall ist, schreibe trotzdem auch Funktionen und Sonstiges so, als w?rde Gross-/Kleinschreibung ausgewertet.
(* s.u.) = Aus Performancegr?nden wird empfohlen, Variablen nicht in Strings zu schreiben, sondern per .-Operator zuzuf?gen.
Also,
nicht so: echo "Hallo $Name";
sondern so: echo "Hallo " . $Name;
Im ersten Fall wird der gesamte PHP Quelltext nochmal nach der Variable durchsucht, w?hrend im zweiten Fall die Variable aus dem "internen Cache" rausgesucht wird. -
Hi!
Zu $Tabelle und co:
Diese werden immer am Anfang der Funktion unter dem Kommentar
"//--1.Festlegung der Daten--\\"
als funktionsinterne Variablen definiert.
(Zur ?bersichtlichkeit, und falls ich sp?ter eien Datei alleine Ausf?hren will.
Die anderen Dinge, die du erkl?rt hast, das ohne die Variablen in den Strings, habe ich ausgef?hrt und hochgeladen. Allerdings hat dies anscheinend nix gebracht.
Nur mal zur Wiedelholung:
Code ansehen:
http://www.ChristopherSchlosser.com/test/Schreiben.txt
http://www.ChristopherSchlosser.com/test/Lesen.txt
http://www.ChristopherSchlosser.com/test/index.txt
Testen:
http://www.ChristopherSchlosser.com/test2/
Zualio
Beitrag ge?ndert am 30.01 17:06 von zualio -
Ich glaube, dass Problem liegt in den Zeilen
echo"<td BGCOLOR=\"#CCCCCC\">Geschrieben am: $Zeile->DATUM</td>";
und
echo"<td colspan=\"2\">$Zeile->TEXT</td>";
$Zeile->DATUM und $Zeile->TEXT m?ssen genau so geschrieben sein, wie sie in der DB angelegt sind, also mit identischer Gross-/Kleinschreibung. Wie schon oben gesagt, Variablen sind so ziemlich das Einzige, was in PHP case-sensitive (mir f?llt leider kein deutsches Wort daf?r ein) sind. Und Objekte geh?ren und deren "Member" geh?ren da auch zu.
Funktioniert das endlich, wenn du das ?nderst? -
HI!
Jetzt funktioniert es!
Dank o-checka!
Ich habe seine AAnweisungen gefolgt und... Das Auslesen aus der Datenbank funktionierte!
Danach habe ich nach einem Fehler beim einf?gen in die MySQL-Tabelle. Es war ganz einfach: Ich hatte die Attribute f?r die Funktion schreibe() vergessen!!! Einfach die Variablen daf?r als Attribute eingesetzt.... Und es funktionierte!
DANKE DANKE DANKE!
Jetzt entwickele ich das Newssystem weiter!
Zualio
PS:
THREAD KANN GESCHLOSSEN WERDEN! ENDE ] -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage