php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.08.2011, 15:19  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hrmpf ..

LIMIT Startwert, Anzahl ...


also für
Code:
Seite  -> Limit
 1         0,20
 2        20,20
 3        40,20
usw...
und immer noch kein Grund diese Redundante Nummerierung in die Datenbank zu schreiben
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.08.2011, 15:22  
Neuer Benutzer
 
Registriert seit: 24.08.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
partyisover befindet sich auf einem aufstrebenden Ast
Standard

Mir ist schon klar wie ich limit benutze, nur kann ich nicht für jede Seite meine Abfrage anpassen (ich habe ca.900 Seiten).

Bitte erkläre mir doch, wie ich die "redundante" Nummerierung in die Datenbank vornehme.

Geändert von partyisover (26.08.2011 um 15:26 Uhr).
partyisover ist offline   Mit Zitat antworten
Alt 26.08.2011, 15:25  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Nu, nachdem Du endlich mit Info rüberkommst, kann man auch was Vernünftiges dazu sagen.
Auf der "nächsten Seite" brauchst Du nur ein Subselect, also die letzten 20, die nicht zu den letzten 20 gehören.
So, und diese Formulierung mußt Du selber auflösen.
http://dev.mysql.com/doc/refman/5.1/...ubqueries.html

Edit:
Oh, eagle war schneller (und besser?). Würde mich interessieren, was schneller ist, Subselect oder Limit?
achtelpetit ist offline   Mit Zitat antworten
Alt 26.08.2011, 15:38  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

subselect verliert in jedem Falle ..dabei wird nämlich kein richtig guter Index verwendet .. ein Limit dagegen nutzt alle Indizes und schneidet dann nach Erreichen der Anzahl der Ergebnisse einfach ab ( ich glaub der beendet sogar komplett die Arbeit, wenn 20 Ergebnisse ermittelt wurden)
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 26.08.2011, 15:38  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von achtelpetit Beitrag anzeigen
Edit:
Oh, eagle war schneller (und besser?). Würde mich interessieren, was schneller ist, Subselect oder Limit?
Limit (unterbricht die weitere Abfrage sofort, wenn das Limit erreicht wurde)
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 26.08.2011, 16:14  
Neuer Benutzer
 
Registriert seit: 24.08.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
partyisover befindet sich auf einem aufstrebenden Ast
Standard

Ich habe das Gefühl wir reden aneinander vorbei. Ich versuche es nochmal zu erklären:

Ich habe bereits eine Abfrage die mir die ersten 20 Items auf der der Ersten Seite darstellt, auf der zweiten Seite weitere 20 usw... Die Pagination funktioniert auch.

Mein Problem besteht darin, dass jeder Datensatz, der angezeigt wird, folgenden Code durchläuft:

PHP-Code:
<div class="js-image size-3" style="top:0px;left:0px;">        
                <a href="<?php echo rss_item_url(); ?>" target="_blank"><img class="js-small-image" src="<?php echo rss_item_content2(); ?>" target="_blank"/></a> 
                <div class="js-small-caption">
                    <span><?php echo rss_item_title(); ?></span>
                </div>
                <div class="js-overlay-caption-content">
                    <h4><?php echo rss_item_title(); ?></h4>
                    <p>
                       <?php echo rss_item_content(); ?><a href="<?php echo rss_item_url(); ?>" target="_blank">mehr lesen &raquo;</a>
                    </p>
                </div>
            </div>
Mit den Funktionen rss_item_url(), ss_item_title(), usw. werden die Spalten des Datensatzes ausgewählt und die dazugehörigen Inhalte ausgegeben.

Aufgrund der Tatsache, dass jeder Datensatz auf die genannte Weise "generiert" wird, könnte ich natürlich alles als Liste ausgeben und fertig.
Da ich allerdings jeden Datensatz auf 20 verschiedenen Möglichkeiten formatiert haben möchte, dachte ich mir, ich erstelle eine If Bedingung (diese auch 20 mal):

PHP-Code:
$x = neuenummerierung();
              
   <?                       
  
if ($x == 1){
      
?>
      
     <div class="js-image size-3" style="top:0px;left:0px;">        
                <a href="<?php echo rss_item_url(); ?>" target="_blank"><img class="js-small-image" src="<?php echo rss_item_content2(); ?>" target="_blank"/></a> 
                <div class="js-small-caption">
                    <span><?php echo rss_item_title(); ?></span>
                </div>
                <div class="js-overlay-caption-content">
                    <h4><?php echo rss_item_title(); ?></h4>
                    <p>
                       <?php echo rss_item_content(); ?><a href="<?php echo rss_item_url(); ?>" target="_blank">mehr lesen &raquo;</a>
                    </p>
                </div>
            </div>
            
weitere 19 Bedingungen...
Wenn ich die Formatierung auf diese Weise vornehme, benötige ich allerdings einen Rückgabewert (neuenummerierung();) von jedem Datensatz - d.h. alle Datensätze müssten von 1-20 durchnummeriert sein.
Das Funktioniert soweit auch mit dem folgenden Code:
PHP-Code:
$sql "
UPDATE `items` 
        SET `idd`= MOD(`id`,10)"

Wobei an dieser Stelle nicht optimal ist, dass die Aktuellste ID einen Wert von 1-20 bekommen kann, je nachdem wieviel Datensätze grade in der Datenbank sind. Meine Frage bezog sich nun darauf, ob es möglich ist beginnend von der höchsten ID (auto_inkrement) - welche ja auch automatisch der aktuellste Datensatz ist, die Nummerierung von 1-20 vorzunehmen. Sprich höchste ID = 1, usw....

Ich hoffe mein Anliegen ist nun verständlicher...
partyisover ist offline   Mit Zitat antworten
Alt 26.08.2011, 16:33  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

es tut mir leid, wenn dir meine Antworten nicht (mehr) gefallen . aber dein Vorhaben ist aufgrund der vorliegenden Tatsachen "BLÖDSINN" . sic.

wenn du deine 20 Datensätze auf 20 verschiedene Arten ausgeben willst, dann ist deine bisherige Methode dafür völlig VERPEILT - benutze EINE FUNKTION, die meinetwegen einen Design-Parameter entgegen nimmt und dann deinen Datensatz auf die Art formatiert, wie gewünscht .. allerdings hat die Formatierung für mich überhaupt nix mit Sortierung zu tun - und du erklärst immer noch nicht , warum du eine zusätzliche Nummerierungsspalte in der Datenbank haben willst ...

Meine Bedenken hab ich dir dazu geschrieben .. diese Nummerierungsspalte Ändert sich quasi DAUERND (neuer Datensatz , Datensatz gelöscht .. archiviert , was auch immer ) - das heißt aber auch - bei JEDER EINFÜGE-AKTION -> Nummernspalte anpassen (FÜR ALLE DATENSÄTZE)
der Insert dauert 1 Mikrosekunde - die Nummernspalte anpassen dann 20 Sekunden .. und was wenn du mal richtig viele Datensätze hast - willst du den User dann ne halbe stunde warten lassen, bis die Nummerierung passt ? und was wenn zwischendurch noch einer nen weiteren Datensatz anlegt ? Deine Anwendung wird zunehmend nur noch damit beschäftigt sein, diese Nummernspalte auf dem aktuellen Stand zu halten, und das wo die komplett unnötig ist - meiner Meinung nach zumindest (und eines Teils der Helfer hier^^)

bei den Systemen, die ich kenne, ist es normal, dass eine Änderung der Sortierung auch automatisch die Pagination unterbricht .. pech gehabt .. dann gehts eben wieder auf Seite 1 los ....
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 26.08.2011, 18:09  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Du hast doch praktisch schon eine Nummerierung, wenn du dir eine "Seite" abholst - den Index des Arrays, in dem deine Ergebnisse liegen. Da du weisst, auf welcher Seite du dich befindest und die Anzahl pro Seite kennst, kannst du auch einen fortlaufenden Index simpel berechnen.

Oder ich versteh immer noch nicht, was du eigentlich mit der Durchnummerierung erreichen willst.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Antwort


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
Access Datenbank zu MySQL VoteAlex Datenbanken 3 13.05.2010 20:25
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
[Erledigt] MySQL Datenbank kopieren mit mysqldump. Speichern geht, rückgängig machen robat Server, Hosting und Workstations 4 29.12.2009 14:45
[Erledigt] Im- / Export einer MySQL Datenbank amaier161 Datenbanken 5 19.07.2009 00:42
Scriptangebot phpFK - PHP Forum ohne MySQL Datenbank jepp Scriptbörse 0 02.03.2009 21:42
Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern mallmis PHP Tipps 2008 1 19.11.2007 23:04
zusammenhängende Nummern aus Datenbank auslesen PHP Tipps 2006 11 08.03.2006 11:18
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] Auslesen und Aktualisieren von einer MYSQL Datenbank PHP Tipps 2005-2 3 05.07.2005 14:39
[Erledigt] Formulardaten ausgeben aus MYSQL und aktualisieren Datenbanken 5 08.09.2004 12:24

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql nummerierung automatisch aktualisieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:53 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