MySQL Anfängerproblem: Abfragen, Ausgaben etc

@Lektor

Hm, muss man nicht bei sowas wie "wartung = '$wartung'" das "wartung" in Anführungszeichen setzen ?

Schau mal bei meinem php-code ganz oben, die Suchanfrage.
Da sind bestimmte Begriffe auch in so speziellen Anführungszeichen gesetzt, ich glaube die musst du hier auch nutzen.
So ganz ohne geht es glaube ich nicht, auch wenn der komplette Text schon in Anführungszeichen ist.

@Gabriel
Ja, mir bereitet die Sache auch Kopfschmerzen, zumal das ja eigentlich nicht so wahnsinnig schwierig sein sollte.
Ohne Suche hat die Ausgabe damals prima funktioniert.
Da hatte ich aber auch noch eine andere Version für die Ausgabe benutzt, die ich aus einem Tutorial abgeschaut hatte.

Der Code für die Ausgabe in dem Tutorial sieht so aus:

PHP:
<?php
while ($adr = mysql_fetch_array($adressen_query)){
?>
<tr>
<td><?=$adr['id']?></td>
<td><?=$adr['anrede']?></td>
<td><?=$adr['vorname']?></td>
<td><?=$adr['nachname']?></td>
<td><?=$adr['strasse']?></td>
<td><?=$adr['plz']?></td>
<td><?=$adr['wohnort']?></td>
<td><?=$adr['fon']?></td>
<td><?=$adr['fax']?></td>
<td><?=$adr['email']?></td>
</tr>
<?php
}
?>

Damals funktionierte aber die Suche dann nicht und so habe ich Stück-für-Stück alles mal ausgetauscht, Suche wie Ausgabe.
Und mittlerweile geht halt von der Ausgabe nichts mehr, die Suche hingegen schon.
Mist ey.
Und das ist noch das leichtere Datenbankenproblem.
Ich habe nämlich schon eine neue Aufgabe, wo ich zwei Datenbanken miteinander vergleichen muss und bei gewissen Übereinstimmungen in einer der Tabellen bestimmte Felder automatisch ausgefüllt werden müssen.
Da schmilzt mir schon dir Birne beim drüber nachdenken ^^

[Edit]
Hm, ich habe die Ausgabe jetzt mal wieder gegen die alte Version ersetzt, die ich in diesem Post dargestellt habe.
Aber so wirklich geklappt hat es leider trotzdem nicht.
Nun hat mir php 782 Zeilen ausgegeben, obwohl ich nach NICHTS gesucht habe, also ich habe alle Felder leer gelassen.
Also sollte mir eigentlich die komplette Tabelle ausgegeben werden, die aber 811 Zeilen lang ist.. das schlimmste ist aber:
alle Zeilen sind leer -.-

[Edit2]
So. Ich jetzt mal fetch_row durch fetch_array ausgetauscht, so wie es auch in dem Beispiel aus dem Tutorial ist.
Nun wird mir die komplette Tabelle wieder ausgegeben, wenn ich eine OR Suche mache und gar nichts, wenn ich eine AND Suche durchführe.
Das liegt einfach daran, das mySQL in der Datenbank wirklich exakt so sucht, wie es dort steht.
Wenn ich also eine OR Suche mit nur einem Parameter durchführe, wird eine Zeile mit diesem Parameter gesucht UND andere Zeilen, auf die jede andere Bedingung zutrifft, die nämlich ist, das irgendein Feld leer ist, weil ich ja nur für ein einziges Feld einen Parameter übergeben habe.
Versteht ihr ?
Wenn ich z.B. eine OR Suche mit einer Port-Angabe durchführe... z.B. 20.
Dann wird nach einer Zeile gesucht, in der Port = 20 ist,
ODER eine Zeile in der "auf Port" = "" ist ODER eine Zeile in der Switch = "" ist usw... und so habe ich dann wieder je Zeile der Tabelle ausgegeben.
Ich müsste also praktisch leere Felder aus dem Suchstring rausziehen.. den Suchstring mit jeder Suche individuell und dynamisch kreieren.
Geht das irgendwie ?
Bei einer Or oder And Suche soll also nur nach Werten gesucht werden, die auch tatsächlich eingegeben wurden.
Ich stelle mir das so vor, das ich auf der Suchseite neben jedem Suchparameter eine Checkbox mache, die "nicht suchen" heißt, womit man dann ein Flag übergibt, das php sagt, das jene Parameter nicht in die Suche mit einbezogen werden sollen.
Aber wie packt man das in eine Funktion
 
Zuletzt bearbeitet:
Ich persönlich bevorzuge es statt der Anführungszeichen Hochkommata zu verwenden...
''.$wartung.''

Dann probier doch indem du jedes Suchkriterium einzeln übern query jagst, also jedes mal ne neue SQL-Abfrage...
Mit $weißnichwas = mysql_fetch_array($dbabfrage);
den ersten Query
und dann
$weißnichwas .= mysql_fetch_array($dbabfrage);
Der . vor dem = sorgt dafür, dass das bestehenden Array erweitert wird. Die erste Abfrage ohne . löscht dann die alten Daten und fängt das Array neu an!
 
Hi

Ich habe das ganze am Freitag noch fertig bekommen.
Ich habe die weiter oben angegebene Ausgabe-Version aus dem Tutorial nochmal reingeklimpert und siehe da: es geht !

Auch habe ich festgestellt, das die Unterscheidung zwischen AND und OR Abfrage völlig überflüssig ist und habe die Suche dann umgestrickt.
Leer gelassene Suchparameter werden nun durch ein "*" ersetzt und verfälschen damit nicht mehr das Suchergebnis.

Aber hier mal die Codes für die Such- sowie die Ausgabe-Seite, voll funktionsfähig:

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

			<td align="left" valign="top" width="20%" height="8%">
				<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="DCN-Rechner" selected>APR</option>
                         		<option value="DCN-Laptop">maAPR</option>
                                         <option value="Telefon">Telefon</option>
                                         <option value="BK-Rechner">BK</option>
					 <option value="Drucker">Drucker</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%">
				<br>
                                <br>
				<input type="submit" value="suchen">

           		 </td>
			<td align="left" valign="top" width="50%">
				<br>
                                <br>
				<input type="reset" value="reset">
			</td>
		</tr>
		<tr>
			<td align="center" colspan="2" height="5%">
				<font face="arial" color="CDBA96">
				"%" für Wildcard
                        	</font>
			</td>
		</tr>
	</table>

</font>
</form>
</body>
</html>

PHP:
<html>
<body background="bg.jpg">
<head>
<title>Ausgabe</title>
</head>
<?php
$port=$_POST["port"];
$swport=$_POST["switchport"];
$switch=$_POST["switch"];
$desc=$_POST["description"];
$status=$_POST["status"];
$typ=$_POST["typ"];
$raum=$_POST["raum"];
$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 ($port == "")
	{
	$port = "*";
	}
if ($swport == "")
	{
	$swport = "*";
	}
if ($switch == "")
	{
	$switch = "*";
	}
if ($desc == "")
	{
	$desc = "*";
	}
if ($status == "")
	{
	$status = "*";
	}
if ($typ == "")
	{
	$typ = "*";
	}
if ($raum == "")
	{
	$raum = "*";
	}
$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'";
$query=mysql_query($sql) or die("Query nicht erfolgreich");
$anzahl = mysql_num_rows($query);
?>
<table border="0" 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">Verwendung</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($row = mysql_fetch_array($query))
	{
	$counter=$counter+1;
?>
 	<tr>
		<td>
			<font face='arial' color='CDBA96'><?=$row['Port']?></font>
		</td>
		<td>
			<font face='arial' color='CDBA96'><?=$row['Auf Port']?></font>
		</td>
		<td>
			<font face='arial' color='CDBA96'><?=$row['von Switch']?></font>
		</td>
		<td>
			<font face='arial' color='CDBA96'><?=$row['Raum']?></font>
		</td>
		<td>
			<font face='arial' color='CDBA96'><?=$row['Dose']?></font>
		</td>
		<td>
			<font face='arial' color='CDBA96'><?=$row['Verwendung']?></font>
		</td>
		<td>
			<font face='arial' color='CDBA96'><?=$row['Beschreibung']?></font>
		</td>
		<td>
			<font face='arial' color='CDBA96'><?=$row['Status']?></font>
		</td>
		<td>
			<font face='arial' color='CDBA96'><?=$row['Link-Status']?></font>
		</td>
	</tr>
<?php
	}
?>
</table>
<br>
<br>
<table border="0" width="80%">
	<tr>
		<td align="center">
		<font face="arial" size="+1" color="EED8AE">
		Anzahl Zeilen: <?php echo $counter ?>
		</font>
		</td>
	</tr>
	<tr>
		<td align="center">
		<br>
		<br>
		<form action="suche.html" method="link">
		<input type="submit" value="neue Suche">
		</td>
	</tr>
</table>
</form>
</body>
</html>

Der Thread hier war zwar nicht wirklich eine Hilfe, aber ein Versuch wert.
Trotzdem danke.
 
Zurück