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

Variable aus radio buttons für SQL Select Abfrage

Frage Entwicklung PHP

Mitglied: pt-tech

pt-tech (Level 1) - Jetzt verbinden

04.06.2010, aktualisiert 06.06.2010, 6167 Aufrufe, 5 Kommentare

Hallo allerseits,

ich bin dabei ein script zu programmieren, welches eine Datenbank abfragt.
Dabei soll auswählbar sein, was angezeigt werden soll.
Das ist im moment über radiobuttons getan.
Das Problem ensteht nun dadurch, dass falls radiobuttons nicht gesetzt sind, überflüssige Kommata vorhanden sind und der Code zur SQL Abfrage somit fehlerhaft wird.
Weiß jemand, wie man das umgehen kann ?

Liebe grüße, pt-tech

P.S.: Die relevanten Ausschnitte meines Quellcodes:

01.
		Ausgabe: 
02.
		<input type="radio" name="ausgabe1" value="name">Name 
03.
		<input type="radio" name="ausgabe2" value="Region">Region 
04.
		<input type="radio" name="ausgabe3" value="Flaeche">Fl&auml;che 
05.
		<input type="radio" name="ausgabe4" value="Einwohner">Einwohner 
06.
		<input type="radio" name="ausgabe5" value="BIP">BIP<br/> 
07.
 
08.
		Suchbegriff: <input type="text" name="Suchbegriff">  
09.
 
10.
		<input type="submit" value="Suchen"> <br> 
11.
 
12.
		</form>'; 
13.
 
14.
// Wurden Daten über POST gesendet 
15.
 
16.
	if ($_POST) { 
17.
 
18.
 // Wurde ein Suchbegriff eingegeben 
19.
 
20.
 	if ($_POST["Suchbegriff"] != "") { 
21.
 
22.
 
23.
$array = array($_POST[ausgabe1], $_POST[ausgabe2], $_POST[ausgabe3], $_POST[ausgabe4], $_POST[ausgabe5]); 
24.
$ausgabe = implode(",", $array); 
25.
 
26.
      		$sql="SELECT $ausgabe FROM db WHERE $_POST[suche] LIKE '%$_POST[Suchbegriff]%'";
Mitglied: ikmam78
04.06.2010 um 17:28 Uhr
$ausgabe = str_replace(",,",", ",$ausgabe);

?
Bitte warten ..
Mitglied: dog
04.06.2010 um 17:40 Uhr
Na hoppala, das geht ja wieder drüber und drunter.
Zuerst liest du dir den Artikel mal durch: http://de.wikipedia.org/wiki/SQL-Injection
Nein, nicht überfliegen - richtig lesen und verstehen!

Dann fügst du den Code in dein Script ganz oben ein (aber nur solange du den Code veränderst, wenn du fertig bist muss der wieder raus):
01.
error_reporting(E_ALL|E_STRICT); 
02.
ini_set('display_errors','On');
Darauf wird dein Script auseinander fliegen, was auch gut so ist. Da sind so viele Fehler drin, die du nur nicht siehst, weil PHP immer versucht es jedem recht zu machen.

Und dann schauen wir mal weiter...
Bitte warten ..
Mitglied: Guenni
04.06.2010 um 18:49 Uhr
Hi pt-tech,

ich würde anstatt Radio's Checkboxen verwenden, weil nicht angewählte

Checkboxen garnicht erst gesendet werden.

Dein SQL-Statement "$sql="SELECT $ausgabe FROM db WHERE $_POST[suche] LIKE '%$_POST[Suchbegriff]%'";"

habe ich etwas abgeändert, weil $_POST[suche] (für mich) irgendwie sinnfrei ist.

Script:

01.
<html> 
02.
<head> 
03.
<title>Untitled</title> 
04.
</head> 
05.
<body> 
06.
<form action="<?php echo $_SERVER[PHP_SELF];?>" method="post"
07.
<input type="checkbox" name="spalten[]" value="namen"> Namen<br> 
08.
<input type="checkbox" name="spalten[]" value="region"> Region<br> 
09.
<input type="checkbox" name="spalten[]" value="flaeche"> Flaeche<br> 
10.
<input type="checkbox" name="spalten[]" value="einwohner"> Einwohner<br> 
11.
<input type="checkbox" name="spalten[]" value="bip"> BIP<br><br> 
12.
<input type="text" name="suchbegriff"> Suchbegriff<br> 
13.
<input type="submit" name="cmd" value="Los gehts"
14.
</form> 
15.
<?php 
16.
if(isset($_POST['spalten'])){ 
17.
 $spalten=implode(",",$_POST['spalten']); 
18.
 /* 
19.
 * Select-Statement 
20.
 */ 
21.
 $query="select $spalten from tabelle "
22.
}else
23.
		 echo "Sie müssen mindestens 1 Checkbox anwählen"
24.
		 exit
25.
26.
$suchbegriff=trim($_POST['suchbegriff']); 
27.
if(strlen($suchbegriff)==0){ 
28.
 echo "Geben sie einen Suchbegriff ein"
29.
 exit
30.
31.
/* 
32.
* Where-Clausel "zusammenbauen" 
33.
*/ 
34.
$spalten=$_POST['spalten']; 
35.
$where_clausel="where "
36.
$where_clausel.="$spalten[0] like '%$suchbegriff%'"
37.
$i=1; 
38.
while($spalte=$spalten[$i++]){ 
39.
 $where_clausel.=" or $spalte like '%$suchbegriff%'"
40.
41.
/* 
42.
* Where-Clausel an Select-Statement anhängen 
43.
*/ 
44.
$query.=$where_clausel
45.
/* 
46.
* Ausgabe der Abfrage 
47.
*/ 
48.
echo $query;  
49.
?> 
50.
</body> 
51.
</html>

Gruß
Günni
Bitte warten ..
Mitglied: Arano
05.06.2010 um 00:53 Uhr
Hallo pt-tech.

Zuerst folgen wir den Anweisungen von Dog, das ist __wirklich__ wichtig !

Dan siehst du dir am besten auch noch einmal an wie so ein "Radio-Button" funktioniert / funktionieren kann: selfHTML input radio und wie du selbiges mit deinem Vorhaben verbinden kannst.
Daraus sollte sich dann schon eine gute und einfache Möglichkeit ergeben wie du dein jetzt genanntes Problem abfangen und verarbeiten kannst.

Und zu guter letzt noch zwei schöne PHP-Funktionen: PHP-Manual - isset() und PHP-Manual - empty()


~Arano

Edit:
Ups... kleiner Fehler meiner Seits:
Ein Teil dessen worauf ich bei den Radiobuttons hinaus wollte steht auf der selfHTMl-Seite gar nicht, lies dazu das hier: PHP-Manual - PHP-HTML-Array
Bitte warten ..
Mitglied: pt-tech
05.06.2010 um 18:28 Uhr
Zuerst einmal vielen lieben Dank an alle für die schnelle Hilfe.

Vielleicht noch eine kleine Erklärung dazu,
oben das ist nur der relevante Codeausschnitt für das Problem, was Günni mir sehr gut gelöst hat.
Vielen Dank dafür.

Zur Erklärung des Projekts:
Unser Informatiklehrer kam auf die tolle Idee uns ein solches Script als Hausarbeit schreiben zu lassen, weil ihm noch eine note fehlt.
Das ganze in knapp 2 Wochen und ohne jegliche php Vorkenntnisse, deshalb mag das ganze auch sehr fehlerhaft sein.

Da es allerdings nur dazu gedacht ist, ihm fortgeführt zu werden, muss es nur innerhalb gewisser Grenzen funktionieren und es gibt keinen Sicherheitsaspekt.
Durch den Zeitmangel sind dann einzelne Fehler zu ignorieren, so lange das grobe und ganze läuft.

Nochmals vielen Dank und liebe Grüße,

pt-tech
Bitte warten ..
Ähnliche Inhalte
Datenbanken
IF Abfrage im SELECT Oracle SQL
gelöst Frage von 94451Datenbanken2 Kommentare

Hallo , ist es möglich im SELECT eine IF-Abfrage machen (bin auch offen für eine andere Lösung). >SELECT ID, ...

Datenbanken
SQL Abfrage (Multiple Rows in singleton select)
Frage von Triforce500Datenbanken2 Kommentare

Hallo, ich habe zwei Tabellen (1:N), heißt: auf einen Datensatz in Tabelle A werden zwei Datensätze in Tabelle B ...

JavaScript
Radio Button als Pflicht definieren mit js
gelöst Frage von PludanJavaScript4 Kommentare

Hallo Ich muss in einem Formular die Radio Button als Pflicht Button definieren. Dies haben ich so ohne erfolg ...

Datenbanken
SQL Statement - Select TOP x - Variables Filterkriterium
Frage von Blu3Scr33nDatenbanken3 Kommentare

Hallo liebe Administratoren, ich baue mir grade eine kleine Access-DB zusammen und bin dabei auf ein Problem gestoßen: Ich ...

Neue Wissensbeiträge
Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 39 MinutenSicherheit2 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 1 StundeSicherheit9 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 7 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 20 StundenMac OS X4 Kommentare

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Heiß diskutierte Inhalte
Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell27 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1025 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen18 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...