Avatar billede klgn Nybegynder
01. februar 2004 - 14:24 Der er 23 kommentarer og
2 løsninger

En funktion der angiver id, der senest er blevet opdateret

Hejsa!

Jeg søger en php-funktion, der fungerer ligesom mysql_insert_id();, den skal bare give mig den id, som jeg senest har oprettet eller har rettet informationer til. Dvs., at har jeg lige rettet noget i ID=37, så vil jeg have den. Har jeg senest oprettet id=47, så vil jeg have den udskrevet.

Findes en sådan funktion, jeg har indtil videre ikke kunnet finde nogen...

/klgn
Avatar billede krydset Nybegynder
01. februar 2004 - 14:28 #1
du kan jo bare oprette en database, hvor der bliver smidt et id nr i hvergang noget bliver ændret og så skrevet det id nr ud
Avatar billede klgn Nybegynder
01. februar 2004 - 14:31 #2
well, jeg vil gerne høre, om der findes en funktion ligesom mysql_insert_id();

Jeg bruger denne funktion til en nyhedsscript med billedeupload - men hvis jeg vil rette billedet til teksten, virker det ikke.

/klgn
Avatar billede klgn Nybegynder
01. februar 2004 - 14:36 #3
funktionen skal være brugbar i php version 4.0.6, som er den, der bruges hos min udbyder

/klgn
Avatar billede krydset Nybegynder
01. februar 2004 - 14:40 #4
der er jo det jeg lige har skrevet en løsning til som tager 2 min at lave

CREATE TABLE `id_nr` (
  `id` int(11) NOT NULL auto_increment,
  `id_change` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

if(something happens) {
mysql_query("INSERT INTO id_change VALUES('$id')") or die(mysql_error());
}

$hent = mysql_query("select * from id_change DESC LIMIT 0,1") or die(mysql_error));
while($id = mysql_fetch_array($hent)) {
echo $row[id];
}

Såen
Avatar billede schaefner Juniormester
01. februar 2004 - 14:43 #5
Tilføj et dato-felt
Avatar billede krydset Nybegynder
01. februar 2004 - 14:44 #6
Ja god ide, så kan man se hvornår det er sket
Avatar billede klgn Nybegynder
01. februar 2004 - 14:44 #7
krydset>> Jeg prøver at implementere det i mit script, såfremt det virker er der point...
Avatar billede krydset Nybegynder
01. februar 2004 - 14:45 #8
Oki, det skulle det gerne.
Avatar billede schaefner Juniormester
01. februar 2004 - 14:50 #9
Hvis du tilføjer et dato-felt kaldet lastchange og opdaterer det hvergang du laver noget, så kan du sortere via den og finde den række der sidst blev ændret.
Avatar billede klgn Nybegynder
01. februar 2004 - 14:53 #10
Schaefner>> lyder som en fremragende idé, og den er umiddelbart lettere at implementere i scriptet end krydsets forslag.
Jeg leger lige med begge løsninger og ser, hvad jeg kan få til at virke...
Avatar billede schaefner Juniormester
01. februar 2004 - 14:55 #11
Så kan du så hive id'et for sidste redigerede række ud nogenlunde sådan:

$last_changed_id = mysql_result(mysql_query("SELECT id FROM <table> ORDER BY lastchange DESC LIMIT 0,1"),0);
Avatar billede schaefner Juniormester
01. februar 2004 - 14:56 #12
Så tilføjer du et felt af typen datetime
Avatar billede klgn Nybegynder
01. februar 2004 - 14:57 #13
hvilke egenskaber skal jeg give det??
Avatar billede klgn Nybegynder
01. februar 2004 - 14:59 #14
ok, glemt jeg spurgte...
Avatar billede klgn Nybegynder
01. februar 2004 - 15:08 #15
schaefner>> hvordan får jeg så de korrekte data ind i datetime-feltet vha php??
Avatar billede schaefner Juniormester
01. februar 2004 - 16:08 #16
Eksempel:
mysql_query("UPDATE table SET date='valør',lastchange=now() WHERE id=1");
Avatar billede klgn Nybegynder
01. februar 2004 - 16:10 #17
now() virker ikke, men jeg fandt en anden løsning vha. date
Avatar billede schaefner Juniormester
01. februar 2004 - 16:15 #18
hmm, now() burde virke fint.
Avatar billede klgn Nybegynder
01. februar 2004 - 16:27 #19
schaefner>>Hvordan får jeg så tilpasset denne linje med det der dato-hallo, så det funger??
mysql_query("UPDATE bestyrelse set billede = '$billede_name' WHERE lastchange = '$[den nyeste lastchange]'") or die(mysql_error());
Avatar billede schaefner Juniormester
01. februar 2004 - 17:03 #20
$last_changed_id = mysql_result(mysql_query("SELECT id FROM <table> ORDER BY lastchange DESC LIMIT 0,1"),0);

mysql_query("UPDATE bestyrelse SET billede = '$billede_name' WHERE id=$last_changed_id") or die(mysql_error());

eller måske:

mysql_query("UPDATE bestyrelse SET billede = '$billede_name' ORDER BY lastchange DESC LIMIT 0,1") or die(mysql_error());
Avatar billede klgn Nybegynder
01. februar 2004 - 17:05 #21
well, jeg fandt en løsning selv på problemet - nu skal jeg lige have fixet de sidste småting.
Hvis du poster et svar, så får I begge 2 point, da begge Jeres svar er rigtige...
Avatar billede schaefner Juniormester
01. februar 2004 - 17:06 #22
svar
Avatar billede krydset Nybegynder
01. februar 2004 - 18:31 #23
ævv jeg fik ikke en bid af kagen :-(
Avatar billede krydset Nybegynder
01. februar 2004 - 18:31 #24
Nå skideværd med det det er kun et tal ;)

glad for det virker
Avatar billede klgn Nybegynder
01. februar 2004 - 18:44 #25
well, du fik da 15 point, så jeg ved ikke, hvad du mener med ikke at få en bid af kagen??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester