MySQL Anfängerproblem: Abfragen, Ausgaben etc

Lh_J

Grünschnabel
Hallo,
versuche mich seit einer Weile mit MySQL und PHP, habe mit PHP kaum Erfahrung und MySQL habe ich für dieses Projekt zum ersten mal angefasst und auch vorher nix mit Datenbanken gemacht (außer in Excel aber das hatte alles weniger mit Datenbanken als solchen zu tun).
Jetzt habe ich ein ziemlich großes, mir unlösbares Problem mit der Abfrage und der Ausgabe.
Das ganze sieht so aus, das ich eine suche.html habe, wo
ich bestimmen kann, was für Parameter für die Datenbankabfrage übergeben werden.
Das funktioniert auch soweit, aber ausgegeben wird nichts.
Alle Variablen die mit "x" anfangen sind leer und damit gibt es auch kein Ergebnis.

Mal abgesehen von den Parametern, die ich übergebe, funktioniert weder die Suche richtig, noch die Ausgabe.
Also fast gar nichts.
Und ich habe jetzt schon x-mal Kleinigkeiten geändert, aber wenn das eine funktioniert, geht was anderes dafür nicht.
Ich hatte z.B. auch mal, das ich den Parameter "Port" mit 1-20 befüllen konnte und eine Ausgabe klappte, wählte ich aber die 21, klappte nichts mehr.. warum auch immer.
Naja, vielleicht habt ihr ja ein paar gute Tipps für mich.. ich brauche da dringend hilfe.

Die Variable $counter habe ich eingefügt, um zu gucken wie viele Zeilen ausgegeben werden, wenn ich beim Parameter "port" ein "%" übergebe.
Ich hatte schon vorher bei der Ausgabe der kompletten Tabelle das Gefühl, das eigentlich gefüllte Zellen einfach nicht mit ausgegeben werden.. warum auch immer.

Die Datenbank ist übrigends 811 Zeilen lang und hat 9 Spalten.
Der Host, sowie Benutzer und Passwort sind natürlich geheim und daher durch Rauten ersetzt, nicht das dort schon jemand den Fehler vermutet ^^
Wenn ich die Suchstrings in phpMyAdmin ausführe, funktionieren diese sogar.

Und hier der komplette php-Code:

PHP:
<?php 
$port=$_POST["port"]; 
$swport=$_POST["switchport"]; 
$switch=$_POST["switch"]; 
$desc=$_POST["description"]; 
$status=$_POST["status"]; 
$typ=$_POST["typ"]; 
$raum=$_POST["raum"]; 
$method=$_POST["methode"]; 
$counter = "0"; 

$mysqlhost="#####"; 
$mysqluser="#####"; 
$mysqlpwd="#####"; 
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindung fehlgeschlagen"); 
$mysqldb="patchinfotool"; 
mysql_select_db($mysqldb, $connection) or die("Datenbankverbindung fehlgeschlagen"); 
if ($method == "or") 
{ 
$sql = "SELECT * FROM `data` WHERE `Port` LIKE '$port' OR `Auf Port` LIKE '$swport' OR `Link-Status` LIKE '$status' 
OR `von Switch` LIKE '$switch' OR `Verwendung` LIKE '$typ' OR `Raum` LIKE '$raum' OR `Beschreibung` LIKE '$desc'"; 
} 
elseif ($method == "and") 
{ 
$sql="SELECT * FROM data WHERE `Port` LIKE '$port' AND `Auf Port` LIKE '$swport' AND `Link-Status` LIKE '$status' AND `Verwendung` LIKE '$typ' AND `von Switch` LIKE '$switch' AND `Raum` LIKE '$raum' AND `Beschreibung` LIKE '$desc'"; 
}- 
$query=mysql_query($sql) or die("Query nicht erfolgreich"); 
$anzahl = mysql_num_rows($query); 
?>
<table border="1" cellpadding="10"> 
<tr> 
<td align="center"> 
<font face="arial" size="+1" color="EED8AE">Port</font> 
</td> 
<td> 
<font face="arial" size="+1" color="EED8AE">auf Port</font> 
</td> 
<td> 
<font face="arial" size="+1" color="EED8AE">von Switch</font> 
</td> 
<td> 
<font face="arial" size="+1" color="EED8AE">Raum</font> 
</td> 
<td> 
<font face="arial" size="+1" color="EED8AE">Dose</font> 
</td> 
<td> 
<font face="arial" size="+1" color="EED8AE">Port-<br>Description</font> 
</td> 
<td> 
<font face="arial" size="+1" color="EED8AE">Status</font> 
</td> 
<td> 
<font face="arial" size="+1" color="EED8AE">Link-Status</font> 
</td> 
</tr> 
<?php 
while(list($xport,$xswport,$xswitch,$xraum,$xdose,$xtyp,$xdesc,$xstatus,$xlink) = mysql_fetch_row($query)); 
{ 
echo " 
<tr> 
<td> 
<font face='arial' color='CDBA96'>$xport</font> 
</td> 
<td> 
<font face='arial' color='CDBA96'>$xswport</font> 
</td> 
<td> 
<font face='arial' color='CDBA96'>$xswitch</font> 
</td> 
<td> 
<font face='arial' color='CDBA96'>$xraum</font> 
</td> 
<td> 
<font face='arial' color='CDBA96'>$xdose</font> 
</td> 
<td> 
<font face='arial' color='CDBA96'>$xtyp</font> 
</td> 
<td> 
<font face='arial' color='CDBA96'>$xdesc</font> 
</td> 
<td> 
<font face='arial' color='CDBA96'>$xstatus</font> 
</td> 
<td> 
<font face='arial' color='CDBA96'>$xlink</font> 
</td> 
</tr>\n"; 
$counter=$counter+1; 
} 
echo "</table>" 
?> 
Debugging:<br> 
Suchvariablen: <?php echo "$port, $swport, $switch, $desc, $typ, $raum, $methode" ?><br> 
Tabellenvariablen: <?php echo "$xport, $xswport, $xswitch, $xraum, $xdose, $xtyp, $xdesc, $xstatus, $xlink" ?><br> 
Suchstring: <?php echo $sql ?><br> 
Anzahl Zeilen: <?php echo $counter ?> 
</body> 
</html>
Wäre wirklich toll, wenn ihr mir da helfen könntet, ich komme einfach nicht weiter..
 
Was sagt denn mysql_error() nach dem Query ? Kommt da schon was ?
Ich vermute nämlich, dass der Feldnahme "Auf Port" nicht so wirklich funktioniert, da IMHO Leerzeichen in Feldnamen der DB nicht sein dürfen.

LG
Andy
 
Hi.

Nein, ich kann keine Links geben, da das ganze auf einem Webserver im Intranet meiner Arbeit liegt.
Den Code für die Suchseite kann ich aber hier reinstellen, das ist kein Problem.

Es gibt übrigens keinen mysql_error.
Die Seite wird dargestellt, jedoch ohne Ergebnis.
Zusehen ist dann nur das Debugging und die Tabellenüberschriften die ich ja in HTML-Code hinterlegt habe.
Egal wonach ich suche, die Variablen $xport, $xswport, $xswitch, $xraum, $xdose, $xtyp, $xdesc, $xstatus, $xlink sind immer leer.
Das sollen ja die Variablen sein, die gefüllt werden sollen, mit der while-Schleife und dann letztlich das Ergebnis ausmachen.
Es ist also wohl die Ausgabe, die nicht funktioniert.

Hier aber erstmal die Suchseite:
HTML:
<html>
	<head>
		<title>PiP - Suche</title>
	</head>
<body background="bg.jpg">
<form action="ausgabe.php" method="POST">
	<table align="left" width="70%" height="100%" border="0" cellpadding="10">
		<tr>

			<td align="left" valign="top" width="20%" height="10%">
				<font face="arial" size="+3" color="EED8AE">Suche:</font>
                                 <br>
                                 <br>
                                 <br>
                         </td>

			<td align="center" width="20%"><br></td>
		</tr>
		<tr>
			<td align="left" valign="top" nowrap height="5%">
				<font face="arial" size="+2" color="EED8AE">
				Patchfeld Port:<br>
				</font>
			</td>
			<td align="left" valign="top" height="5%">
				<input type="text" size="2" maxlength="3" name="port">&nbsp;&nbsp;&nbsp;
                                 <font face="arial" color="CDBA96">1-810
                                 </font>
			</td>
		</tr>
		<tr>
			<td align="left" valign="top" height="5%">
				<font face="arial" size="+2" color="EED8AE">
				Interface Port
				auf Switch:<br>
				</font>
			</td>
			<td align="left" valign="top" height="5%">
                         	<font size="+2">
				<br>
                                 </font>
				<input type="text" size="3" maxlength="4" name="switchport">
                                 &nbsp;&nbsp;&nbsp;
                                 <font face="arial" color="CDBA96">Format: Modul/Portnummer (z.B. 5/25)
                                 </font>
			</td>
		</tr>
                 <tr>
			<td align="left" valign="top" nowrap height="5%">
				<font face="arial" size="+2" color="EED8AE">
				Switch:<br>
				</font>
			</td>
			<td align="left" valign="top" height="5%">
                                 <select name="switch">
					<option value=""></option>
                         		<option selected value="m4dociswl101">m4dociswl101</option>
                         		<option value="cat4dofl">cat4dofl</option>
                         	</select>&nbsp;&nbsp;&nbsp;
                                 </font>
			</td>
		<tr>
			<td align="left" valign="top" height="5%">
				<font face="arial" size="+2" color="EED8AE">
				Port Name:<br>
				</font>
			</td>
			<td align="left" valign="top" height="5%">
				<input type="text" size="25" name="description">
                                 &nbsp;&nbsp;&nbsp;
                                 <font face="arial" color="CDBA96">z.B. m4dohpap09
                                 </font>
			</td>
		</tr>
		<tr>
			<td align="left" valign="top" height="5%">
				<font face="arial" size="+2" color="EED8AE">
				Port Status:<br>
				</font>
			</td>
			<td align="left" valign="top" height="5%">
				<select name="status">
					<option value=""></option>
                         		<option selected value="up">Up</option>
                         		<option value="down">Down</option>
                         	</select>
                         </td>
		</tr>
		<tr>
			<td align="left" valign="top" height="5%">
				<font face="arial" size="+2" color="EED8AE">
				Verwendung:<br>
				</font>
			</td>
                         <td align="left" valign="top" height="5%">
				<select name="typ">
                                 	<option></option>
                         		<option value="apr" selected>APR</option>
                         		<option value="maapr">maAPR</option>
                                         <option value="fon">Telefon</option>
                                         <option value="bk">BK</option>
                         	</select>
                         </td>
                <tr>
			<td align="left" valign="top" nowrap height="5%">
				<font face="arial" size="+2" color="EED8AE">
				Raum:<br>
				</font>
			</td>
			<td align="left" valign="top" height="5%">
				<input type="text" size="2" maxlength="3" name="raum">&nbsp;&nbsp;&nbsp;
			</td>
		</tr>
                <tr>
                 	<td align="left" valign="top" height="5%">
                         	<font face="arial" size="+2" color="EED8AE">
                         	Suchmethode:
                         	</font>
                         </td>
                         <td>
                         	<input type="radio" name="methode" value="and">
                                 	<font face="arial" color="CDBA96">AND Verkn&uuml;pfung
                                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                 <input type="radio" name="methode" value="or" checked>
                                 	<font face="arial" color="CDBA96">OR Verkn&uuml;pfung
                         </td>
                </tr>
		<tr>
			<td align="left" valign="top">
				<br>
                                 <br>
				<input type="submit" value="suchen">

           		 </td>
			<td align="left" valign="top" width="50%">
				<br>
                                 <br>
				<input type="reset" value="reset">
			</td>
		</tr>
	</table>
</font>
</form>
</body>
</html>

Der Feldname "Auf Port" scheint zu funktionieren, da, wie schon erwähnt, auf den Suchstring, wenn ich ihn direkt in phpMyAdmin kopiere, die korrekte Ausgabe erfolgt.
 
Zuletzt bearbeitet:
Versuch mal:
while($row = mysql_fetch_"x"($query));

Und ersetz die Ausgaben jeweils durch $row['ZellenNameInDerMySQLTabelle']

Und probier bei "x" entweder, wie du es hattest row oder auch array bzw assoc...
Letzteres t bei mir immer, obwohl die Mehrheit wohl array nimmt^^
 
Hm, also das hat nicht geklappt.
Ich kriege einen Parse Error:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /data/users/azubi/public_html/ausgabe.php on line 68
Zeile 68 ist die erste Zeile, wo ich meine Ausgabe gegen deinen Vorschlag ausgetauscht habe.
Also <font face='arial' color='CDBA96'>$row['Port']</font>
Scheint also so nicht zu klappen. :(
 
Ups mein Fehler^^
Code:
echo " 
<tr> 
<td> 
<font face='arial' color='CDBA96'>".$row['x']."</font> 
</td> 
<td>
So müsste das gehn... ^^

Und nicht vergessen:
Ich vermute nämlich, dass der Feldnahme "Auf Port" nicht so wirklich funktioniert, da IMHO Leerzeichen in Feldnamen der DB nicht sein dürfen.

LG
Andy
 
Hm.. also ich habe die Datenbank aus einer csv-Datei importiert, in phpMyAdmin.
Wenn der Zellenname "auf Port" ungültig wäre, hätte das Programm beim import mit Sicherheit einen Error ausgespuckt.
Ich habe mir auch schonmal die komplette Datenbank ausgeben lassen und das funktionierte hervorragend.
Mittlerweile geht nix mehr.
Auch mit deiner Änderung hat sich das Ergebnis nicht verändert.
Die Variable $counter steht nach einer OR Suche auf 1, mir wird auch tatsächlich eine Zeile ausgegeben.. jedoch ist diese komplett leer, so wie das schon bei meiner
Version der Ausgabe war.
Das Ergebnis ist also leider das selbe :(
 
Hmm... Du machst mir Kopfschmerzen :D
Ohne Sucheingabe wird also alles korrekt gezeigt!?

Versuch mal die SQL Abfragen länger zu schreiben, also ohne zig OR und AND ...
Bei OR wird, wenn ich mich nicht täusche, nur solange gesucht bis das OR einmal erfüllt ist und AND gibt nur ein Ergebnis, wenn ALLE Bedingungen erfüllt sind...
 
Hi!

Meine Frage passt hier auch dazu! Ich habe diesen Codeschnipsel, aber der funktioniert nicht! Es wird nicht geupdatet!

Was ist daran falsch?
PHP:
if ($_POST["uebernehmen_wartung"])
    {

    mysql_query(" UPDATE data SET wartung = '$wartung', wartung_from_date = '$wartung_from_date', wartung_from_time = '$wartung_from_time', wartung_to_date = '$wartung_to_date', wartung_to_time = '$wartung_to_time' ");    
    
    }
 
Zurück