Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1614 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
PHP
MySQL-Abfrage mit php: Wert + true bzw. false (2)

Frage von tomolpi zum Thema PHP ...

Datenbanken
gelöst MYSQL Abfrage (20)

Frage von datadexx zum Thema Datenbanken ...

C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...