SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.02.2009, 13:58:06
Didi65de Didi65de ist offline
Anfänger
 
Registriert seit: May 2003
Beiträge: 33
SELECT MAX()

Hallo,

bestimmt wurde dieses Problem hier schon behandelt, ich komme aber nicht klar mit den ganzen Infos u. habe schon Versch. probiert ohne Erfolg.

Mein SELECT Befehl:

SELECT r_anzahl, MAX(r_anzahl) FROM red_s WHERE r_menue='$r_menue' group BY r_anzahl

Ich habe versch. Menüs (r_menues). Getrennt wird es so wie gewollt. Die Ausgabe zeigt mir aber immer den niedrigsten u. nicht den größten Wert an. Diesen brauche ich um bei jeden weiteren Eintrag die Anzahl (r_anzahl) um 1 zu addieren, was der nächste Eintrag als Anzahl bekommt usw..

Ausgelesen wird mit:

mysql_fetch_object

Danke im voraus.

VG
Didi
Mit Zitat antworten
  #2  
Alt 22.02.2009, 14:22:09
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: SELECT MAX()

Zitat:
Diesen brauche ich um bei jeden weiteren Eintrag die Anzahl (r_anzahl) um 1 zu addieren, was der nächste Eintrag als Anzahl bekommt usw..
Das dürfte ein Verstoß gegen die 5 Normal Formen sein.

SELECT MAX(r_anzahl) FROM red_s WHERE r_menue='$r_menue'
Mit Zitat antworten
  #3  
Alt 22.02.2009, 16:26:49
Didi65de Didi65de ist offline
Anfänger
 
Registriert seit: May 2003
Beiträge: 33
AW: SELECT MAX()

Danke,

aber ich hatte doch geschrieben das ich mit den Infos die ich selber schon gefunden habe nicht weiter kommen. So auch mit deinen 5 Normalformen nicht.

Selber hatte ich das schon mal mit MIN() gemacht u. es funktionierte. Warum will es bei MAX() nicht funktionieren?

VG
Didi
Mit Zitat antworten
  #4  
Alt 22.02.2009, 16:35:13
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: SELECT MAX()

Zitat:
Warum will es bei MAX() nicht funktionieren?
Weil du was falsch machst!!
Aber was das ist, das hältst du geheim.
Zeige doch mal das CREATE Statement.

Dass dein Weg falsch ist, das ist ja auch dir mittlerweile klar. Also erkläre was du wirklich erreichen willst.
Mit Zitat antworten
  #5  
Alt 22.02.2009, 17:39:24
Didi65de Didi65de ist offline
Anfänger
 
Registriert seit: May 2003
Beiträge: 33
AW: SELECT MAX()

So sieht die Tabelle aus:

CREATE TABLE `red_s` (
`r_id` int(4) NOT NULL auto_increment,
`r_menue` char(3) collate latin1_general_ci NOT NULL default '',
`r_hr` varchar(255) collate latin1_general_ci NOT NULL default '',
`r_alt` varchar(255) collate latin1_general_ci NOT NULL default '',
`r_comment` longtext collate latin1_general_ci NOT NULL,
`r_pic` varchar(30) collate latin1_general_ci NOT NULL default '',
`r_time` date NOT NULL default '0000-00-00',
`r_anzahl` int(2) NOT NULL default '0',
PRIMARY KEY (`r_id`)
);

Unter versch. Menüpunkten kommt eine Textsammlung mit Bild rein. So weit so gut funktioniert alles. Die Nummerierung (r_anzahl) soll später dazu dienen, falls man die Textblöcke der Reihenfolge nach verschieben will. Ansonsten wird der Reihenfolge nach angezeigt, neuester Textblock an oberster Stelle.
Am Anfang soll für jeden Textblock von 0 eine Anzahl addiert werden. Macht meine DB nur bis 2 u. dann ist Schluss bzw. geht sie immer von 1 aus.

VG
Didi
Mit Zitat antworten
  #6  
Alt 22.02.2009, 18:09:45
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: SELECT MAX()

So!
Jetzt ahne ich was dein Problem ist....

-----------------------

Zuvor erstmal:
r_anzahl ist unglücklich benannt! Hat ja keinen Bezug zur Anzahl der Datensätze. Nenne es doch besser: r_reihenfolge

int(3) usw. hat in PHP wenig Sinn int(11) ist allgemeiner.

`r_comment` longtext <-- logtext ist sicherlich übertrieben. text reicht bestimmt

`r_time` date <-- unglückliche Benennung! nenne es r_datum

Versehe r_reihenfolge mit einem Index

Und überhaupt, das r_ Gedöns ist doch völlig überflüssig

-----------------------

Zum Problem:
Das Einfügen neuer Datensätze ist doch ehr selten, oder?
Dann handel das doch in 2 Querys ab:
Erst den insert und dann ein Update wo du r_reihenfolge auf die lastinsertid setzt.


Vertauschen von Einträgen würde dann so gehen:
Code:
UPDATE red_s SET r_reihenfolge = $x + $y - r_reihenfolge WHERE r_reihenfolge IN ($x, $y)
Wobei $x und $x die beiden r_reihenfolge Einträge der zu Vertauschenden sind

Geändert von DokuLeseHemmung (22.02.2009 um 18:12:14 Uhr)
Mit Zitat antworten
  #7  
Alt 22.02.2009, 21:53:21
Didi65de Didi65de ist offline
Anfänger
 
Registriert seit: May 2003
Beiträge: 33
AW: SELECT MAX()

Danke,

habe die entsprechenden Änderungen vorgenommen, aber das Ergebnis bleibt das Gleiche.

Wie oft ein Eintrag vorgenommen wird weiß ich nicht, kann weniger aber auch öfter sein. Bei den Texten kann es ein kleiner o. auch ein sehr langer Text sein, darum longtext.

Die Bezeichnung r_ ist von Vorteil weil da noch mehr dabei ist u. ich beim Quelltext anhand der Variablen gleich erkennen kann zu welchem Part was dazu gehört. So ist für mich der Quelltext leserlicher.

Das mit dem verschieben habe ich schon u. macht mir keine Probleme. Ich kann zur Not die vorgegebene Reihenfolge auch ganz weg lassen u. der User gibt sie nachträglich (falls nötig) von selber ein. Aber es ist schon etwas angenehmer wenn vom System die Reihenfolge schon vorgegeben ist u. würde das gerne hinbekommen da man selber beim coden auch was dazu lernt.

Die Datenbank-Tabelle soll bei mir nur die höchste Nummer der Reihenfolge ausgeben u. im nächsten Schritt wird vor dem Insert des neuen Datensatzes

$r_reihenfolge=$r_reihenfolge->r_reihenfolge+1;

um 1 addiert.

VG
Didi
Mit Zitat antworten
  #8  
Alt 22.02.2009, 22:03:25
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: SELECT MAX()

Zitat:
Die Datenbank-Tabelle soll bei mir nur die höchste Nummer der Reihenfolge ausgeben u. im nächsten Schritt wird vor dem Insert des neuen Datensatzes
Birgt das nicht den "Race Conditions" Bug in sich!

Besser: Erst eintragen und dann abfragen!
Mit Zitat antworten
  #9  
Alt 23.02.2009, 08:25:24
Didi65de Didi65de ist offline
Anfänger
 
Registriert seit: May 2003
Beiträge: 33
AW: SELECT MAX()

Nein, da nur ein User die Textblöcke eingibt. Aber wahrscheinlich ist es besser das sein zu lassen u. falls nötig die Reihenfolge später manuell einzugeben.
Aber interessieren würde es mich schon, warum mein SELECT Befehl nicht funktioniert.

VG
Didi
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
select in select verschachteln DerSchatten MySQLi/PDO/(MySQL) 7 19.12.2007 22:22:13
Select mit Where-Clause aus Variable/Array RoSt MySQLi/PDO/(MySQL) 7 01.08.2006 13:44:02
Probleme mit PHP und mySQL, Select xy as yz funktioniert nicht KickMuck MySQLi/PDO/(MySQL) 1 04.03.2006 13:24:31
To Many Connections ProGamer11 PHP Grundlagen 0 19.06.2003 00:52:56
Ich willst jetzt wissen - Select * oder nicht Select * CyberAge PHP Grundlagen 22 13.08.2002 18:40:46


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:30:34 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt