mysqldumper
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 30.07.2008, 13:09   #1
TAX
TP-Junior
 
Registriert seit: Mar 2004
TAX macht alles soweit korrekt

Variabler Sortierparameter in Datenbanksuche


Ich habe ein Suchscript gefunden, das ich erweitern wollte. Und zwar soll der Benützer auswählen können, wie die gesuchten Daten sortiert werden sollen inkl. Blätterfunktion.

Wenn ich in der GET-Routine z.B ORDER BY Idno DESC die Sortierung fix lasse, funktioniert es und zwar bei jedem Blättern.

Die Query sieht dann so aus:
SELECT * FROM artikel WHERE Titel LIKE'%stem cells%' ORDER BY Idno DESC LIMIT 0, 20

Wenn ich aber aus dem Formular die ausgewählte Sortierung hole, dann ist
die erste Darstellung i.O., aber immer wenn er die GET-Routine durchläuft, gibt es den Fehler:

Im betreffenden Query fehlt komischerweise der Sortierungsparameter:

SELECT * FROM artikel WHERE Titel LIKE'%stem cells%' ORDER BY LIMIT 20, 20

Hier das Script, entscheidend ist hier die Routine ab else if ($_GET)

PHP-Code:
<form action="suche.php" method="POST" name="suche">
    <label>
    Suchbegriff:
      <input name="searchstring" type="text" size="25" />
              <label>
        Sortierung Ausw&auml;hlen:
        <select name="sortieren">
          <option value="Idno DESC" selected>Idno absteigend</option>
          <option value="Jahrgang DESC">Jahrgang absteigend</option>
          <option value="BdVol DESC">BdVol absteigend</option>
          <option value="Ablage DESC">Ablage absteigend</option> 
          <option value="Idno ASC">Idno aufsteigend</option>
          <option value="Jahrgang ASC">Jahrgang aufsteigend</option>
          <option value="BdVol ASC">BdVol aufsteigend</option>
          <option value="Ablage ASC">Ablage aufsteigend</option>  
        </select>
      <input type="submit" value="suchen" />

....

<?php   
    
if (!empty ($_POST['searchstring']))
    { 
      
$query 'SELECT 
                  COUNT(*) 
                FROM 
                  artikel 
                WHERE 
                  Titel LIKE'
."'%".$_POST['searchstring']."%'";
      
$result mysql_query ($query) or die (mysql_error());
      
$found mysql_fetch_row ($result);
      
$num $found[0];
      
      
$query 'SELECT 
                  * 
                FROM 
                  artikel 
                WHERE 
                  Titel LIKE'
."'%".$_POST['searchstring']."%'".'
                ORDER BY '
.$_POST['sortieren'].
                LIMIT 0, 20'
;
      
$param '?num='.$num.'&string='.urlencode($_POST['searchstring']);
      echo 
'<br>'.$query.' Query aus POST-Parameter<br>';
    }
    else if (
$_GET)
    {
      
// Suchabfrage per GET-Parameter
      
$query 'SELECT 
                  * 
                FROM 
                  artikel 
                WHERE 
                  Titel LIKE'
."'%".urldecode($_GET['string'])."%'".
                ORDER BY'
.$_GET['sortieren'].
                LIMIT 
                  '
.$_GET['limit'].', 20';
      
// register_globals-Problem !
      
$num $_GET['num'];
      
// Defininition der GET-Parameter (Trefferanzahl, Suchwort)
      
$param '?num='.$_GET['num'].'&string='.$_GET['string'];
      echo 
'<br>'.$query.' GET Parameter<br>';
    }
    if (
$num)
    {
      
$result mysql_query ($query) or die (mysql_error());
      while (
$row mysql_fetch_assoc($result))
      {
        echo 
'<br>'.$row['Titel'].'<br />';
      }
      echo 
'<br>';
      for (
$i 1$i <= ceil ($num 20); $i++)
      {
        
// Von-Wert
        
$from $i 20 19;
        
// Bis-Wert
        
($i 20 <= $num) ? $to $i 20 $to $num;
        
// Limit-Wert
        
$limit $i 20 20;
        
// Ausgabe der Links inkl. GET-Parameter für Limit
        
echo '<a href="'.$_SERVER['PHP_SELF'].$param;
        echo 
'&limit='.$limit.'">'.$from.'-'.$to.'</a> ';
      }
    }
  
?>
Also, darf ich das "ORDER BY'.$_GET['sortieren'].'" gar nicht verwenden, oder habe ich einen Syntaxfehler oder sonst was?
Vielen Dank für jeden Tipp und herzliche Grüsse von TAX



PS. Natürlich möchte ich später auch die Suche in den Feldern variieren, aber wenn das gelöst ist, wird das dann auch kein Problem sein.
TAX ist offline   Mit Zitat antworten


Alt 30.07.2008, 14:07   #2
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Du musst dann natürlich den sortstring als Parameter in den Blätterlink einbauen. Dann ist es nicht mehr POST sondern GET (Du kannst auch $_REQUEST nutzen)

Grundsätzlich solltest Du niemals POST oder GET-Parameter direkt in SQL einbauen, das läd geradezu zu Manipulation (und Unfug) ein!
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 30.07.2008, 14:32   #3
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
da sich ja nicht die abgerufenen daten, sondern nur deren angezeigte reihenfolge aendert, wuerde ich auf weitere anfragen an die db voellig verzichten. das spart zeit, schafft sicherheit und ist, wenn man die ergebnisse des ersten abfrageergebnisses gut strukturiert, sicher auch viel praktischer ...
tipp: array_multisort

Geändert von theo (30.07.2008 um 14:44 Uhr). Grund: ich habe gelernt ... danke andreas ;)
theo ist offline   Mit Zitat antworten
Alt 30.07.2008, 14:37   #4
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Off Topic

Zitat:
Zitat von theo Beitrag anzeigen
Hi theo,

hier auch ein Tipp:
Wenn man eine PHP Funktion verlinken möchte, kann man das elegant und zeitsparend mit einem BBCode machen. So wird aus [phpfunction]array_multisort[/phpfunction] dann ein array_multisort
Rizzo ist gerade online   Mit Zitat antworten
Alt 30.07.2008, 14:43   #5
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
das ist schon beinahe unheimlich, weil ich das grad in deinem thread gesehen hab und mich schon gefragt habe, wie du das niedliche symbol davor bekommen hast. bin ich wohl selbst schuld, wenn ich mal ne weile nicht hier war ...
theo ist offline   Mit Zitat antworten
Alt 30.07.2008, 14:47   #6
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Zitat:
Zitat von theo Beitrag anzeigen
... wenn ich mal ne weile nicht hier war ...
28.09.2007

Jetzt aber wieder

Rizzo ist gerade online   Mit Zitat antworten
Alt 30.07.2008, 15:45   #7
TAX
TP-Junior
 
Registriert seit: Mar 2004
TAX macht alles soweit korrekt
Vielen Dank vorerst einmal für alle Vorschläge.

Zitat:
Zitat von steffenk Beitrag anzeigen
Du musst dann natürlich den sortstring als Parameter in den Blätterlink einbauen. Dann ist es nicht mehr POST sondern GET (Du kannst auch $_REQUEST nutzen)

Grundsätzlich solltest Du niemals POST oder GET-Parameter direkt in SQL einbauen, das läd geradezu zu Manipulation (und Unfug) ein!
Da es eine rein private Anwendung ist, die nur auf meinem localhost läuft, kann ich mir letzteres leisten. Ich würde sonst nämlich gegen jene Urheberrechte verstossen.
Könntest Du mir auf die Sprünge helfen, wie ich das in den sortstring in den Blätterlink einbauen muss? Ich meine, ich sei meinem Ziel näher, als wenn ich das mit dem array..multisort anwende.

Herzliche Grüsse von TAX
TAX ist offline   Mit Zitat antworten
Alt 30.07.2008, 15:47   #8
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Hallo TAX,

schau Dir doch mal diesen Thread an, vielleicht hilft er dir ja weiter.
Rizzo ist gerade online   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Variabler Sortierparameter in Datenbanksuche [MySQL] Variabler Sortierparameter in Datenbanksuche
« Probleme mit Umlauten in ASP.NET | refresh unterdrücken »

Stichworte
mysql

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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
Variabler Hintergrund Tom CSS 12 16.08.2007 14:43
mysql - Datenbanksuche optimieren dieter99 Traum-Dynamik 3 20.04.2006 17:33
MP3's mit variabler Samplingrate abspielen norater Flash 1 22.12.2005 19:14
datenbanksuche suche nach uebereinstimmung 1, uebereinstimmung 2, ... mimamo Traum-Dynamik 3 15.03.2005 12:26
variabler name für Variable reetosh Traum-Dynamik 1 09.08.2001 00:26


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:58 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67