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 04-08-2006, 17:35
msycho
 Newbie
Links : Onlinestatus : msycho ist offline
Registriert seit: Aug 2006
Beiträge: 9
msycho ist zur Zeit noch ein unbeschriebenes Blatt
Question [MSSQL] Seitenanzeige mit Umblättern

Hallo!

Ich habe eine Abfrage von mehreren Spalten einer Tabelle in PHP und MYSQL geschrieben.
Ich möchte jetzt die Ausgabe seitenweise angezeigt haben. Da ich beim Umsetzen meines Vorhabens Probleme habe, hatte ich mich auf die Suche nach einem Tutorial gemacht. Ich bin unteranderem auf dieses hier gestoßen.
Es ist zwar für PHP und MySQL, aber ich habe die Funktionen für MSSQL geändert und den Code einfach unten bei meinem jetzigen Script angehängt.

PHP-Code:
$select mssql_query("select * from testtabelle");
    
$reihen mssql_num_rows($select);
    
    
$zeigen floor($reihen 5);
    
    if(!
$start) { $start 0.1; }
    
    
$result mssql_query("select * from testtabelle limit $start,5");
    echo 
"<table>";
        while (
$zeile mssql_fetch_array($result)) {
        echo 
"<tr><td>$zeile[3]</td></tr>";
    }
    echo 
"</table>";
    if(
$start 0.1) {
            
$zurueck $start 5
            echo 
"<a href=\"$PHP_SELF?start=$zurueck\"><< Zurück</a>"
    }
    for(
$i 0$i <= $zeigen$i++) {
        echo 
" <a href=\"$PHP_SELF?start=$n\">$i</a> ";
    
$n += 5;
    }
    
$weiter $start 5;
    if(
$reihen $weiter) {
            echo 
"<a href=\"$PHP_SELF?start=$weiter\">Weiter >></a>"
    } 
Es tauchen nun allerdings Fehlermeldungen auf:

Zitat:
Warning: mssql_query() [function.mssql-query]: message: Zeile 1: Falsche Syntax in der Nähe von '0.1'. (severity 15) in *** on line 126

Warning: mssql_query() [function.mssql-query]: Query failed in *** on line 126

Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource in *** on line 128
Wenn ich das richtig verstehe, gibt es Probleme mit den Funktionen. Könnte Ihr mir bitte helfen wie ich das Script letztlich nun doch zum Laufen bringe?

Gruß
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 04-08-2006, 17:46
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
$start = 0.1;


das würd ich auch nicht als limit interpretieren können.
Mit Zitat antworten
  #3 (permalink)  
Alt 04-08-2006, 17:51
msycho
 Newbie
Links : Onlinestatus : msycho ist offline
Registriert seit: Aug 2006
Beiträge: 9
msycho ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Stimmt. Das ist ein seltsamer Startwert.

Genügt es wenn ich "0" setze?

/edit: Ne, das reicht nicht:

Zitat:
Warning: mssql_query() [function.mssql-query]: message: Zeile 1: Falsche Syntax in der Nähe von '0'. (severity 15) in *** on line 127

Warning: mssql_query() [function.mssql-query]: Query failed in *** on line 127

Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource in *** on line 129
Kannst Du mir bitte helfen?

Geändert von msycho (04-08-2006 um 17:53 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 04-08-2006, 18:02
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

MSSQL kennt afaik kein LIMIT ... hier mal schauen: http://www.php-resource.de/forum/sea...der=descending
__________________
Kissolino.com
Mit Zitat antworten
  #5 (permalink)  
Alt 04-08-2006, 18:08
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

richtig:

http://www.planet-source-code.com/vb...d=850&lngWId=5

http://forums.aspfree.com/microsoft-...0bt-29770.html
Mit Zitat antworten
  #6 (permalink)  
Alt 04-08-2006, 18:12
msycho
 Newbie
Links : Onlinestatus : msycho ist offline
Registriert seit: Aug 2006
Beiträge: 9
msycho ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich muss ehrlich sagen, ich blick gerade nicht mehr durch.
Ich weiß jetzt, dass MSSQL "limit" nicht kennt/versteht. Aber was ist eine Alternative dafür? mssql_data_seek?

Könnt Ihr mir nicht bitte eine praktische Lösung anbieten, an der ich mich weiter versuchen kann?
Mit Zitat antworten
  #7 (permalink)  
Alt 04-08-2006, 18:20
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

schau dir den ersten link genau an.
Mit Zitat antworten
  #8 (permalink)  
Alt 04-08-2006, 18:24
msycho
 Newbie
Links : Onlinestatus : msycho ist offline
Registriert seit: Aug 2006
Beiträge: 9
msycho ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry, aber ich versteh nicht wie den nachfolgenden Code mit dem im ersten Post geposteten Code zusammenbringe.

PHP-Code:
select from (
 
select top 10 emp_id,lname,fname from (
    
select top 30 emp_id,lname,fname
    from employee
   order by lname asc
 
) as newtbl order by lname desc
) as newtbl2 order by lname asc 
Mit Zitat antworten
  #9 (permalink)  
Alt 04-08-2006, 18:29
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

komm, die felder und tabellennamen wirst du selbst anpassen können.
und die "top n" schreibweise wählt "die ersten n" datensätze.

wenn du also top 10 von der top 30 nimmst, selektierst du (mit richtiger sortierung) die 10 einträge zwischen (30-10)=20 und 30.

wie also musst du die zahlen 30 und 10 manupulieren, um die zeilen von a bis b zu markieren (erstmal ganz allgemein)?
Mit Zitat antworten
  #10 (permalink)  
Alt 04-08-2006, 18:35
msycho
 Newbie
Links : Onlinestatus : msycho ist offline
Registriert seit: Aug 2006
Beiträge: 9
msycho ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich möchte immer nur 10 Datensätze auf einer Seite angezeigt haben. Die anderen sollen auf weiteren Seiten mit ebenfalls jeweils 10 Datensätzen angezeigt werden.

Wenn ich das jetzt richtig verstehe, muss ich beides mal top 10 schreiben: 10 - 10 = 0 und 10. (?)

Was die Felder und Tabellennamen angeht, was ist was ist dem o.g. Codeschnipsel? Ich steh grad ziemlich auf dem Schlauch.
Mit Zitat antworten
  #11 (permalink)  
Alt 04-08-2006, 18:43
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nein, die zweite zahl ist die oberschranke.

und
Code:
SELECT ... FROM ... ORDER BY ...
funktioniert in allen sql-servern identisch.
Mit Zitat antworten
  #12 (permalink)  
Alt 04-08-2006, 19:45
msycho
 Newbie
Links : Onlinestatus : msycho ist offline
Registriert seit: Aug 2006
Beiträge: 9
msycho ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was heisst Oberschranke? Die maximale Anzahl der Datensätze? Wenn ja, woher soll ich die wissen? Das dürften mehrere 10.000 sein.

Zu dem Code selber nochmal:

PHP-Code:
SELECT 
FROM 
SELECT TOP 10 emp_id,lname,fname 
FROM 
(  SELECT TOP 30 emp_id,lname,fname 
FROM employee 
ORDER BY lname asc 

AS 
newtbl 
ORDER BY lname desc 

AS 
newtbl2 ORDER BY lname asc 
emp_id,lname,fname sind die Spaltennamen?
employee ist der Tabellenname?
Was ist newtbl und newtbl2 und asc?

Geändert von msycho (05-08-2006 um 13:18 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 05-08-2006, 00:19
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von msycho
Was heisst Oberschranke? Die maximale Anzahl der Datensätze? Wenn ja, woher soll ich die wissen? Das dürften mehrere 10.000 sein.
wie wäre es mit einer query mit COUNT()?
Zitat:
emp_id,lname,fname sind die Spaltennamen?
ja
Zitat:
employee ist der Tabellenname?
ja
Zitat:

Was ist newtbl und newtbl2
jeweils aliase für das ergebnis (ne art platzhalter)
Zitat:
und asc?
asc = ascending, desc = descending ... die bedeutung kannst du leicht nachschlagen

ps: umbrich bitte den code.
__________________
Kissolino.com
Mit Zitat antworten
  #14 (permalink)  
Alt 05-08-2006, 12:56
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Was heisst Oberschranke? Die maximale Anzahl der Datensätze?
nein. du scheinst die query immer noch nicht begriffen zu haben.

schreibe dir 100 zeilen mit irgendwelchen wörtern aus (etwa alphabetisch sortiert). wähle von diesen wörtern die ersten 30. wähle von diesen 30 die letzten 10. welche zeilen sind nun ausgewählt? richtig - zeilen 20 bis 30.

hier noch ein versuch in ascii-art:

Code:
           ########## <- die gesuchte menge 20 bis 30
           |        |
########################################### <- deine datensätze


##################### <- die ersten 30
           ########## <- davon die letzten 10
Mit Zitat antworten
  #15 (permalink)  
Alt 05-08-2006, 13:31
msycho
 Newbie
Links : Onlinestatus : msycho ist offline
Registriert seit: Aug 2006
Beiträge: 9
msycho ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich danke Euch soweit.

Zitat:
zeilen 20 bis 30.
Ich möchte aber auf Seite Eins 0 bis 5, Seite zwei 5 bis 10 etc.

Code:
mssql_query("SELECT * FROM (
 SELECT TOP 5 testspalte,testspalte_2 FROM (
 SELECT TOP 10 testspalte,testspalte_2 FROM testtabelle ) ) ");
    $reihen = mssql_num_rows($select);
Ich bicks jetzt grad überhaupt nicht mehr.
Für MySQL gibt es dutzende Tutorials wo die seitenweise Anzeige einer Ausgabe erklärt wird. Wieso gibt es das nicht für MSSQL?
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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:28 Uhr.