Message id gebruiken voor wegschrijven naar database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
Ik was bezig met een site, maar ik loop tegen een dilemma aan. IK ben bezig met een systeem waarbij nieuwsberichten geplaatst kunnen, en bij deze berichten ook foto's bijgevoegd kunnen worden. Nu wil het zo zijn dat als iemand een bericht toevoegt, er ook foto's bij gezet kunnen worden. Deze worden opgeslagen in een map met het zelfde ID als het bericht, maar een bericht heeft geen ID totdat deze geplaatst is. Weten jullie hoe ik dat probleem op kan lossen. Ik heb zeld de volgende 2 opties bedacht:

1: Vraag de volgende insert id op in de database op (gaat fout met meerdere users)
2: Fotos uploaden naar een tijdelijke map en deze hernoemen naar de juiste.

Nu vraag ik me af hoe jullie dit strategisch op ouden lossen. Ik wil er bij zeggen dat de foto's worden toegevoegd aan de hand van SWFuploader, dus het kan niet gelijk met de content verwerkt worden...

Acties:
  • 0 Henk 'm!

  • hhoekstra
  • Registratie: Maart 2008
  • Laatst online: 22:16
http://php.net/manual/en/function.mysql-insert-id.php <- die gebruik ik altijd. Maar ik ben geen pro php'er :P misschien kan het op een betere manier.


Edit: ow gaat dit wel om php :X

[ Voor 10% gewijzigd door hhoekstra op 05-08-2012 19:59 ]


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
hhoekstra schreef op zondag 05 augustus 2012 @ 19:58:
http://php.net/manual/en/function.mysql-insert-id.php <- die gebruik ik altijd. Maar ik ben geen pro php'er :P misschien kan het op een betere manier.
DIt had ik ook als de eerste optie, maar als meerdere mensen gelijk met een bericht bezig zijn loopt dit spaak, omdat de berichten die gemaakt worden allemaal verwachten het zelfde nummer te krijgen.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 15:11
Wat is er mis met eerst het bericht opslaan, en daarna pas de bijlagen verwerken?

Ze worden al naar een tijdelijke map (upload_tmp_dir) geupload. Nadat het bericht is opgeslagen verplaats en hernoem je ze met move_uploaded_file().


Had je laatste zin niet gelezen :X
Sla als een bestand via de SWF wordt geupload deze in de database op, en zet dat bestandID dan in het formulier waarmee het bericht wordt gesubmit. Die ID's koppel je vervolgens aan het bericht.

[ Voor 34% gewijzigd door frickY op 05-08-2012 20:03 ]


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
Ik weet niet helemaal precies hoe je dit dacht, maar als je met swf upload werkt, worden alle bestanden verstuurd apart verstuurd naar een bepaalde php file, en kan ik dus niet vanuit een andere pagina (de edit-pagina) daar zomaar bij?

EDIT:

Ik zal inderdaad de respons van SWFupload eens kunnen pakken, maar in mijn geval denk ik niet dat dat veel praktischer is.

[ Voor 22% gewijzigd door martin149 op 05-08-2012 20:11 ]


Acties:
  • 0 Henk 'm!

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 17-09 21:58

BHR

Kun je niet alvast een message aanmaken bij het voor het eerst openen van de nieuwsbericht pagina, met bijvoorbeeld als message_status 'in_aanmaak'. Dit zou je een unieke reeks met message ids opleveren voor iedere gebruiker. Tevens opent het mogelijkheden voor autosave (als in wordpress e.a.). Ik weet verder niet of het noodzakelijk is dat er geen gaten vallen tussen nieuwsberichten wanneer een gebruiker besluit een nieuwsbericht niet af te ronden of te plaatsen!?

No amount of key presses will shut off the Random Bug Generator


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

martin149 schreef op zondag 05 augustus 2012 @ 20:00:
[...]


DIt had ik ook als de eerste optie, maar als meerdere mensen gelijk met een bericht bezig zijn loopt dit spaak, omdat de berichten die gemaakt worden allemaal verwachten het zelfde nummer te krijgen.
Insert_id geeft niet het volgende ID in de database terug, maar die functie roep je aan nadat je een record hebt aangemaakt en geeft dan het id van dat record terug, dan heeft dat record dus al een id wat niet nogmaals aangemaakt kan worden (uitgaande van een auto incrementing primary key).

edit: En anders je bestanden apart in een databasetabel gooien en later koppelen aan een nieuw bericht

[ Voor 7% gewijzigd door Radiant op 05-08-2012 21:28 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

martin149 schreef op zondag 05 augustus 2012 @ 20:00:
[...]

DIt had ik ook als de eerste optie, maar als meerdere mensen gelijk met een bericht bezig zijn loopt dit spaak, omdat de berichten die gemaakt worden allemaal verwachten het zelfde nummer te krijgen.
Misschien moet je nog even heel goed lezen wat die functie doet voordat je hem afschrijft. Zie de post van Radiant.

Overigens is het dan nog steeds niet waterdicht aangezien het theoretisch mogelijk is dat een andere thread nog een insert doet tussen jouw insert en het opvragen van het nieuwe ID door, maar die kans is vrij minimaal en bij mijn weten te verwaarlozen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
Ik weet inderdaad wat je bedoelt met insert id, maar ik kon het even niet anders omschrijven. Ik ga er morgen eens even mee aan de gang en dan zie ik wel hoe het precies komt, maar in ieder geval bedankt voor de suggesties!!!

Acties:
  • 0 Henk 'm!

  • BramV
  • Registratie: Augustus 2007
  • Laatst online: 15:58
Je zou ook een GUID kunnen gebruiken (MySql uuid() ) als ID.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

BramV schreef op dinsdag 07 augustus 2012 @ 15:47:
Je zou ook een GUID kunnen gebruiken (MySql uuid() ) als ID.
Wat lost dit precies op?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BramV
  • Registratie: Augustus 2007
  • Laatst online: 15:58
NMe schreef op dinsdag 07 augustus 2012 @ 15:48:
[...]

Wat lost dit precies op?
Je hebt een uniek id dat je kunt gebruiken als primary key en filename?

Acties:
  • 0 Henk 'm!

Verwijderd

foto uploaden met tempnaam
bericht plaatsen
id afwachten (mysql_insert_id() )
tempbestand hernoemen
bericht automatisch bijwerken zodat tempnaam img naam wordt
Pagina: 1