php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 12-01-2008, 21:23
psywolf
 Newbie
Links : Onlinestatus : psywolf ist offline
Registriert seit: Jan 2008
Beiträge: 3
psywolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard Afragen sortierung like() problem

Guten Abend

Ich arbeite an einer Suche, komme aber nicht mehr weiter und wäre froh wenn mir kurz jemand helfen kann.

Problem:
Ich gebe in einem Suchfeld eine Zahl ein z.B 12. Nun sucht das folgende Skript alle Nummern heraus die diese Zahl beinhalten. Damit es aber effektiver ist, möchte ich das die zahl wo 12 am Anfang steht zu oberst haben.

Hier noch ein Bild zur Verdeutlichung http://img246.imageshack.us/my.php?image=suchevk7.jpg

Gruss Markus

PHP-Code:
$var $_GET["search"];
       
       if (
preg_match("/^\d+$/",$var))
       
$var = (int)$var;
       
       if (
is_int($var))   {
        
$sql "SELECT pd.products_name, cd.categories_name, ptc.products_id, p.products_model
                FROM (("
.TABLE_PRODUCTS." AS p LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id))
                INNER JOIN "
.TABLE_PRODUCTS_TO_CATEGORIES." AS ptc ON (p.products_id = ptc.products_id)) 
                INNER JOIN "
.TABLE_CATEGORIES_DESCRIPTION." AS cd ON (ptc.categories_id = cd.categories_id)
                WHERE p.products_status = '1'
                [B]AND p.products_model like('%" 
xtc_db_input($_GET['search']) . "%')[/B]
                AND pd.language_id = '"
.(int) $_SESSION['languages_id']."'".$fsk_lock.$group_check.
                
" ORDER BY p.products_model LIMIT 20"; } 

Geändert von psywolf (12-01-2008 um 22:08 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 12-01-2008, 22:33
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
'%" . xtc_db_input($_GET['search']) . "%'
Nun was sagen dir die %-Zeichen auf beiden Seiten? Und was passiert wenn du das vordere entfernst?
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #3 (permalink)  
Alt 12-01-2008, 23:07
Lennynero
 Registrierter Benutzer
Links : Onlinestatus : Lennynero ist offline
Registriert seit: Sep 2007
Beiträge: 121
Blog-Einträge: 1
Lennynero ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Evt. mit einer UNION Abfrage, und bei der ersten eben das erste "%" weglassen:

PHP-Code:
$sql "SELECT 1 as sortierung, pd.products_name, cd.categories_name, ptc.products_id, p.products_model
                FROM (("
.TABLE_PRODUCTS." AS p LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id))
                INNER JOIN "
.TABLE_PRODUCTS_TO_CATEGORIES." AS ptc ON (p.products_id = ptc.products_id)) 
                INNER JOIN "
.TABLE_CATEGORIES_DESCRIPTION." AS cd ON (ptc.categories_id = cd.categories_id)
                WHERE p.products_status = '1'
                AND p.products_model like('" 
xtc_db_input($_GET['search']) . "%')
                AND pd.language_id = '"
.(int) $_SESSION['languages_id']."'".$fsk_lock.$group_check."

        UNION

        SELECT 2 as sortierung, pd.products_name, cd.categories_name, ptc.products_id, p.products_model
                FROM (("
.TABLE_PRODUCTS." AS p LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id))
                INNER JOIN "
.TABLE_PRODUCTS_TO_CATEGORIES." AS ptc ON (p.products_id = ptc.products_id)) 
                INNER JOIN "
.TABLE_CATEGORIES_DESCRIPTION." AS cd ON (ptc.categories_id = cd.categories_id)
                WHERE p.products_status = '1'
                AND p.products_model like('%" 
xtc_db_input($_GET['search']) . "%')
                AND pd.language_id = '"
.(int) $_SESSION['languages_id']."'".$fsk_lock.$group_check."
                
ORDER BY sortierung, p.products_model LIMIT 20"

Mit Zitat antworten
  #4 (permalink)  
Alt 12-01-2008, 23:44
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Evt. mit einer UNION Abfrage, und bei der ersten eben das erste "%" weglassen:
Viel zu aufwendig ... eine verknüpfte Bedingung reicht doch aus.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #5 (permalink)  
Alt 13-01-2008, 00:06
psywolf
 Newbie
Links : Onlinestatus : psywolf ist offline
Registriert seit: Jan 2008
Beiträge: 3
psywolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke!

Es lag nur am ersten %
Wär da aber selbst kaum drauf gekommen xD Muss noch viel lernen.

Bedeutet das zeichen die zeichen am anfang ignorieren? Ich weiss es ehrlich gesagt nicht genau. Wäre froh wenn das noch kurz jemand erklären könnte.
Muss natürlich nicht mehr heute sein

Geändert von psywolf (13-01-2008 um 00:17 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 13-01-2008, 00:32
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du will programmieren und beherrschst noch nicht mal die elementarsten Sachen?
Mit Zitat antworten
  #7 (permalink)  
Alt 13-01-2008, 00:59
psywolf
 Newbie
Links : Onlinestatus : psywolf ist offline
Registriert seit: Jan 2008
Beiträge: 3
psywolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry.. ich hab das % noch nie so eingesetzt und weiss darum auch nicht darüber bescheid.
War überhaut die erste frage die ich jemals bei php/mysql in einem forum gestellt habe. Und ja. bin immernoch dabei das beginners-manual komplett durchzulesen..

//Danke tontechniker!

Geändert von psywolf (13-01-2008 um 13:17 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 13-01-2008, 11:41
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Bei LIKE können Sie die folgenden beiden Jokerzeichen im Muster verwenden:
Code:
Zeichen   Beschreibung
% 	  entspricht einer beliebigen Anzahl von Zeichen (einschließlich null Zeichen).
_ 	  entspricht genau einem Zeichen.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #9 (permalink)  
Alt 13-01-2008, 21:16
Lennynero
 Registrierter Benutzer
Links : Onlinestatus : Lennynero ist offline
Registriert seit: Sep 2007
Beiträge: 121
Blog-Einträge: 1
Lennynero ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von tontechniker
Viel zu aufwendig ... eine verknüpfte Bedingung reicht doch aus.
Lt. Ausgangsfrage werden alle Ergebnisse mit "12%", sowie "%12%" gesucht, und die mit "12%" sollen in der Ergebnisliste oben erscheinen.

Mich wuerde interessieren, wie du das mit einer verkuepften Bedingung machst?
Mit Zitat antworten
  #10 (permalink)  
Alt 13-01-2008, 21:40
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Lennynero
Lt. Ausgangsfrage werden alle Ergebnisse mit "12%", sowie "%12%" gesucht, und die mit "12%" sollen in der Ergebnisliste oben erscheinen.

Mich wuerde interessieren, wie du das mit einer verkuepften Bedingung machst?
z.B.
SELECT * FROM tabelle WHERE blubb LIKE "%12%" ORDER BY SUBSTR(blubb, 0, 2) = "12" DESC
Mit Zitat antworten
  #11 (permalink)  
Alt 13-01-2008, 21:52
Lennynero
 Registrierter Benutzer
Links : Onlinestatus : Lennynero ist offline
Registriert seit: Sep 2007
Beiträge: 121
Blog-Einträge: 1
Lennynero ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
z.B.
SELECT * FROM tabelle WHERE blubb LIKE "%12%" ORDER BY SUBSTR(blubb, 0, 2) = "12" DESC
Danke!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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