PHP NOTICE Probleme

Belee

Lt. Commander
Dabei seit
Dez. 2006
Beiträge
1.518
Hallo Leute...

Ich habe hier ein Problem wo ich nicht weiter weiß...

Meldung:
HTML:
Notice:  Undefined index: conmain in xxx/xxx/xxx/index.php on line 123

Zeile:
HTML:
<li><a href="index.php?conmain=about#mainnav" <?php if ($_GET['conmain'] == "about") { echo 'id="aclink"'; } else { echo 'class="mainlinks"';} ?>><?php echo Lang::_('ImPrint'); ?></a></li>
Hiermit wird ein angeklickter Link in der Navi hervorgehoben, das ganze funktioniert auch prima nur wirft das ganze eine Notice!

Das verstehe ich aber nicht ganz weil, sobald ich in der Navi dann einen Link anklicke verschwindet der Hinweis!

Das ist mein switch/case für die Navigation, es steht jetz nur ein Link drin es werden aber alle die drin stehen und die obige Syntax aufweisen bemängelt.
Muss ich etwa das switch/case jeweils nochmal oben im Link definieren? ne oder?

PHP:
         if (isset($_GET['conmain'])) {
 
         $conmain = trim($_GET['conmain']);
 
         switch ($conmain) {
 
         case 'about': 
          if (file_exists('xxx/about.inc.php')) {
           include('xxx/about.inc.php'); 
         } 
           break;

Heisst also, solange kein Link angeklickt wird gibt es eine Notice, sobald ein Link angeklickt wird verschwindet die Notice, geht mir irgendwie nicht im Kopf.
 
PHP:
<?php if ($_GET['conmain'] == "about") { echo 'id="aclink"'; } else { echo 'class="mainlinks"';} ?>><?php echo Lang::_('ImPrint'); ?></a></li>

in

PHP:
<?php if (isset ($_GET['conmain'])){if ($_GET['conmain'] == "about") { echo 'id="aclink"'; } else { echo 'class="mainlinks"';} ?>><?php echo Lang::_('ImPrint'); ?></a></li>

du musst, bevor du eine variable abfragst, prüfen ob sie über gesetzt ist bzw existiert
 
Zuletzt bearbeitet:
Das hatte ich auch so nur dann wird keine "class" und auch keine "id" eingefügt! bzw. erst wenn man einen link angeklickt hat, ansonnsten bleibt der Link ohne "css-klasse".
Ergänzung ()

Habs, habe die Klammer falsch gesetzt..."am Ende", so funktioniert es wie gewünscht, 2te Klammer vor else!

HTML:
<li><a href="index.php?conmain=about#mainnav" 
  <?php 
  if (isset($_GET['conmain'])) {
 
  if ($_GET['conmain'] == "about") { 
  echo 'id="aclink"'; 
 }} else { 
 echo 'class="mainlinks"';
 
 } ?>><?php echo Lang::_('ImPrint'); ?></a></li>
Ergänzung ()

Noch paar Probleme..

PHP:
if (isset($_GET['action'])) $action = $_GET['action']; 
 if (isset($_GET['sign'])) $sign = $_GET['sign'];
 
 if($action == "sign") {
....

Ich bekomme hier eine NOTICE das die Variable $action Undefined ist, warum denn das jetzt?

Ich hasse PHP :rolleyes:
 
Zuletzt bearbeitet:
Weil $action nicht gesetzt ist!

Code:
// Probe
if(!isset($action) OR empty($action)) { echo '$action ist nicht da oder leer!'; }
else { echo '$action ist da!'; }
 
toll, was soll ich damit? bringt mir absolut nichts, wenn du schon helfen willst dann keine Proben denn die mache ich schon selbst, nutzt mir also wenig wenn du hier nen Code postest der nicht funktioniert bzw. ich damit absolut nichts anfangen kann...Sorry bin etwas angewinckelt heute, klappt nichts mehr..
 
Hm, eigentlich müsste das gehn, wie dus hast, aber versuchs mal so:

PHP:
if (isset($_GET['action'])){
    $action = $_GET['action']; 
}
else{
    $action = "noAction";
}
if (isset($_GET['sign'])){
    $action = $_GET['sign']; 
}
else{
    $sign = "noSign";
}


Nur so nebenbei:

PHP:
if($action == "sign")

Bist du dir sicher, dass du hier $action mit dem string "sign" vergleichen willst?

EDIT: Workarround falls es die POST-Parameter nicht gibt.
 
Zuletzt von einem Moderator bearbeitet:
Ich schicke die Formulardaten so ab:

HTML:
form action="?conmain=opinions&action=sign#compost" method="post">

Ist das falsch das mit

HTML:
if($action == "sign")

Das Script war globals = on, es ist ziemlich alt, nun schreibe ich das um bzw. versuche es auf globals = off lauffähig zu mache.
Klar könnte ich das einfacher machen aber das ist dann nichts halbes und nichts ganzes, es soll schon sauber sein, ist aber nicht einfach.

Wenn ich
PHP:
if($action == "sign")

Nicht so benutze, also ändere wird die Ausgabe udn das Formular nicht mehr angezeigt :(

Hier ein kleiner Ausschnitt aus dem Code..

PHP:
if(isset($_GET['action'])) {
   $action = $_GET['action']; 
   }else {
   $action = '';
   }   
 
   if(isset($_GET['page'])) {
   $page = $_GET['page']; 
   }else {
   $page = '';
   }
   if(isset($_POST['name'])) {
   $name = $_POST['name']; 
   }else {
   $name = '';
   }
 
   if(isset($_POST['comment'])) {
   $comment = $_POST['comment']; 
   }else {
   $comment = '';
   }
 
   if(isset($_POST['email'])) {
   $email = $_POST['email']; 
   }else {
   $email = '';
   }
 
   if(isset($_POST['antispam'])) {
   $antispam = $_POST['antispam']; 
   }else {
   $antispam = '';
   }
 
   if (isset($_POST['ppic'])) $ppic = $_POST['ppic'];
 
   $day = date("d");
   $month = date("m");
   $year = date("Y");
   $dt = "$day.$month.$year";
 
   if ($action == 'sign') {
   if ($name!="" && $comment!="" && $antispam!="") {
   $name = str_replace ('|~!|','', $name);
   $comment = htmlspecialchars($comment);
   ...
   .....
   ..
   echo '<form action="?conmain=opinions&action=sign#compost" method="post">'."\n";
  ...
  .....
 echo '</form>'."\n";
Ergänzung ()

Und ein weiteres Problem....

Das Script ist ein Kommentar Script, es werden jeweils 10 Kommentare a Seite angezeigt, nun habe ich das Problem das wenn ich auf Seite 2 bin wo sich nur 2 Kommentare befinden ich einen NOTICE bekomme der lautet wie folgt...

PHP:
Notice: Undefined offset: 12 
...
...

Diesen Hinweis habe ich dann halt 8 mal auf Seite 2.

Die bemängelte Code-Zeile...

PHP:
for ($i=$start; $i<$end; $i++) {
if (substr($list123[$i], 1, 5 )!= "") { // diese Zeile wird bemängelt!
$p=explode('|~!|', $list123[$i]);

Jemand eine Idee wie ich das Notice clean bekomme? ich denke mal es liegt daran das auf Zeilen zugegriffen wird die nicht existieren, nur wie gebe ich an das nur Zeilen gelesen werden die auch existieren?
Das ganze läuft über Textdateien, also die Kommentare werden in einer einfachen Textdatei geschrieben.
Ich habe absolut NULL Ahnung wie ich das Problem beseitigen könnte, habe alle Notice Hinweise jetzt auf meiner Seite bereinigt nur diese Sache möchte nicht klappen, habe schon viel versucht nur bekomme es aber einfach nicht hin.
 
PHP:
$list123[$i]

prüfe vorher mit isset ob sie gesetzt ist, danach sollte das notice verschwinden
 
Zurück
Top