Archiv verlassen und diese Seite im Standarddesign anzeigen : Notice: Trying to get property of non-object
Tach leute
Is leider n bissl viel Code, ging aber nich anders. Habe den Code jetzt mit $_POST geschrieben.
Vorerst nur mal zum ändern eines Mysql-Records.
Schon beim aufrufen der Seite gibt es mir diesen Fehler aus:
Notice: Trying to get property of non-object in D:\apachefriends\xampp\htdocs\luci\anews.php on line 69
werde einfach net schlau draus, da ich schon auf google genug lange gesucht hab. An was liegt diese Fehlermeldung?
gruz
<?
error_reporting(E_ALL);
if (isset($aendern))
{
$verbindung = mysql_connect("localhost", "root", "")
or die ("Keine Verbindung zum Server");
mysql_select_db("luci", $verbindung)
or die ("Keine Verbindung zur Datenbank");
$abfrage ="SELECT * FROM news";
$ergebnis =mysql_query($abfrage);
$news = mysql_fetch_object($ergebnis); ?>
<form action="anews.php" method="post">
Titel:<br><input type="text" name="titel" size="50"
value="<? echo $news->titel ?>"><br>
Text:<br><textarea cols="38" rows="7" value="">
<? echo $news->text ?></textarea><br>
<input type="submit" value="submit"
name="submit">
</form>
<? }
elseif (isset($_POST["submit"]))
{
echo "Daten werden geändert...";
$verbindung = mysql_connect("localhost", "root", "")
or die ("Keine Verbindung zum Server");
mysql_select_db("luci", $verbindung)
or die ("Keine Verbindung zur Datenbank");
$abfrage ="UPDATE news SET anzeigen = '$_REQUEST[anzeigen]',
titel = '$_REQUEST[titel]', text = '$_REQUEST[text]'";
$ergebnis = mysql_query($abfrage);
echo "Daten wurden erfolgreich geändert...";
echo "<a href='anews.php'>Zurück</a>";
echo "<pre>";
print_r($_POST);
echo "</pre>";
}
else {
$verbindung = mysql_connect("localhost", "root", "")
or die ("Keine Verbindung zum Server");
mysql_select_db("luci", $verbindung)
or die ("Keine Verbindung zur Datenbank");
$abfrage ="SELECT * FROM news ORDER BY id DESC";
$ergebnis =mysql_query($abfrage);
while ($news = mysql_fetch_object($ergebnis))
{
echo "<br><b>";
echo $news->titel;
echo "</b><br>";
echo $news->text;
}
echo "<b><a href='anews.php?aendern=$news->id'>ändern</a>";
}
?>
was steht denn in line 69 ??
mrhappiness 13-06-2005, 09:31 Zeile 69 ist wo?
Warum hast du http://www.php-resource.de/forum/showthread.php?s=&threadid=50454 nicht gelesen und mysql-error eingebaut?
mittlerweile kann ichs abschicken und diesmal kommen die fehlermeldungen:
Notice: Undefined index: anzeigen in D:\apachefriends\xampp\htdocs\luci\anews.php on line 47
Notice: Undefined index: text in D:\apachefriends\xampp\htdocs\luci\anews.php on line 47
ich schau selber ma wieso das
aDé
1. ... und welche Zeile ist die Zeile 69?
2. if (isset($aendern)) :rolleyes:
3. kannst du dich nicht auf $_POST oder $_GET festlegen? was soll denn das mit $_REQUEST?
4. Arrays nicht so in String einbetten, sondern entweder auftrennen oder mit {} arbeiten!
zu 1. Zeile 69 ist diese:
}
echo "<b><a href='anews.php?aendern=$news->id'>ändern</a>";
}
?>
zu 2. sollte ich etwa auch if (isset($_POST["aendern"])) ?
zu 3 / 4 -> sollte das ganze etwa so aussehen? : "UPDATE news SET anzeigen = '{$_GET[anzeigen]}', ....
1. weil du nicht geprüft hast, ob mysql_query auch was liefert, tritt solche Fehler dann auf, wenn du einfach davon ausgeht, das die Daten da sind. Also mysql_error richtig anwenden.
2. das wäre von Vorteil ;)
3./4. :rtfm: und ausprobieren, warum fragst du? Das gleiche gilt auch für die Zeile 69 u.ä.
btw: kennst du den Unterschied zwischen $_GET[anzeigen] und $_GET['anzeigen'] ?
zum letzten -> unterschied zwischen $_GET['aendern'] / $_GET[aendern]
kenn ich net
mit '' zeigt es auf eine variable ? :confused:
Original geschrieben von wkd-
zum letzten -> unterschied zwischen $_GET['aendern'] / $_GET[aendern]
kenn ich net
http://www.php.net/manual/de/language.types.array.php#language.types.array.donts
danke, ich schau das ma durch und probiers nochma
dankee
mittlerweile sieht mein code so aus:
ZEILE 25 <?
error_reporting(E_ALL);
if (isset($_POST["aendern"]))
{
$verbindung = mysql_connect("localhost", "root", "")
or die ("Keine Verbindung zum Server");
mysql_select_db("luci", $verbindung)
or die ("Keine Verbindung zur Datenbank");
$abfrage = "SELECT * FROM news";
$ergebnis = mysql_query($abfrage);
$news = mysql_fetch_object($ergebnis); ?>
<form action="anews.php" method="post">
<input type="hidden" value="<? echo $news->id ?>" name="id">
Titel:<br><input type="text" name="titel" size="50"
value="<? echo $news->titel ?>"><br>
Text:<br><textarea cols="38" rows="7"><? echo $news->text ?></textarea><br>
<input type="submit" value="submit" name="submit">
</form>
<? }
elseif (isset($_POST["submit"]))
{
echo "Daten werden geändert...";
$verbindung = mysql_connect("localhost", "root", "")
or die ("Keine Verbindung zum Server");
mysql_select_db("luci", $verbindung) or die ("Keine Verbindung zur Datenbank");
$abfrage ="UPDATE news SET anzeigen = {$_GET['anzeigen']},
titel = {$_GET['titel']}, text = {$_GET['text']}";
$ergebnis =mysql_query($abfrage);
echo "Daten wurden erfolgreich geändert...";
echo "<a href='anews.php'>Zurück</a>";
echo "<pre>";
print_r($_POST);
echo "</pre>";
echo mysql_error();
}
else {
$verbindung = mysql_connect("localhost", "root", "")
or die ("Keine Verbindung zum Server");
mysql_select_db("luci", $verbindung)
or die ("Keine Verbindung zur Datenbank");
$abfrage ="SELECT * FROM news ORDER BY id DESC";
$ergebnis =mysql_query($abfrage);
while ($news = mysql_fetch_object($ergebnis))
{
echo "<br><b>";
echo $news->titel;
echo "</b><br>";
echo $news->text;
}
echo "<b><a href='anews.php?aendern=$news->id'>ändern</a>";
ZEILE 72 }
?>
Notice: Trying to get property of non-object in D:\apachefriends\xampp\htdocs\luci\anews.php on line 70 <- is die fehlermeldung
Wenn ich am Anfang nicht (isset($_POST["aendern"])) sondern (isset($aendern)) brauche, komm ich auch weiter bis zum formular... Da ist aber nix mehr drin, seit ich statt $_REQUEST $_GET genommen habe, bei der Update Abfrage...
- Array
(
[id] => 3
[titel] => a
[submit] => submit
)
das gibt es mir aus nach dem "Ändern" meiner News
Obwohl ich einen Text angegeben habe, gibt es nur den titel aus
die news ändert sich auch nicht :
Notice: Undefined index: anzeigen in D:\apachefriends\xampp\htdocs\luci\anews.php on line 47
Notice: Undefined index: titel in D:\apachefriends\xampp\htdocs\luci\anews.php on line 47
Notice: Undefined index: text in D:\apachefriends\xampp\htdocs\luci\anews.php on line 47
Original geschrieben von wkd-
Notice: Trying to get property of non-object in D:\apachefriends\xampp\htdocs\luci\anews.php on line 70 <- is die fehlermeldung
und das bei einem code, der gerade mal 55 zeilen hat?
deine art unvollständigen und/oder falschen murks zu posten, hilft bei der problemlösung recht wenig weiter.
RanzigeMilch 13-06-2005, 11:45 nene er hat schon net unrecht das hatte ich auch ma
da war mein code 130 zeilen lang und er hat fehler in zeile 147 oder so angezeigt.
was das fürn fehler war weiss ich net mehr.
hab damals glaub ich dann an jeden befehl ne fehlerausgabe drangehangen.
also do the same^^
EDIT: trying to get property of blabl object....
also das bezieht sich auf $_POST["aendern"] oder was du da geschriebn hast
so ich nehme mal an du hast da nen submitbutton der ändern heisst auf den man klickt und dann kommt die seite die fehler macht!!
anscheinend hast du in der datei wo man auf ändern klicken kann nen fehler im input feld oder ähnlich (denn mit der definierten variable gehts ja)
und lern englisch;)
dann kannst du mir sicher sagen was es bringt en html code von 3 tabellen hier hin zu posten?...
hab jetzt die zeilen angeschrieben, zuoberst und zuunterst
meine abfrage im elseif lautet so:
$abfrage ="UPDATE news SET titel={$_GET['titel']}, text={$_GET['text']}";
jetzt gibt mir mysql_error() dies hie raus:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' text=' at line 1
:confused:
heisst das ich soll '{$_GET['titel']}' schreiben?
Hat sich beantwortet!
- wenn dein Formular per POST sendet, nützt es dir wenig, die Daten per GET zu holen, das gleiche gilt für aendern, du schickst per GET und prüfst per POST :goth: Hast du wirklich die Doku gelesen?
- ich sehe kein Formularelement namens text
außerdem, zum letzten Mal, wende mysql_error an der richtigen Stelle an, dann weisst du auch, woran es liegt.
RanzigeMilch 13-06-2005, 11:58 zunächst einmal ja die " ' " müssn vor den wert!!
dann weiss ich aber gar net ob in ner query " } " " { " erlaubt sind bin ich grad ma überfragt
aber wenn mans net weiss mach das was dir der server gesagt hat
check mysql syntax
mein tip: google
ich hock schon seit 2 stunden auf googel rum...
und ich hab bis jetzt noch NIX gefunden was mir helfen könnte
Es geht eigentlich alles, das einzige was mir an Fehlern ausgegeben wird ( ich hab mysql_error, error_reporting und: echo "<pre>";
print_r($_POST);
echo "</pre>";
mysql_error(); Nur noch diese Meldungen kommen:
Daten werden geändert...
Notice: Undefined index: titel in D:\apachefriends\xampp\htdocs\luci\anews.php on line 47
Notice: Undefined index: text in D:\apachefriends\xampp\htdocs\luci\anews.php on line 47
Daten wurden erfolgreich geändert...Zurück
Array
(
[id] => 3
[titel] => a
[submit] => submit
)
hat jetzt funktioniert.
danke...
der letzte fehler is jetzt nur noch:
Notice: Trying to get property of non-object in D:\apachefriends\xampp\htdocs\luci\anews.php on line 70
Das is wieder am Ende des Codes:
} <- diese hier is zeile 70
echo "<b><a href='anews.php?aendern=$news->id'>ändern</a>";
}
?>
onemorenerd 13-06-2005, 12:26 // das passiert immer, also vor das if ziehen
$verbindung = mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("luci", $verbindung) or die (mysql_error());
// um aender nur einfache ', nicht "
if (isset($_POST['aendern'])) {
$ergebnis = mysql_query("SELECT * FROM news") or die(mysql_error());
$news = mysql_fetch_object($ergebnis) or die(mysql_error());
// überall wo $_GET steht, muß $_POST hin
// und wie du siehst immer schön mit mysql_error() arbeiten
Und übrigens sollte root ein Passwort bekommen, auch wenn er nur von localhost connecten darf. Noch besser wäre, einen Benutzer für Script-Zugriffe anzulegen, der nicht alles darf (und natürlich auch ein Passwort hat).
danke
wenn ich if (isset($_POST['aendern'])) statt if(isset($aendern)) schreibe, komm ich nicht mehr zum formular.
und die Fehlermeldung Notice: Trying to get property of non-object in D:\apachefriends\xampp\htdocs\luci\anews.php on line 70 steht immer noch da...
Zeile 70 hab ich vorhin gepostet
an was liegt das?? :confused:
ersetze mal
echo "<b><a href='anews.php?aendern=$news->id'>ändern</a>";
durch
echo "<b><a href='anews.php?aendern=".$news->id."'>ändern</a>";
das ändert nichts am ganzen.. ich glaub das hab ich schon probiert gehabt... :/
und wie mein alter post: wenn ich das File auf den Server lad geht wieder nix :)
muss ich jetzt auf dem server register_globals=on setzen damit das funktioniert? :/
grusssss
jetzt funktioniert alles. sogar auf dem server..
ich hab jetzt mal register_globals=on gsetzt.
die fehlermeldung krieg ich nur lokal ausgegeben. :/
danke leute
adéé
onemorenerd 13-06-2005, 14:01 Original geschrieben von wkd- ich hab jetzt mal register_globals=on gsetzt.
"Meine Garage ist 2,5m breit; mein Auto 2,60. Ich hab die linke Wand weggerissen. Jetzt passt es rein." http://www.php-resource.de/forum/images/icons/icon14.gif
könnte man auch so verstehen, dass es übereilig war und unüberdacht -> bitte melden wenns so wäre :rolleyes:
Programmier einfach mit Register-Globals=off, wie es Sinn macht, das Register-Globals standardmässig seit PHP 4.2.0 auf "off" steht.
onemorenerd 13-06-2005, 14:55 Original geschrieben von wkd-
könnte man auch so verstehen, dass es übereilig war und unüberdacht -> bitte melden wenns so wäre :rolleyes:
Ja, das soll man so verstehen. Vielleicht wäre das Beispiel "Ich kann nicht auf Port xy verbinden. Also schalte ich die Firewall ab." besser gewesen.
register_globals=Off ist quasi eine Sicherheitsvorkehrung. Du schaltest sie aus, weil du nicht in der Lage bist, mit ihr umzugehen.
Du weißt entweder nicht, welche Variablen per GET/POST übergeben werden (Ursache: du verstehst deinen Code nicht) oder wie man die Arrays $_GET/$_POST benutzt (Ursache: du weißt nicht wie man Arrays benutzt).
Beide Ursachen sind leicht zu beseitigen, dir wurde in diesem Thread schon viel dazu gesagt.
Wenn du register_globals=On schaltest, brauchst du dich zwar um die Ursachen nicht mehr kümmern, mußt aber mit den Folgen leben: Manche Scripte auf dem Server sind jetzt potentiell unsicher und du verstehst sie eben nicht.
onemorenerd 13-06-2005, 14:58 Das wollte ich vorhin noch sagen:
Original geschrieben von wkd-
wenn ich if (isset($_POST['aendern'])) statt if(isset($aendern)) schreibe, komm ich nicht mehr zum formular.
Schreibe mal "echo $_POST['aendern'];" eine Zeile drüber, dann weißt du auch warum.
Wenn du im Zusammenhang mit solchen Sachen dann noch von Debuggen sprichst, wirkst du auf andere schon fast wie ein Profi. ;)
(Inzwischen den DB-Zugang abgesichert?)
RanzigeMilch 13-06-2005, 15:55 ey man das liegt sowieso net nur an zeile 70 blabla
sondern auch wie wahsaga glaub ich scon ma gesagt hat du n heilloses durchnander von POST und GET hast und anscheinend au net weisst was wofür is...
ich hab kein durcheinandern mehr mit post und get...
es funktioniert alles, der code:
<?
if (isset($_GET["aendern"]))
{
$verbindung = mysql_connect("localhost", "luci", "")
or die (mysql_error());
mysql_select_db("luci", $verbindung)
or die (mysql_error());
$abfrage ="SELECT * FROM news";
$ergebnis =mysql_query($abfrage);
$news = mysql_fetch_object($ergebnis); ?>
<form action="anews.php" method="post">
<input type="hidden" value="<? echo $news->id ?>" name="id">
Titel:<br><input type="text" name="titel" size="50"
value="<? echo $news->titel; ?>"><br>
Text:<br><textarea cols="38" rows="7" name="text">
<? echo $news->text; ?></textarea><br>
<input type="submit" value="submit" name="submit">
</form>
<? echo "<a href='anews.php'><b>Zurück</b></a>";}
elseif (isset($_POST["submit"]))
{
echo "Daten werden geändert...<br><br>";
$verbindung = mysql_connect("localhost", "luci", "") or die (mysql_error());
mysql_select_db("luci", $verbindung) or die (mysql_error());
$abfrage ="UPDATE news SET titel='{$_POST['titel']}',
text='{$_POST['text']}' WHERE id='{$_POST['id']}'";
$ergebnis =mysql_query($abfrage);
echo "Daten wurden erfolgreich geändert...<br><br>";
echo "<a href='anews.php'><b>Zurück</b></a>";
}
elseif (isset($_GET["loeschen"]))
{
$verbindung = mysql_connect("localhost", "luci", "")
or die (mysql_error());
mysql_select_db("luci", $verbindung) or die (mysql_error());
$abfrage ="DELETE FROM news WHERE id='$loeschen'";
$ergebnis = mysql_query($abfrage);
echo "Record wurde erfolgreich gelöscht...<br><br>";
echo "<a href='anews.php'><b>Zurück</b></a>";
}
else {
$verbindung = mysql_connect("localhost", "luci", "")
or die (mysql_error());
mysql_select_db("luci", $verbindung) or die (mysql_error());
$abfrage ="SELECT * FROM news ORDER BY id DESC";
$ergebnis =mysql_query($abfrage);
while ($news = mysql_fetch_object($ergebnis))
{
echo "<br><b>";
echo $news->titel;
echo "</b><br>";
echo $news->text;
echo "<br><br><b><a href='anews.php?aendern=".$news->id."'>ändern</a>
<b><a href='anews.php?loeschen=".$news->id."'>
löschen</a></b><br><hr><br>";
}
}
?>
es funktioniert ja nur wenn ich register_global auf ON setze... was soll ich denn bitte sonst machn???
onemorenerd 13-06-2005, 16:36 Original geschrieben von wkd-
ich hab kein durcheinandern mehr mit post und get...
<?
if (isset($aendern)) { // ...
Das sehe ich anders! Denn
Original geschrieben von wkd-
Das is wieder am Ende des Codes:
echo "<b><a href='anews.php?aendern=$news->id'>ändern</a>";
Weißt du, wenn man etwas an eine URL anhängt, so wie du hier ?aendern=irgendwas, dann muß man bei register_globals=Off mit $_GET['aendern'] darauf zugreifen.
Original geschrieben von onemorenerd
Das sehe ich anders! Denn
Weißt du, wenn man etwas an eine URL anhängt, so wie du hier ?aendern=irgendwas, dann muß man bei register_globals=Off mit $_GET['aendern'] darauf zugreifen.
und DAS habe ich schon längst gesagt, aber .. wer nicht lesen kann ...
Original geschrieben von asp2php
und DAS habe ich schon längst gesagt, aber .. wer nicht lesen kann ...
ich habe register_globals auf on gesetzt, d.h. ich muss es nicht per GET aufrufen... wer nicht lesen kann -> es funktioniert ja...
Original geschrieben von wkd-
ich habe register_globals auf on gesetzt, d.h. ich muss es nicht per GET aufrufen... wer nicht lesen kann -> es funktioniert ja...
wenn du das Scheunentor publizieren willst ... bitte ... :dontknow:
wenn ich auf ändern klicke, kommt das formular. soweit so gut... nur: es holt immer nur die daten für den ERSTEN newspost... auch wenn ich beim anderen auf ändern klicke kommt der text des ersten :/
das echo mit den links für ÄNDERN und LÖSCHEN hab ich ins while reingesetzt... ( eigentlich auch logisch, damit ich jede news einzeln bearbeiten kann :rolleyes: )
an was liegt das?
Anscheinend ließt du überhaupt keine Antworten... Ich bin raus - hab wichtigeres zu tun als dir hier deinen code zu debuggen....
Wenn du jemand suchst, der dir dein Script codet, dann geh hier (http://www.php-resource.de/forum/forumdisplay.php?s=&forumid=4) hin....
onemorenerd 14-06-2005, 09:43 Daran, dass du beim Klick auf den Link zwar die ID der News übergibst, die du ändern möchtest, aber dann
"SELECT * FROM news"
machst, davon das erste Ergebnis als Objekt holst und in die Form ausgibst.
Mit
"SELECT * FROM news WHERE id='{$_GET['aendern']}'"
wäre das Problem gelöst. Dein eigentliches nicht.
man könnte auch direkt helfen und nich zweideutige antworten geben.
ich möchte nich das ihr code postet, sondern eifach mal eine GEZIELTE antwort gebt. darum frag ich immer und immer wieder nach
danke onemorenerd
so jetzt funktioniert ALLES
|
-
- |