Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

form verzenden lukt niet : php+javascript

Pagina: 1
Acties:
  • 446 views

  • jonaskellens
  • Registratie: November 2006
  • Laatst online: 30-05-2011
PHP:
1
2
3
4
5
6
7
8
9
<?php
    while ($rij = mysql_fetch_array($result))
    {
    echo ("<tr class='users_detail'><td width='20%'>".$rij['ID']."</td><td width='20%'>".$rij['username']."</td><td width='20%'>".$rij['level']."</td>".
        "<td width='20%'><a href='#' onClick=\"showdetail('".$rij['ID']."')\">edit</a></td><td width='20%'><a href='?key=verwijderen&id=".$rij['ID']."'>remove</a></td></tr>".
        "<tr class='users_detail' id='".$rij['ID']."'><td width='20%'>&nbsp;</td><form id='".$rij['ID']."' method=\"post\" action='".$_SERVER['PHP_SELF']."'><td width='20%'><input type='text' id='nieuwusername' value='".$rij['username']."' size='10' maxlength='6'></td><td width='20%'><input type='text' id='nieuwlevel' value='".$rij['level']."' maxlength='1' size='10'></td><td width='20%'><a href='#' onclick=\"javascript:document.getElementById('".$rij['ID']."').submit()\">wijzigen</a></td></form><td width='20%'><a href='#' onClick=\"showdetail('".$rij['ID']."')\">cancel</a></td></tr>"
        );
    }
?>


Bij klikken op 'wijzigen' gebeurt er niks...

Kan het dat dit is doordat ik javascript binnen een php-echo statement gebruik ??
(php op server <--> javascript client side)

Ik wil bekomen dat er bij klikken op 'wijzigen' databasegegevens worden geupdate.

Dus ik check nu of er een POST is om binnen een if-statement de databasegegevens te updaten.

Echter de stap die ervoor moet gebeuren nl. klikken, gaat niet.

Ik heb ook al geprobeerd via een GET-url alle variabelen mee te geven, maar ik weet niet hoe de ingevulde waarde van mijn input-kaderkes aan de argumenten in mijn GET-url toe te kennen...

Ook heb ik al geprobeerd met document.forms['".$rij['ID']."'].submit() maar met evenveel succes...

Kan iemand mij zeggen wat er fout gaat en/of een alternatief helpen bedenken ?


EDIT : bij voorkeur wil ik geen 'button' gebruiken als submit... Moet toch mogelijk zijn via <a></a> ook ?

[ Voor 3% gewijzigd door jonaskellens op 05-09-2008 21:06 ]


  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Probeer het eerst eens met een button en zonder Javascript: werkt het dan wel?

Koop of verkoop je webshop: ecquisition.com


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Als je in de uiteindelijke output van PHP kijkt, zie je dan bij onclick=showdetail('') staan?
Zo ja, dan is je query niet goed en moet je die even debuggen.

Overigens zou ik een getal als getal behandelen, niet als tekst, dus showdetail($rij['ID'])!

Over je edit: Waarom geen button gebruiken met submit? Daar is een dergelijke button toch juist voor bedoeld? :) Want dan is een formulier ook niet per se meer nodig imo... :)

Als je per se iets met JS wilt doen, kan je op je submit button of je form toch gewoon een onsubmit hangen? :?

[ Voor 36% gewijzigd door CH4OS op 05-09-2008 21:15 ]


  • jonaskellens
  • Registratie: November 2006
  • Laatst online: 30-05-2011
Als je in de uiteindelijke output van PHP kijkt, zie je dan bij onclick=showdetail('') staan?
Zo ja, dan is je query niet goed en moet je die even debuggen.
het gaat niet over onclick=showdetail('')
Wel over : <a href='#' onclick=\"javascript:document.getElementById('".$rij['ID']."').submit()\">wijzigen</a>
in :
"<tr class='users_detail' id='".$rij['ID']."'><td width='20%'> </td><form id='".$rij['ID']."' method=\"post\" action='".$_SERVER['PHP_SELF']."'><td width='20%'><input type='text' id='nieuwusername' value='".$rij['username']."' size='10' maxlength='6'></td><td width='20%'><input type='text' id='nieuwlevel' value='".$rij['level']."' maxlength='1' size='10'></td><td width='20%'><a href='#' onclick=\"javascript:document.getElementById('".$rij['ID']."').submit()\">wijzigen</a></td></form><td width='20%'><a href='#' onClick=\"showdetail('".$rij['ID']."')\">cancel</a></td></tr>"
Over je edit: Waarom geen button gebruiken met submit? Daar is een dergelijke button toch juist voor bedoeld? :) Want dan is een formulier ook niet per se meer nodig imo... :)
Waarom geen button : lelijk op mijn site !
Heb momenteel via css een mooie button gecreëerd : plain text met kleur en achtergrond enzo...

Mijn probleem is eigenlijk dat ik php en javascript wil combineren :
javascript voor de submit
php om mijn database te kunnen opdaten

[ Voor 36% gewijzigd door jonaskellens op 05-09-2008 21:43 ]


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Dat het jou niet over onclick=showdetail("") gaat, zou ik nogal raar vinden. Als je namelijk showdetail("") hebt, is rij['ID'] dus leeg en heb je gewoon een foutje in je query. Ik heb je dus een handigheidje gegeven dat even te controleren.

En nogmaals, waarom een getal als tekst behandelen? :) showdetail(1) kan dus ook gewoon en behandel je een getal zoals het hoort: als een integer.

Submitbuttons kan je via CSS ook gewoon stylen. Volgens mij kan je zelfs een image toekennen als button via CSS, maar ben hier niet zeker van. Plak aan een (submit)button van een form maar eens een id of een class, dan gaat er vast een wereld voor je open.

Kijk maar naar de submit button hier op GoT bij elke posting die je tikt, is toch ook gewoon gestyled met CSS, geen JS voor nodig hoor... :)

[ Voor 24% gewijzigd door CH4OS op 05-09-2008 21:47 ]


  • jonaskellens
  • Registratie: November 2006
  • Laatst online: 30-05-2011
GJtje schreef op vrijdag 05 september 2008 @ 21:42:
Dat het jou niet over onclick=showdetail("") gaat, zou ik nogal raar vinden. Als je namelijk showdetail("") hebt, is rij['ID'] dus leeg en heb je gewoon een foutje in je query. Ik heb je dus een handigheidje gegeven dat even te controleren.
showdetail is een javascript-functie die verborgen rijen doet verschijnen; nl de verborgen rij om de gegevens aan te passen.
Dit werkt perfect zoals ik wil. Staat los van mijn probleem.

Mijn probleem is dat mijn POST niet gaat.
onclick=\"javascript:document.getElementById('".$rij['ID']."').submit()
doet nikske.

Hoe kan ik er met andere woorden voor zorgen dat wanneer ik op 'wijzigen' klik, mijn formulier gePOST wordt ?

dus we nemen het woordje 'wijzigen' en zorgen dat er op geklikt kan worden :
<a href='#'>wijzigen</a>
nu moet ik er nog de actie POST of SUBMIT aan gehecht krijgen...
--> HOE ??
Kijk maar naar de submit button hier op GoT bij elke posting die je tikt, is toch ook gewoon gestyled met CSS, geen JS voor nodig hoor... :)
IDD, hoe zit dit dan in elkaar ??

[ Voor 9% gewijzigd door jonaskellens op 05-09-2008 21:49 ]


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

jonaskellens schreef op vrijdag 05 september 2008 @ 21:47:
showdetail is een javascript-functie die verborgen rijen doet verschijnen; nl de verborgen rij om de gegevens aan te passen.
Dit werkt perfect zoals ik wil. Staat los van mijn probleem.
Oke, doordat je zo weinig code gaf, dacht ik dat het misschien hier aan zou kunnen liggen.
Mijn probleem is dat mijn POST niet gaat.
onclick=\"javascript:document.getElementById('".$rij['ID']."').submit()
doet nikske.
Wat is de JS error die je krijgt dan? :)
Hoe kan ik er met andere woorden voor zorgen dat wanneer ik op 'wijzigen' klik, mijn formulier gePOST wordt?
Het mooiste is natuurlijk met een submitbutton of hyperlink, dan werkt het overal.
dus we nemen het woordje 'wijzigen' en zorgen dat er op geklikt kan worden :
<a href='#'>wijzigen</a>
nu moet ik er nog de actie POST of SUBMIT aan gehecht krijgen...
--> HOE ??
Wat je ook kan doen:
PHP:
1
echo '<a href="wijzigen.php?userID='. $rij['ID'] .'" title="Wijzigen van instellingen voor '. $rij['usert'] .'">Wijzigen '. $rij['usert'] .'</a>';

Dan hoef je alleen nog maar middels GET het userID af te vangen... :)
IDD, hoe zit dit dan in elkaar ??
Hier bij GoT is het één en dezelfde styling voor elke button.
FF snel uit de pols, geeft niet hetzelfde effect als hier op GoT
Cascading Stylesheet:
1
2
3
4
5
6
7
input
{
    border: 1px solid #000;
    background-color: yellow;
    font-weight: bold;
    font-size: 10pt;
}
Zou gewoon moeten werken.

[ Voor 11% gewijzigd door CH4OS op 05-09-2008 22:03 ]


  • jonaskellens
  • Registratie: November 2006
  • Laatst online: 30-05-2011
GJtje schreef op vrijdag 05 september 2008 @ 21:54:
Hier bij GoT is het één en dezelfde styling voor elke button.
FF snel uit de pols, geeft niet hetzelfde effect als hier op GoT
Cascading Stylesheet:
1
2
3
4
5
6
7
input
{
    border: 1px solid #000;
    background-color: yellow;
    font-weight: bold;
    font-size: 10pt;
}
Zou gewoon moeten werken.
Ik begrijp niet goed hoe deze css-code zorgt voor het posten van mijn form ? Er moet toch een actie ergens aan zitten ? Dit is toch gewoon de opmaak ??
.input is om toe te kennen aan het class-attribuut, niet ?!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

jonaskellens schreef op vrijdag 05 september 2008 @ 21:58:
Ik begrijp niet goed hoe deze css-code zorgt voor het posten van mijn form ? Er moet toch een actie ergens aan zitten ? Dit is toch gewoon de opmaak ??
.input is om toe te kennen aan het class-attribuut, niet ?!
Dat heeft er ook niets mee te maken. Je vroeg net toch ook hoe een submit button te stylen? :) Nou doe je dus zo... ;)

.input is niet om een class toe te kennen, dat is enkel de . (punt).
Om een id toe te kennen, dat gebeurd met # (hekje).

Zoals de CSS code is, die ik nu gaf, geld de opmaak voor elke tag met input als HTML-tag. Uiteraard kan je dat dan weer verfijnen met classes of ID's... :)

MAW: Je kan input buttons ook gewoon stylen met CSS. Zo ook een submit button en heb je de hele JS niet eens meer nodig, tenzij je met AJAX werkt natuurlijk, maar dan kan je op je form een onsubmit hangen.

[ Voor 24% gewijzigd door CH4OS op 05-09-2008 22:01 ]


  • jonaskellens
  • Registratie: November 2006
  • Laatst online: 30-05-2011
GJtje schreef op vrijdag 05 september 2008 @ 21:54:
[...]
Wat je ook kan doen:
PHP:
1
echo '<a href="wijzigen.php?userID='. $rij['ID'] .'" title="Wijzigen van instellingen voor '. $rij['usert'] .'">Wijzigen '. $rij['usert']</a>';

Dan hoef je alleen nog maar middels GET het userID af te vangen... :)
Hoe geef ik in mijn GET dan ook de input mee van:
- <input type='text' id='nieuwusername'>
- <input type='text' id='nieuwlevel' >

  • Noork
  • Registratie: Juni 2001
  • Niet online
Als ik het goed begrijp, heeft een element dus een ID als 1, 2, 3, 4 enzovoorts? Voor zover ik weet mag een dergelijk id niet alleen bestaan uit een nummer, maar moet het voorafgaan door een string. Dus iets als element1, element2 enz.

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

jonaskellens schreef op vrijdag 05 september 2008 @ 22:04:
Hoe geef ik in mijn GET dan ook de input mee van:
- <input type='text' id='nieuwusername'>
- <input type='text' id='nieuwlevel' >
PHP:
1
2
3
4
echo '<form method="get" action="'. $_SERVER['PHP_SELF'] .'">
         <input type="text" value="'. $rij['usert'].'" name="usert" />
         <input type="text" vallue="'. $rij['email'] .'" name="email" />
      </form>';
Overigens is dat basic HTML, zie bijvoorbeeld ook handleidingHTML.nl.

EDIT:
Ik zie nu dus ook wat er fout is in je formulier, waardoor het op de normale manier posten niet lukt.
Je formulier (of in ieder geval de input tags daarvan) missen een name attribuut.
Hang die er aan et voila, je kan posten like it should! :)

[ Voor 29% gewijzigd door CH4OS op 05-09-2008 22:48 ]


  • jonaskellens
  • Registratie: November 2006
  • Laatst online: 30-05-2011
GJtje schreef op vrijdag 05 september 2008 @ 22:06:
[...]
PHP:
1
2
3
4
echo '<form method="GET" action="'. $_SERVER['PHP_SELF'] .'">
         <input type="text" value="'. $rij['usert'].'" name="usert" />
         <input type="text" vallue="'. $rij['email'] .'" name="email" />
      </form>';
Overigens is dat basic HTML, zie bijvoorbeeld ook handleidingHTML.nl.
Jaja die basis heb ik wel hoor. Het was ook zo eenvoudig niet dat ik het bedoelde...
Ik bedoelde <a href="?key=wijzigen&username=nieuwusername&level=nieuwlevel">edit</a>
maar dat lukt dus niet want zo geef ik gewoon aan de variabele username nieuwusername als waarde en aan level nieuwlevel als waarde.
EDIT:
Ik zie nu dus ook wat er fout is in je formulier, waardoor het op de normale manier posten niet lukt.
Je formulier (of in ieder geval de input tags daarvan) missen een name attribuut.
Hang die er aan et voila, je kan posten like it should! :)
Een name-attribuut... ja daar zou ik op gestoten hebben waarschijnlijk. Maar daarvoor moest ik eerst weten het formulier te posten natuurlijk. Wat niet gaat...

Ik probeer nu de input via css te stylen zoals je me zonet hebt aangegeven...

Dank voor je reply !

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

jonaskellens schreef op vrijdag 05 september 2008 @ 22:24:
Een name-attribuut... ja daar zou ik op gestoten hebben waarschijnlijk. Maar daarvoor moest ik eerst weten het formulier te posten natuurlijk. Wat niet gaat...

Ik probeer nu de input via css te stylen zoals je me zonet hebt aangegeven...

Dank voor je reply !
Je kan niet posten, doordat je input-velden geen name attribuut hebben. Voeg voor elk veld dus een name attribuut in en je kan op de normale weg posten naar de pagina.
PHP:
1
2
3
4
5
echo '<form method="post" action="'. $_SERVER['PHP_SELF'] .'">
         <input type="text" value="'. $rij['usert'].'" name="usert" />
         <input type="text" vallue="'. $rij['email'] .'" name="email" />
         <input type="submit" value="Wijzigen" class="submitbutton" />
      </form>';
Je CSS is dan als volgt:
Cascading Stylesheet:
1
2
3
4
5
6
7
.submitbutton
{
    border: 1px solid #000;
    background-color: yellow;
    font-weight: bold;
    font-size: 10pt;
}
Als je het zo neerzet in je gehele formulier, kan je gewoon posten en is er niets aan de hand, heb je niet eens JS meer nodig... :)

Heb even snel mijn voorbeelden in een bestand gezet: http://www.flipdesign.nl/test.php

Heb net ook even getest door een input veldje in het formulier te zetten, zónder name attribuut en deze werd vervolgens niet weergegeven in de array, hieruit kan ik concluderen dat het name attribuut gewoon nodig is.

[ Voor 11% gewijzigd door CH4OS op 05-09-2008 22:51 ]


  • jonaskellens
  • Registratie: November 2006
  • Laatst online: 30-05-2011
<input type='button' class='.button' value='remove' onClick=\"location.href='?key=remove&id=".$rij['ID']."'\">

Mijn button neemt niet de stijl aan van mijn css-attribuut .button

.button is gewoonweg dezelfde css-code overgenomen als jij me hebt gegeven, als test.

[ Voor 19% gewijzigd door jonaskellens op 05-09-2008 23:08 ]


  • Noork
  • Registratie: Juni 2001
  • Niet online
Probeer eens zonder de punt. Dus gewoon class="button". Daarnaast zou button ook een gereserveerde naam kunnen zijn. Je zou dus ook kunnen proberen: class="mijnbutton"

  • jonaskellens
  • Registratie: November 2006
  • Laatst online: 30-05-2011
Noork schreef op vrijdag 05 september 2008 @ 23:08:
Probeer eens zonder de punt. Dus gewoon class="button". Daarnaast zou button ook een gereserveerde naam kunnen zijn. Je zou dus ook kunnen proberen: class="mijnbutton"
Zonder puntje it is !

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

jonaskellens schreef op vrijdag 05 september 2008 @ 23:05:
<input type='button' class='.button' value='remove' onClick=\"location.href='?key=remove&id=".$rij['ID']."'\">

Mijn button neemt niet de stijl aan van mijn css-attribuut .button

.button is gewoonweg dezelfde css-code overgenomen als jij me hebt gegeven, als test.
Kijk nou maar even naar mijn voorbeeld, word het helemaal voor je beschreven, als je in de source kijkt. In je uiteindelijke HTML hoef je geen . of # aan te geven voor resp. een class of id. Dat doe je in HTML gewoon textueel: class="een" id="twee" bijvoorbeeld.

[ Voor 3% gewijzigd door CH4OS op 05-09-2008 23:11 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Komop, je hebt genoeg kunnen spelen. Probeer je iets meer te verdiepen in de materie en zoek en vind met Google!

Dit topic gaat dicht aangezien het originele probleem is opgelost en er geen echte discussie waarde ontstaat aan de hand van de rest van de topics...

Ik wil je daarnaast dringen vragen om ook eens andere users te helpen met hun problemen. We zijn er niet speciaal voor jou :/

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1

Dit topic is gesloten.