php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.04.2007, 11:52  
Erfahrener Benutzer
 
Registriert seit: 14.04.2006
Beiträge: 111
tayke
Standard Spalten nicht zulassen

Hallo,

ich will über folgendes Formular in einer bestimmten Datenbankspalte eine Suche realisieren, was auch klappt.
Nun würde ich aber gern nur bestimmte Spalten erlauben, was ich mit der for- und if-Schleife versucht habe zu lösen.
Nur wird jetzt leider bei jeder Ausgabe die gültigen und ungültigen Spalten ausgegeben, es sollte aber nur bei einer nicht erlaubten Wahl die ungültige Spalte erscheinen.
Was muss ich da ändern?

Code:
<form method="post">
  <select name="spalte">
    <option value="name">Name</option>
    <option value="jahrgang">Jahrgang</option>
    <option value="test">Test (nicht erlaubt)</option>
  </select>
  <input name="suchen">
  <input type="submit">
  <input type="hidden" name="check" value="100" />
</form>
PHP-Code:
<?php
if ( $_POST['check'] == 100 ) {

$spalten = array('name''jahrgang');

for (
$x=0$x<3$x++) {
  if ( 
$_POST['spalte'] == $spalten[$x] ) {
    
$sql "SELECT * FROM tabelle WHERE `" $_POST['spalte'] . "` LIKE '%" $_POST['suchen'] . "%'";
    
// ...Ausgabe
    
}
  else { 
    echo 
'UNGÜLTIG!!! - '
    echo 
$spalten[$x]; 
    echo 
'
'
; }
} }
?>
tayke ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.04.2007, 12:35  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Dann merk dir doch, ob du UNGÜLTIG schon ausgegeben hast oder brech den Schleifendurchlauf mittels break; ab.
Zergling-new ist offline  
Alt 04.04.2007, 12:50  
Erfahrener Benutzer
 
Registriert seit: 14.04.2006
Beiträge: 111
tayke
Standard

Hi,
wenn man jetzt z.b. die zweite Option ausgewählt hat, dann wird die erste schon als Ungültig ausgegeben (obwohl sie erlaubt ist), daher kann ich das nicht abbrechen, sonst kommts zu keiner Ausgabe.
Oder kann man das irgendwie anders überpüfen?
tayke ist offline  
Alt 04.04.2007, 12:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

OK also einen Fehler hast du schon drinne, die Schleife wird 1x zuviel ausgeführt.

Code:
for ($x=0; $x<3; $x++) {
0, 1, 2 sind jeweils kleiner 3.
$spalte ist aber nur 2 Elemente groß.

Verwende dies hier:
Code:
for ($x = 0, $max = count($spalte); $x < $max; ++$x) {
(++$x ist schneller als $x++ und hier kommt es nicht auf die Zuweisungsreihenfolge an)
Zergling-new ist offline  
Alt 04.04.2007, 13:09  
Erfahrener Benutzer
 
Registriert seit: 14.04.2006
Beiträge: 111
tayke
Standard

Danke für den Tipp!
Kann man noch mehr optimieren?

Benötige ich dann überhaupt noch den else Teil, da werden doch dann nur die Spalten zugelassen, die im Array sind?!
tayke ist offline  
Alt 04.04.2007, 17:01  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

PHP-Code:
$spalten = array('name''jahrgang'); 
if (
in_array($_POST['spalte'], $spalten
{
  
$sql "...";
}
else
{
  echo 
"UNGÜLTIG...";

DiBo33 ist offline  
Alt 04.04.2007, 20:18  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Du kannst auch mit array_intersect () die gemeinsamen Elemente von
$_POST[spalte] und $spalten bestimmen und diese dann mit foreach durchlaufen. Damit könntest Du auch mehrfache Spalten zur Suche angeben. Bei der bisherigen Lösung würde ich es wie Dibo machen: erst ablehnen, wer dann durchkommt wird in die Query verbaut.
nikosch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php spalten mqs PHP Tipps 2008 2 18.03.2008 13:29
Index über 2 Spalten, unique mAy^daY Datenbanken 5 09.08.2007 16:02
Hilfe bei Mysql Query aus mehreren spalten benötigt cytrobic Datenbanken 8 18.05.2007 11:36
maximalwert aus mehreren Spalten obi PHP Tipps 2006 9 17.10.2006 12:55
Wie viele Spalten kann eine Datenbank Tabelle den tragen`? tomtaz Datenbanken 11 20.05.2006 20:22
[Anfänger]: maximale anzahl an spalten in einer tabelle? moose Datenbanken 1 22.04.2006 22:19
Wie kann ich die Spalten einer Tabelle auslesen ? Datenbanken 0 31.10.2005 00:29
Alias-Spalte bei SQL-Abfrage aus drei Spalten generieren winfo_cologne Datenbanken 3 10.09.2005 11:13
drei Spalten einer Tabelle zusammenfügen Lia PHP Tipps 2005-2 24 16.08.2005 15:58
Spalten einer Tabelle mit Eigenschaften auslesen GELight PHP Tipps 2005-2 6 25.07.2005 13:14
spalten zählen mit ausnahmen Datenbanken 8 16.07.2005 13:04
Addieren von 3 Spalten, nach Ergebnis sortieren Datenbanken 11 15.06.2005 09:54
Spalten Dynamisch als Tabelle anzeigen lassen(Spalten ausl.) Cyberbob_at_tot PHP Tipps 2005-2 6 04.06.2005 22:55
CSS: 2 Spalten á 50% ohne float HTML, Usability und Barrierefreiheit 2 31.03.2005 14:37
[Erledigt] [OT] besser eine Tabelle mit mehr Spalten oder aufteilen ? Datenbanken 1 22.10.2004 17:26


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.