Fehlersuche im Code - Finde nichts

ahykes

Erfahrenes Mitglied
Also Jungs; entweder ich bin jetzt schon blau oder es gibt in diesem Script keinen Fehler. Ich finde den Fehler einfach nicht. Könnt Ihr mal drüberschauen? die Datenbank ist mit Daten gefüllt und an der Query kann es auch nicht liegen, den in einem anderen Script läuft diese!
Schaut mal hier:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">

<script language="JavaScript" type="text/javascript">

	function erease(){ this.form.searchitem.value = ''; }
	function start(){ this.form.searchitem.value = 'Suche gestartet...'; }


</script>
</head>

<body bgcolor="#999999" background="../images/a-class_5door__impressions1.jpg">
<table width="573" border="0" cellspacing="1" cellpadding="0">
  <tr align="left"> 
    <td height="94" colspan="2" class="NewsSchrift"> 
      <p><strong><font color="#FFCC00">OI-System suchen</font></strong></p>
      <p align="justify"><span class="NewsSchrift"><font color="#FFFFFF">Bitte 
        geben Sie den Namen oder die IP-Adresse des gesuchten Systems ein und 
        dr&uuml;cken Sie auf &quot;Jetzt suchen&quot;.</font></span><strong><font color="#FFCC00"> 
        </font></strong><font color="#FFCC00"> <font color="#FFFFFF">Sollte die 
        Suche erfolglos bleiben, k&ouml;nnen Sie alternativ dazu auch in den Bereichen 
        Rohbau, Lack und Montage einzelne Zellen, Linien und Takte durchsuchen. 
        </font><strong><br>
        </strong></font></p></td>
  </tr>
  <tr> 
    <td width="468"><form name="form" method="post" action="search.php?mode=1" onSubmit="javascript:start()">
        <p>
          <input name="searchitem" type="text" id="searchitem" value="Name oder IP-Adresse" size="40" onClick="javascript:erease()">
          <input type="submit" name="Submit" value="Jetzt suchen">
        </p>
      </form>
      </td>
    <td width="102">&nbsp;</td>
		
  </tr>
</table>
PHP:
  <? //ausgabe >> Wenn mode gleich "0" leer
include 'class.php';
$search = $_POST['searchitem'];

switch($mode)
{
case 0: exit;
	
case 1: 
	
	//Verbindung zum Server
	$dbconnect=mysql_connect("localhost","root",""); 
	mysql_select_db("oi-systeme"); 
	//Select auf die Datenbank nach Suchbefehl
	//$ergebnisse=mysql_query("SELECT * FROM `oi_w065` WHERE `geraet` = '$search' or `ip` = '$search' or `geraet` LIKE '$search' ",$dbconnect); 
	$ergebnisse=mysql_query("SELECT * FROM `oi_w065` WHERE `geraet` LIKE '$search' or `ip` LIKE '$search' ORDER BY `zelle` ASC , `linie` ASC",$dbconnect); 
	echo '<table border=0 width="490" cellpacing=1 cellpadding=0 class="NewsSchrift">';
	echo '<tr><td bgcolor="FFFFFF">Zelle</td><td bgcolor="FFFFFF">Linie</td><td bgcolor="FFFFFF">Gerätename</td><td bgcolor="FFFFFF">IP-Adresse</td><td bgcolor="FFFFFF">MAC-Adresse</td><td bgcolor="FFFFFF"><td bgcolor="FFFFFF">Type</td></td></tr>';
	while ($set=mysql_fetch_row($ergebnisse)) {
			//PING
			$socket=@fsockopen($set[3] ,80,$err, $ba, 1); 
			
				$i++;
				
			 echo '<td bgcolor="'. ($i % 2 == 0 ? "#666666" : "CCCCCC") .'">'
				   .$set[0] 
				   .'</td>' 
				   .'<td bgcolor="'. ($i % 2 == 0 ? "#666666" : "CCCCCC") .'">' 
				   .$set[1] 
				   .'</td>' 
				   .'<td bgcolor="'. ($i % 2 == 0 ? "#666666" : "CCCCCC") .'">' 
				   .$set[2] 
				   .'</td>' 
				   .'<td bgcolor="'. ($i % 2 == 0 ? "#666666" : "CCCCCC") .'">';
				   
				   if ($socket){ echo '<a href="http://'.$set[3].'" target="_blank">'.$set[3].'</a>'; }
				   if (!$socket){ echo $set[3]; }
		
				   echo'</td>' 
				   .'<td bgcolor="'. ($i % 2 == 0 ? "#666666" : "CCCCCC") .'">';
				   
				   if ($set[4] == 'null' || $set[4][1] == '')
				   {	echo '-';
				   }
				   else
					 
				   echo $set[4][0]
				   .$set[4][1].':' 
				   .$set[4][2] 
				   .$set[4][3].':'
				   .$set[4][4]
				   .$set[4][5].':' 
				   .$set[4][6] 
				   .$set[4][7].':' 
				   .$set[4][8]
				   .$set[4][9];
				   
					
				   echo '</td>' 
				   .'<td align="center" bgcolor="'. ($i % 2 == 0 ? "#666666" : "CCCCCC") .'">';
				   
				   if ($socket){echo '<a href="showdetails.php?system='.$set[2].'" target="content"><img src="../images/lupe.gif" border="0"></a>'; };
				   if (!$socket){echo '<a href="showdetails.php?system='.$set[2].'" target="content"><img src="../images/lupe-grau.gif" border="0"></a>'; };
		
				   echo '</td>';
				   echo '<td bgcolor="'. ($i % 2 == 0 ? "#666666" : "CCCCCC") .'">';
				   if ($set[5]  == 0)
					{
						echo '<img src="../images/auge.gif">';
					}
					else echo '';
				   echo '</td>' 
				   .'<tr>';
			}

echo '</table>';  
exit;

	
}
?>
HTML:
</p>
</body>
</html>
:suchen: :confused: DER FEHLER BESTEHT DARIN, DAS DIE QUERY ANSCHEINEND KEINE DATEN AUS DER DB HOLT. DER LÄDT DIE SEITE VIEL ZU SCHNELL
 
Zuletzt bearbeitet:
Wenn wir suchen sollen, dann verwende auch bitte die entsprechenden Code-Tags ([ PHP][ /PHP] für php.....). Denn diese Funktionen gibts nicht umsonst! Mit Syntax-Highlighting suchts sich einfach besser! ;)
 
Also ich sehe hier nirgens, dass du die Variable $mode mit $_GET aus dem Query-String holst!

Mach am Anfang deines Scripts mal das:


PHP:
$mode=0;
if(isset($_GET['mode'])){
    $mode=$_GET['mode'];
}

(siehst du, ist soooo schön bunt :-) )
 
Naja, also wenn der PHP-Parser nichts ausspuckt, wird der Quellcode vermutlich auch in Ordnung sein. Dann ist es wohl einfach ein logischer Fehler, den PHP natürlich nicht finden kann, da es nicht weis was du mit deinem Code erreichen willst. Folglich wäre für uns auch mal interessant, was du eigentlich realisieren willst.
 
ich rufe die Seite mit dem parameter mode=0 auf! der Mode steht nicht in der DB :p

Okay: Also in meiner Datenbank stehen Name, Ip und so weiter. Diese Daten sollen durch ein Suchformular angezeigt werden ... immer ein Datensatz. Die Seite zeigt im Mode 0 nur das Suchfenster an. (Bitte geben sie was ein) Wenn man dann auf Suchen klickt wird die Seite mit Mode 1 neugeladen und führt dann die Query auf die Datenbank aus. Danach wird der gefundene Datensatz oder auch Sätze in einer Tabelle auf der gleichen Seite ausgegeben.
 
Zuletzt bearbeitet:
nero_85 hat gesagt.:
Also ich sehe hier nirgens, dass du die Variable $mode mit $_GET aus dem Query-String holst!

Mach am Anfang deines Scripts mal das:


PHP:
$mode=0;
if(isset($_GET['mode'])){
    $mode=$_GET['mode'];
}

(siehst du, ist soooo schön bunt :-) )

Schau dir meine Post an! Du übergibst den "mode" über die URL! Warum machst du bei einer GET-Methode nicht genauso wie bei einer POST-Methode ($_POST bzw. $_GET verwenden)!
 
Also sofern register_globals Off ist, würde ich spontan auch auf das von nero tippen ;)

Ansonsten bringt es sicher auch mal was, alle Errors und Notices einzuschalten. PHP warnt einen doch sicher auch irgendwie, wenn man undefinierte Variabeln verwendet?

Zudem ist es guter Stil bei switch-case-Konstrukten den default Fall nicht einfach wegzulassen, sondern diesen auch so wie er gedacht ist zu verwenden. Nämlich in deinem Fall könntest du den Nutzer und dich selbst darüber informieren, dass das Script aus irgend einem Grund komplett durchgefallen ist. Wahlweise liesen sich hier auch noch für dich relevante Debuginformationen anzeigen (z.B. welchen Wert $mode tatsächlich während dieses Durchlaufs hatte).

Ausserdem hilft es ungemein, wenn man die Rückgabewerte von Funktionen auf gelingen hin überprüft. Schlieslich geben viele Funktionen nicht umsonst im Fehlerfall entsprechende Werte zurück, damit du als Programmierer entsprechend auf solche Ereignisse reagieren kannst. ;)
 
Habe den Fehler gefunden. Der fehler liegt dummerweise gar nicht bei PHP sondern oben bei Javascript Wenn ich das (onSubmit="javascript:start()) weglasse, funktioniert das Script :suspekt:
 
Zurück