...und auf einmal waren fehler da.

weedo

Erfahrenes Mitglied
Hi,

ich sitze gerade mit Fragezeichen vor dem Computer und versteh meine Phpfehler nichtmehr.

Ich hatte vor einiger Zeit mal ein CMS angefangen zu entwickeln. Das Projekt wurde mal wieder auf Eis gelegt, sollte jetzt aber wieder angegangen werden.

Ich hatte zwischenzeitlich formatiert...Nach installation von XAMPP wollte ich weiter arbeiten.

Jetzt zeigt mir das CMS aber immer wieder Fehler an, die ich mir nicht erklären kann. Immerwieder nennt er mir Variablen die nicht definiert seien...

Code:
Notice: Undefined index: action in D:\xampp\htdocs\shop\admin\content.php on line 19

Notice: Undefined index: id in D:\xampp\htdocs\shop\admin\content.php on line 21

Was mich jedoch am meisten verwundert ist, dass alles funktioniert. Wie gewohnt.

Kann mir das jemand mal erklären? O_O

lg weedo
 
Das sieht mir ganz danach aus, als wären das Zugriffe auf das $_GET Array, richtig? Du versuchst also auf $_GET['action'] zuzugreifen, obwohl 'action' nicht in der URL angegeben ist. Sollte man vorher mit isset absichern, wenn man die Fehler nicht will.

Deine PHP Einstellungen vor der Entwicklungspause waren wahrscheinlich anders, womit keine Fehler dargestellt wurden.
 
Ist doch ganz klar. Auf Ziele 19 und Zeile 21 ist etwas das eine Notice (nicht Fehler!) ausgibt.

Du kannst diese unterdrücken, oder uns mal den Code zeigen oder ignorieren oder.....
 
Danke erstmal für die schnellen Antworten.

Also zeile 19-21 sind folgende:

PHP:
switch($_GET["action"]){
    case "":
  if(!$_GET["id"]) {

lg weedo
 
Hi,

vielleicht aber auch so, hab das grad mal aus meiner Wühlkiste...

PHP:
$action = '';
if (isset($_GET['action']) && $_GET['action'] != "") {
	$action = $_GET['action'];
} elseif (isset($_POST['action']) && $_POST['action'] != "") {
	$action = $_POST['action'];
}
    
switch ($action) {
	case "blu":
		blu();
		break;
	case "blo":
		blo();
		break;
	default:
		bla();
		break;
}
 
Hi,

ich hab gerade mal nen kleines Script geschrieben, was früher eigentlich immer fehlerfrei funktioniert hat und mir jetzt wieder die Notice ausgibt...

Fehler:
Code:
Notice: Undefined variable: navi in D:\xampp\htdocs\fight\navi.php on line 30

Und hier das Script:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  </head>
  <body style="background: url('Bilder/webseite_03.gif'); background-repeat: no-repeat; background-attachment: fixed;">
<?php

include("functions.php");
include("mysql.php");

$result = mysql_query("SELECT id, name, inhalt, ordner, subvon FROM contents WHERE subvon = 0") or die(mysql_error());

while($db = mysql_fetch_assoc($result)) {
  $id = $db["id"];
  $name = $db["name"];
  $inhalt = $db["inhalt"];
  $ordner = $db["ordner"];
  if($ordner == 1) {
    $navi .= "<a href=\"javascript:toggle('ordner$id');\">$name</a><br>";
    $navi .= "<div id=\"ordner$id\" style=\"display: none;\">";
    $result2 = mysql_query("SELECT id, name FROM contents WHERE subvon = '$id'");
    while($db2 = mysql_fetch_assoc($result2)) {
      $id2 = $db2["id"];
      $name2 = $db2["name"];
      $navi .= "<a href=\"content.php?id=$id\" target=\"content\">$name</a><br>";
    }
    $navi .= "</div>";
  } else {
    $navi .= "<a href=\"content.php?id=$id\" target=\"content\">$name</a><br>";
  }
}

print $navi;
?>

  </body>
</html>

Und jetzt die Frage...warum wird mir die var $navi als undefiniert ausgegeben, obwohl sie definiert wird?

lg weedo
 
Also, Notice sind keine Fehler. Irgendwie in php.ini kannst du glaub einstellen was standardmässig alles angezeigt werden soll.

Und $navi ist nicht definiert. Du hast da $navi.=xy. Das .= bedeutet dass etwas an an den bestehenden String angehängt wird. Aber da $navi am Anfang nicht gesetzt ist, hängst du da etwas an nichts ran. Das funktioniert, ist einfach nicht ganz sauber.

Schreib mal vor der Schleife $navi='' und dann sollte die Notice verschwinden
 
Die Variable ist nur dann definiert, wenn mindestens ein Eintrag von
Code:
SELECT id, name, inhalt, ordner, subvon FROM contents WHERE subvon = 0
zurueckgegeben wird, ansonsten wird die Variable nie initialisiert.
 
Gut, also liegt es im grunde daran, dass ich jede Variable erstmal definieren muss, bevor ich denn array oder den String erweitere, wenn ich es richtig verstanden hab.

Wenn das eine Einstellung von der php.ini ist, dann werde ich wahrscheinlich eine neuere Version XAMPP haben, in der das standartmäßig eingestellt ist. Zum glück merk ich das jetzt auf meinem PC, bevor mir das auf einem Kundenserver passiert =D

Danke euch für eure Hilfe.

lg weed9r
 
Zurück