Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Suchfeld mit Abfrage auf eine MySQL-Datenbank

Frage Entwicklung PHP

Mitglied: SaschaRD

SaschaRD (Level 1) - Jetzt verbinden

08.01.2014, aktualisiert 10.01.2014, 1702 Aufrufe, 6 Kommentare, 4 Danke

Hallo zusammen,

ich steh mal wieder auf dem Schlauch.
Bin dabei ein Suchfeld auf die Webseite zu bringen. Jedoch gibt es irgendwo ein Problem.

Was möchte ich eigentlich? Das Suchfeld soll dazu dienen, Werte aus der MySQL Datenbank herauszulesen und die Suchtergebnisse darzustellen.
01.
<form action="" method="post" target="_self">				 
02.
	<div style="float:left;margin-left:35px"> 
03.
		<input type="text" name="searchfield" style="border: 1px solid #c8c8c8;width:185px"> 
04.
		<input type="image" src="img/search.gif" name="enter_search" alt="Suche" > 
05.
	<!-- <input type="submit" name="enter_search" value="Suche"> --> 
06.
	</div> 
07.
</form>
Hiermit definiere ich das Suchfeld und den Suchbutton (dargestellt als Bildchen).

Dann habe ich folgendes um die Daten aus der Datenbank zu lesen:
01.
<?php 
02.
	// Post-Variable bei der Suche im Feld 
03.
	if(isset($_POST['enter_search'])) 
04.
05.
		$DBHOST = "localhost"; 
06.
		$DBUSER = "root"; 
07.
		$DBPW = ""; 
08.
		$con = mysql_connect($DBHOST,$DBUSER,$DBPW) or die("Verbindungsversuch fehlgeschlagen" . mysql_error()); 
09.
		mysql_select_db("alchemie",$con) or die("Konnte die Datenbank nicht waehlen" . mysql_error()); 
10.
	 
11.
		$searchresult = trim(htmlentities(stripslashes(mysql_real_escape_string($_POST['searchfield'])))); 
12.
			$wsearch = "SELECT WName  
13.
							FROM wirkungen 
14.
								WHERE WName LIKE '%searchresult%'"; 
15.
				 
16.
		$post = mysql_query($wsearch); 
17.
		while($lpost = mysql_fetch_array($post)) 
18.
19.
		echo "<td align='center' valign='middle' style='width:16%'><h2>".$lpost['WName']."</h2></td>"; 
20.
21.
	}   
22.
?>
Erhalte keine Ausgabe, Webconsole gibt keine Meldung zurück. Das SQL-Statement funkioniert auch einwandfrei. Wird im Statement '%searchresult%' mit einem Suchbegriff ersätzt, erhalte ich Resultate aus der DB.

Vielleicht muss eine onclick-Funktion in den Button eingebaut werden, fällt mir grade ein beim Post schreiben =)

Über Hilfe wäre ich sehr dankbar.

Gruß, Sascha
Mitglied: Jochem
08.01.2014 um 15:22 Uhr
Moin,

fällt mir so beim Lesen auf: Wie heißt Dein Suchfeld und wie ist es in der WHERE-Klausel definiert?
Bau doch nach dem Aufbereiten von $wsearch mal ein Echo $wsearch ein, dann siehst Du, was tatsächlich im SELECT-Statement steht.

Gruß J chem
Bitte warten ..
Mitglied: colinardo
LÖSUNG 08.01.2014, aktualisiert 10.01.2014
Hallo Sascha,
dein SQL-String sollte so aussehen:
$wsearch = "SELECT WName FROM wirkungen WHERE WName LIKE '%" . $searchresult . "%'";
Grüße Uwe
Bitte warten ..
Mitglied: SlainteMhath
LÖSUNG 08.01.2014, aktualisiert 10.01.2014
Moin.

01.
$searchresult = trim(htmlentities(stripslashes(mysql_real_escape_string($_POST['searchfield'])))); 
Find ich gut, das du versuchst die Usereingabe sauber zu bekommen, aber das äussere TRIM kannst du dir sparen und das HTMLENTITIES ist nur sinnvoll, wenn der gesuchte Text auch mit HTMLENTITIES in die DB geschrieben wurde.

/EDIT: und mit stripslashes() machst du dir die ganze escaperei wieder kaputt.

Es genügt also:
01.
$searchresult = mysql_real_escape_string(  trim($_POST['searchfield'] ) );
Zusätzlich sollte noch in zeile 18 ein HTMLENTITIES um den $lpost[...]

Fehleranzeige usw in PHP ist eingeschalten, oder?

lg,
Slainte
Bitte warten ..
Mitglied: SaschaRD
10.01.2014, aktualisiert um 08:47 Uhr
Morgen zusammen,

erst einmal Danke für Eure Antworten.
Das Problem wie Uwe es bereits geschrieben hat lag daran, dass ich
01.
$searchresult = trim(htmlentities(stripslashes(mysql_real_escape_string($_POST['searchfield']))));
zwar deklariert habe, jedoch dann die Variable nicht ordnungsgemäß aufgerufen habe in dem SQL-Statement. Es fehlte das "$"-Zeichen.

@slainte,
danke für deine Anmerkungen sie wurden umgesetzt. Habe mich nochmal dadurch detaillierter mit htmlentities, trim, stripslashes befasst und dazu ein paar Übung auf w3schools durchgeführt.
Eine weitere Frage habe ich noch;
das Statement wird von Zeit zu Zeit erweitert. Muss mal sehen wie ich das Ganze am Ende hinbekomme.
Erhalte derzeit bei einer Suche z.B. "blind" (suche also nach einer Wirkung)

folgenden Output:
01.
Es wurde nach folgender Wirkung "blind" gesucht. 
02.
Alraunenwurzel Blindheit Henkerskappe Blindheit Lehm Blindheit
Hierbei möchte ich die zusammengehörigen Suchergebnisse in einer Zeile haben, die nächsten dann wieder in der nächsten u.s.w.
01.
Es wurde nach folgender Wirkung "blind" gesucht. 
02.
Alraunenwurzel Blindheit  
03.
Henkerskappe Blindheit  
04.
Lehm Blindheit
So sollte es letztendlich aussehen. Habe es mit "<br>" in der Ausgabe versucht.

Ausgabe sieht wie folgt aus:
01.
echo "<td align='center' valign='middle' style='width:20%'><h2>".$lpost['Name']."</h2></td>";  
02.
echo "<td align='center' valign='middle' style='width:20%'><h3>".$lpost['Wirkung4']."</h3></td>";
Jemand eine Lösung? Mit <br> ist es wohl nicht realisierbar.

Danke und Gruß, Sascha
Bitte warten ..
Mitglied: colinardo
LÖSUNG 10.01.2014, aktualisiert um 09:49 Uhr
01.
echo "<tr><td align='center' valign='middle' style='width:20%'><h2>".$lpost['Name']."</h2></td><td align='center' valign='middle' style='width:20%'><h3>".$lpost['Wirkung4']."</h3></td></tr>";
und vor der Schleife nicht das echo "<table>"; und hinter der Schleife nicht das das echo "</table>"; vergessen!

also im ganzen so:
01.
echo "<table>"
02.
while ($lpost = mysql_fetch_array($post)) {  
03.
 echo "<tr><td align='center' valign='middle' style='width:20%'><h2>".htmlentities($lpost['Name'])."</h2></td><td align='center' valign='middle' style='width:20%'><h3>".htmlentities($lpost['Wirkung4'])."</h3></td></tr>"
04.
05.
echo "</table>";
Grüße Uwe
Bitte warten ..
Mitglied: SaschaRD
10.01.2014, aktualisiert um 17:06 Uhr
Hallo Uwe,

*Kopf auf die Tischplatte haut*
Sicher. Bei einer Tabelle muss ich natürlich <tr> "table row" einfügen, damit dies in einer neuen Tabellenzeile ausgegeben wird.

Danke Dir.

Noch eine Frage:
Habe jetzt eine Reset/Refresh Funktion in die Seite eingebaut.

Diese funktioniert leider nicht für das Suchfeld, die dort gefunden einträge werden weiterhin angezeigt.
Wird etwas über das Dropdown-Menu ausgewählt und dann der Refresh-Button betätigt, wird die Seite zurückgesetzt.

Verwende dafür folgenden Zeilen
01.
<input type="image" src="img/refresh.png" name="refresh" alt="Refresh" onclick="history.go(0)">
Habe bereits mehrere Varianten versucht z.B.
01.
<script> 
02.
function reloadpage() 
03.
04.
location.reload(); 
05.
06.
</script> 
07.
 
08.
onclick="reloadpage()"
Gruß, Sascha
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst MYSQL Abfrage Werte summieren (3)

Frage von Ghost108 zum Thema Datenbanken ...

Datenbanken
gelöst MySQL Abfrage um JOIN erweitern (14)

Frage von datadexx zum Thema Datenbanken ...

Datenbanken
Datenbank Abfrage sehr langsam! Bitte um Hilfe (12)

Frage von samet22 zum Thema Datenbanken ...

Microsoft Office
Hilfe bei Erstellung eines Suchfelds im Excel (1)

Frage von ZeeRee zum Thema Microsoft Office ...

Neue Wissensbeiträge
LAN, WAN, Wireless

Schwachstelle im WPA2 Protokoll veröffentlicht

(3)

Information von colinardo zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte