Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » letzte id herausfinden Antworten
letzte id herausfinden

damilchmann
Pixelschubser


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: 128


1: 
2: 
3: 
4:
SELECT LAST_INSERT_ID(id) AS LAST_ID
FROM <deinTabellenName>
ORDER BY id DESC 
LIMIT 1

probiers es mal hiermit...

---

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


...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:
<?php
$next_increment=mysql_result(mysql_query("SHOW TABLE STATUS LIKE '<tablename>'"),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   E-Mail   Website   Editieren   Zitieren

damilchmann
Pixelschubser


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: 128


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


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

Mondschatten
Quasselstrippe


Beiträge: 250


...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

---
Schwarz kann auch glänzen.

  Profil   Website   Editieren   Zitieren

damilchmann
Pixelschubser


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
Fachidiot


Beiträge: 144



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
1: 
2: 
3: 
4:
<?php
$row=mysql_fetch_array($result);
echo "Letze id ist ".$row['LAST_ID'];
?>

oder
1: 
2: 
3:
<?php
echo "Letze id ist ".mysql_result($result,NULL,'LAST_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   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


achso... vergessen
aber um die letze id herauszufinden sollte auch ein ganz einfacher
"SELECT `id` FROM `<table>` 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   E-Mail   Website   Editieren   Zitieren

damilchmann
Pixelschubser


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."<br>";


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: 128


1:
ODER BY 'id' DESC

"sortiere mir die Spalte id absteigend"
1:
LIMIT 1 

1 Treffer vom Gesamtbestand der Trefferliste darf angezeigt werden"

---

  Profil   E-Mail   Website   Editieren   Zitieren

Mondschatten
Quasselstrippe


Beiträge: 250


[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

---
Schwarz kann auch glänzen.

  Profil   Website   Editieren   Zitieren

damilchmann
Pixelschubser


Beiträge: 17


herzlichen dank an alle

  Profil   Editieren   Zitieren
 

Antworten
Nach oben