letzte id herausfinden |
damilchmann
Pixelschubser Threadstarter
Beiträge: 17 |
hallo, wie bekomme ich per phpabfrage an die datenbank (mysql) heraus, welches die letzte id, sprich der letzte eintrag ist?
hab es mit MAX(id) versucht da bekomme ich aber als ergebnis z.b. für den 4. datensatz
"#4"
wenn ich diesen wert dann weitergeben kann php natürlich damit nix anfangen, ich bräuchte also den reinen wert 4.
hätte da jemand nen tip für mich? thx
Diese Nachricht wurde geändert von: damilchmann |
 Profil
Editieren
Zitieren
|
progrookie
Fachidiot
Beiträge: 127 |
1:
2:
3:
4: | SELECT LAST_INSERT_ID(id) AS LAST_ID
FROM
ORDER BY id DESC
LIMIT 1 |
probiers es mal hiermit...
---
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
raiserle
Mausakrobat
Beiträge: 172 |
...aber ist es das, was man wirklich will?
angenommen:
man hat ein forum, dort sind schon ein paar beiträge drin.
wenn nun der letzte angemeldete user(4) beiträge schreibt und danach seinen acc löscht,
bekommt der nächste, der sich anmeldet, die selbe id,
wenn du dann mit dem resultat id(3)+1 arbeitest.
demzufollge hat der neue user die beiträge von dem, der sein acc gelöscht hat.
...
1:
2:
3: | '"),NULL,'Auto_increment');
?> |
und die 2. frage stellt sich: hast du davor gerade ein insert in die tabelle gemacht?
weil dann geht die letze id rauszufinden ...
mysql_insert_id()
---
Irren is Menschlich
Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!
Kameradschaft ist, wenn der
Kamerad schafft !!!!
|
 Profil
Editieren
Zitieren
|
damilchmann
Pixelschubser Threadstarter
Beiträge: 17 |
thx für die antworten:
@raiserle genau das scheint das problem, ich will die abfrage hinterher und unabhängig von nem SELECT bewerkstelligen bzw. auf ner ganz anderen seite, dadurch ist davor kein select-befehl durchgeführt worden.
@progrookie.
dein vorschlag hilft irgendwie nicht, es kommt als ergebnis Resource id #4 und diese ergebnis verändert sich auch nicht, nachdem ich einen neuen eintrag in die tabelle gemacht hab, kann aber auch sein, dass ich es falsch eingebunden habe. könntest du kurz mal drübergucken?
[PHP]$query = ("SELECT LAST_INSERT_ID(id) AS LAST_ID FROM history ORDER BY id DESC LIMIT 1");
$result = mysql_query($query);
$anzahl = $result;
echo "Anzahl der Datensätze: ".$anzahl."
";[/PHP]
noch mal @ raiserle. köntest du mir evtl. anhand des obigen codes erklären, wie ich deinen code da einbauen kann. das wäre super, steht da nämlich noch mehr auf dem schlauch. sollte diese zeile nach z.b. nem SELECT * FROM history?
wenn ich einfach das hier einbinde:
$next_increment=mysql_result(mysql_query("SHOW TABLE STATUS LIKE 'history'"),NULL,'Auto_increment');
echo $next_increment."
";
kommt als ergebnis ein wert der über der letzten id ist. 7 ist die aktuelle id und er spuckt aber 8 aus.
ps. ergänzung. man kann dann natürlich einfach $next_increment-- machen, das funktioniert dann auch aber sobald ich den letzten datensatz lösche, also die 7, also die letzte id 6 ist, bekomm ich als ergebnis trozdem die 8 und dann über "--" also minus 1 den wert 7, der ja jetzt eigentlich 6 sein sollte. daran kann man wohl erkennen, dass ich den befehlt nicht wirklich durchschaut hab.
wäre super, wenn ihr euch noch mal dazu äußern könntet
thx
Diese Nachricht wurde geändert von: damilchmann |
 Profil
Editieren
Zitieren
|
progrookie
Fachidiot
Beiträge: 127 |
also ich bin davon ausgegangen, dass Du vorher ein INSERT getätigt hast, dann hättest Du im Anschluß einfach "mein" Statement ausgeführt und Voilà, da hättest Du die letzte ID gehabt...
1: | ...LAST_INSERT_ID([b]id[/b])... |
soll der NAME deiner ID Spalte sein, wenn deine Spalte anders heißt, dann muss Du das umändern...
#####################################################################
Wenn Du dein Datenbankdesign relational aufgebaut hast, denke ich mir, dürfte es kein Problem sein unter einer bestimmten WHERE-Bedingung den letzten Beitrag einen bestimmten Benutzers herauszufinden. Ich versteh immer noch nicht ganz, unter welcher Bedingung du die letzte ID herausfinden möchtest. Beschreibe doch mal im Detail das Zenario und zur Hilfe vielleicht ein grobes Schema deine Tabellenstruktur, damit man sich besser ein Bild machen kann.
Gruß
---
Diese Nachricht wurde geändert von: progrookie |
 Profil
E-Mail
Website
Editieren
Zitieren
|
damilchmann
Pixelschubser Threadstarter
Beiträge: 17 |
es ist einfach eine seite auf der daten eingegeben werden können, datum usw.
danach auf einer anderen seite kann man z.b. nach datum suchen und es soll aber automatisch der letzte eintrag angezeigt werden, der gemacht wurde. diesen letzten eintrag kann aber jemand anderes gemacht haben und wieder jemand anderes nutz die suchseite und soll eben auch den letzten eintrag bekommen. daher hat person 2 natürlich vorher nichts eingetragen und hat daher auch keinen INSERT. daher funzt last_insert_id nicht.
undja, die spalte heisst id.
hab ich mich verständlich gemacht?
prinzipiell funktioniert raiserle´s variante, leider aber nur, solange man nichts aus der tabelle löscht, wenn doch spielt alles verrückt und warum das so ist, ist die große frage
Diese Nachricht wurde geändert von: damilchmann |
 Profil
Editieren
Zitieren
|
Ehemaliges Mitglied (#378)
Quasselstrippe
Beiträge: 282 |
...warum nutzt Du nicht einfach einen Timestamp, den Du bei jedem Eintrag in ein Feld schreibst - und mit dem Du ganz problemlos die letzten Einträge findest? Mit dieser Methode kannst Du dann auch dem Suchenden mitteilen, zu welchem Zeitpunkt die letzten Einträge erstellt wurden.
Viele Grüße
Mondschatten
|
 Profil
Editieren
Zitieren
|
damilchmann
Pixelschubser Threadstarter
Beiträge: 17 |
mondschatten, danke.
habe leider noch keine ahnung von dieser funktion.
könntest du mir nen tut dazu nennen oder mir kurz erklären, wie ich da vorgehen kann?
das wäre spitze. komme noch oft durcheinander mit den vielen verschiednen möglichkeiten in php.
ps. möglichst ein einfaches tutorial, es macht wernig sinn, wenn es eins für profis ist, was beim lesen wieder mehr fragen aufwirft als es fragen löst. thx
Diese Nachricht wurde geändert von: damilchmann |
 Profil
Editieren
Zitieren
|
raiserle
Mausakrobat
Beiträge: 172 |
1:
2:
3:
4:
5:
6:
7: |
$query = ("SELECT LAST_INSERT_ID(id) AS LAST_ID FROM history ORDER BY id DESC LIMIT 1");
$result = mysql_query($query);
$anzahl = $result; // $result ist eine resource
echo "Anzahl der Datensätze: ".$anzahl."
";
?> |
|
hmm.. kann auch nur ne resourceid kommen, weil du ne resource ausgibst.
entweder
oder
---
Irren is Menschlich
Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!
Kameradschaft ist, wenn der
Kamerad schafft !!!!
|
 Profil
Editieren
Zitieren
|
raiserle
Mausakrobat
Beiträge: 172 |
achso... vergessen
aber um die letze id herauszufinden sollte auch ein ganz einfacher
"SELECT `id` FROM ` ` ORDER BY `id` DESC LIMIT 1"
---
Irren is Menschlich
Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!
Kameradschaft ist, wenn der
Kamerad schafft !!!!
 Profil
Editieren
Zitieren
|
damilchmann
Pixelschubser Threadstarter
Beiträge: 17 |
super, so hat es jetzt geklapt:
$query = ("SELECT LAST_INSERT_ID(id) AS LAST_ID FROM history ORDER BY id DESC LIMIT 1");
$result = mysql_query($query);
$row=mysql_fetch_array($result);
$zahl = $row['LAST_ID'];
echo "Die letzte ID ist: ".$zahl." ";
noch eine frage: was macht das ODER BY 'id' DESC LIMIT1 ?
was bewirkt das?
big thx an alle beteiligten
|  Profil
Editieren
Zitieren
|
progrookie
Fachidiot
Beiträge: 127 |
"sortiere mir die Spalte id absteigend"
1 Treffer vom Gesamtbestand der Trefferliste darf angezeigt werden"
---
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Ehemaliges Mitglied (#378)
Quasselstrippe
Beiträge: 282 |
[könntest du mir nen tut dazu nennen oder mir kurz erklären, wie ich da vorgehen kann? |
Guckst Du hier.
Viele Grüße
Mondschatten
|  Profil
Editieren
Zitieren
|
damilchmann
Pixelschubser Threadstarter
Beiträge: 17 |
herzlichen dank an alle
|  Profil
Editieren
Zitieren
| |