[JS] Hoe database attribuut ophalen uit html element?*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MonkeySleeve
  • Registratie: Februari 2009
  • Laatst online: 12-09 20:56

MonkeySleeve

It's just Monkey business

Topicstarter
He allemaal,

ik ben weer eens begonnen aan PHP en nu leek het me wel wat om er wat javascript erbij te doen. Heb een tutorial gevolgd en ben nu daarop aan het uitbouwen door er PHP functionaliteiten aan te geven.

Echter ben ik tegen een probleem aangekomen; Ik heb een soort 'widget' pagina, en elke widget zit in een div met een nummer als id. Dit nummer is de unieke sleutel die uit de database wordt gehaald. Ik wil dus nu een update query uitvoeren wanneer ik een widget heb aangepast(Titel en content aangepast), maar ik weet geen manier om dat ID nummer eruit te krijgen zodat dit bij de juiste widget wordt aangepast in de Database.

Dit is de aanroep van de function die via AJAX een query doorstuurt naar een aparte PHP file:
code:
1
iWidget.updateWidgets($(this).parents(settings.widgetSelector).find('h3').text());

Hier haalt die de text op uit een h3 tag, hierin staat de titel. Dit krijgt die ook door in de UPDATE query. Maar ik moet ik nog een WHERE statement erbij zetten voor het id zelf.

Iemand een idee hoe ik er toch een ID aan kan koppelen zonder dat dit enigszins zichtbaar wordt op de site zelf?

Did you bring the banana's? Steam-id: MonkeySleeve


Acties:
  • 0 Henk 'm!

  • merauder
  • Registratie: November 2005
  • Laatst online: 02-09 20:08
Bedoel je hier het verbergen van de Query string????

Misschien heel bot oplossen met een pop-up/iframes?

Acties:
  • 0 Henk 'm!

  • MonkeySleeve
  • Registratie: Februari 2009
  • Laatst online: 12-09 20:56

MonkeySleeve

It's just Monkey business

Topicstarter
Ehm wat? Nee wat ik bedoel is dat die regel Javascript, binnen het element waar het in zit, kijkt naar een h3 tag en daar de tekst uit haalt. Ik moet echter iets hebben wat het id ophaalt van het element. Maar dit zit er zo in: <div id="1'>

Did you bring the banana's? Steam-id: MonkeySleeve


Acties:
  • 0 Henk 'm!

  • Startups
  • Registratie: December 2004
  • Laatst online: 12-09-2022
code:
1
<div id="geheimid" onclick="alert(this.id);">klik hier</div>

[ Voor 12% gewijzigd door Startups op 24-01-2011 20:56 ]


Acties:
  • 0 Henk 'm!

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Dat het db-id van een item zichtbaar wordt is niet echt een probleem, je ontkomt er eigenlijk niet aan. Zolang de update/delete methodes maar niet toegankelijk zijn zonder autorisatie.

Ik verstop vaak het db-id in een div die het item omspant. Bijvoorbeeld: <div class="item" id="item-65">
In JS kun je dan met een substr het id van een item achterhalen. Een id mag in html nooit met een getal beginnen, dus je hebt altijd een prefix nodig. Door ook een class mee te geven kun je eenvoudig iets doen met alle items op een pagina, al kan dat ook zonder class.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:44

MueR

Admin Tweakers Discord

is niet lief

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Hmmm... als het ik het goed begrijp gebruik je jQuery, en dan is het heel simpel om een ID op te halen uit de HTML:
JavaScript:
1
var id = $('jouwHtmlElement').attr('id');


En zoals zwippie zegt, mag je nooit een ID (of class) met een cijfer laten beginnen. Dus moet je er een prefix voor zetten (bv item-*, gebruiker-*, w-*).

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Als je een DB-ID wilt koppelen aan een element is het misschien beter hier een ander attribuut voor te gebruiken, ipv de ID van het element te ge-/misbruiken. Dan hoef je ook niet de ID te gaan parsen.

Met HTML5 kun je hier eenvoudig een data-attribuut voor gebruiken, zoals:

HTML:
1
<div class="blaat" data-dbid="1337">...</div>


Als dit bij het genereren van de pagina gebeurt, dan kun je dit in de laatste jQuery opvragen middels:

JavaScript:
1
$('div.blaat').data('dbid');


En anders (als het later misschien dynamisch gezet wordt):

JavaScript:
1
$('div.blaat').attr('data-dbid');

[ Voor 35% gewijzigd door Bosmonster op 25-01-2011 10:15 ]


Acties:
  • 0 Henk 'm!

  • MonkeySleeve
  • Registratie: Februari 2009
  • Laatst online: 12-09 20:56

MonkeySleeve

It's just Monkey business

Topicstarter
Thnx allemaal, heb het inmiddels opgelost door het id gewoon letterlijk in een div te doen en dan in de css display: none: :)

Did you bring the banana's? Steam-id: MonkeySleeve


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Graag gedaan. Altijd fijn om te horen dat er niks met je input gedaan wordt ;)
Pagina: 1