Top-Themen

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, 1718 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
PHP
PHP MySQL Abfrage aus Datenbank
Frage von Lost144PHP12 Kommentare

Hallo, Ich habe in einer Datenbank daten über VM's stehen. Angaben wie hostname,adresse, serverat usw. Wie kann ich in ...

Datenbanken
MYSQL Abfrage
gelöst Frage von datadexxDatenbanken20 Kommentare

Halo an alle MySQL Spezialisten! Wie kann ich denn am besten folgende Werte abfragen und berechnen? Ausgang für die ...

Datenbanken
MySQL Abfrage für eine Umsatzauswertung kombinieren
gelöst Frage von RedBullmachtfitDatenbanken2 Kommentare

Hallo zusammen, ich möchte Kundenumsätze aus einer MySQL (v5.6, Windows) Datenbank ziehen. Ich komme mit der Struktur jedoch nicht ...

Datenbanken
MySQL - Separate Config für Datenbanken
Frage von EinTypDatenbanken2 Kommentare

Hallo Community, ich habe einen MySQL-Server und habe mich letztens an einer Eigenschaft von InnoDB gestört: Das hochzählen der ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 StundenWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 4 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 18 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 22 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...