[PHP] input type='image' probleem met IE

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hey Tweakers!!!

Ik heb een formulier met een plaatje als submit knop. Dit doe ik met <input type="image" bla bla>
in firefox werkt het wel maar in IE niet, ik heb verschillende afhandelingen geprobeerd, zoals met server[requestmethod], isset($_POST), heb elke knop in een eigen formulier gezet, heb een submit knop gepakt en met css een background image erover gezet, wat in principe wel werkt maar ziet er weer totaal niet uit omdat die standaard button eroverheen komt.


PHP:
1
2
3
<form method="POST" action="<?$_PHPSELF?>"  style="padding:0;margin:0;">
                                        <input type="submit" style="background-image: url('../../img/nav/change.jpg'); background-repeat: no-repeat" width="26" height="12" value="<?=$strResult["contactpersonid"]?>" name="change"></form></td>
          <td height="16"><form method="POST" action="<?$_PHPSELF?>"  style="padding:0;margin:0;"><input type="image" src="../images/knoppen/edit_del.gif" width="15" height="16" value="<?=$strResult["contactpersonid"]?>" name="userID"></form></td>


met de afhandeling bovenin het script :

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        if (isset($_POST['userID'])) 
        {
                $strSQL = "DELETE FROM `contactperson` WHERE `contactpersonid` =".intval($_POST['userID']); 
                executeQuery($strSQL);
        }
        
        if (isset($_POST['change']))
        {
            $strSQL = "SELECT contactperson.*, cms_newsletter_group_name FROM contactperson LEFT JOIN company ON contactperson.companyid=company.companyid LEFT JOIN cms_newsletter_group ON company.companyrelation=cms_newsletter_group.cms_newsletter_group_id".$strOrder." WHERE contactperson.contactpersonid = ".$_POST["change"];
            $strRow = executeQuery($strSQL);
            if ($strRow)
            {
                while ($strResult = fetchArray($strRow))
                {
                    if ($strResult['contactnewsletter'] == 1)
                    {   
                        $strSQLUpdate = "UPDATE `contactperson` SET `contactnewsletter`='0' WHERE `contactpersonid` = ".$_POST['change'];   
                        executeUpdate($strSQLUpdate);
                    }
                    elseif ($strResult['contactnewsletter'] == 0) 
                    {
                        $strSQLUpdate = "UPDATE `contactperson` SET `contactnewsletter`='1' WHERE `contactpersonid` = ".$_POST['change'];   
                        executeUpdate($strSQLUpdate);
                    }
                }
            }
        }
    }

Nogmaals voor de duidelijkheid, in FireFox werkt alles helemaal goed maar in IE niet, hij herlaad de pagina wel maar verder voert hij niets uit.

Jullie zouden mij een heeel erg helpen omdat ik het wel fijn werken vind met een plaatje als submit knop

benieuwd naar jullie reacties!

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 21-09 16:43

TwoR

Gekleurde stippen

doe eens een print_r($_POST);

Bestaat de waarde $_POST['change'] wel? Als je een image gebruikt krijg je namelijk altijd de positie mee waar je geklikt hebt dus change_x en change_y als ik me niet vergis.

Acties:
  • 0 Henk 'm!

Verwijderd

Beter goed gejat dan zelf bedacht :)

faabman in "input type='image' werkt maar half in IE"

Whaaa :( te laat

[ Voor 18% gewijzigd door Verwijderd op 01-03-2006 13:49 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Waarom moet die image-input dezelfde value hebben als die andere input erboven? Waarom laat je die value niet gewoon weg?

'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!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Trouwens, wees ook niet verbaasd als iemand je applicatie sloopt dmv SQL Injection Attack.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja weet dat ik mijn tabelnamen en waardes moet `` '' -en, maar daar gaat het nu ff niet om, maar als ik het goed begrijp moet ik dus checken wat er in $_POST['change_x'] staat? Waarom werkt het dan wel goed in FireFox?

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Ga eens debuggen. print_r($_POST['change']). Als je daar een waarde krijgt print je $strSQL maar even, enzovoort. Maar ligt het aan mij of is je form raar opgebouwd :? Verder, waarom die while? Als je gegevens van 1 persoon ophaalt hoeft er ook maar 1x een update gedaan te worden.

[ Voor 4% gewijzigd door XWB op 01-03-2006 13:59 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
die print_r levert dit op :

Array ( [change_x] => 16 [change_y] => 1 )


is dus gewoon de coordinaten van de plek waar je klikt, dus zou ik het kunnen oplossen door er een hidden field in te zetten met de waarde, in mijn geval mijn contactpersonid

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gasten jullie zijn geweldig!! Het is me gelukt, ik wist gewoon echt niet dat IE de variabel namen kon / ging aanpassen. Voor de geinterreseerde met hetzelfde probleem de werkende code :

HTML:
1
2
3
4
5
6
7
8
9
<td>
                <form method="POST" action="<?$_PHPSELF?>"  style="padding:0;margin:0;">
                <input type="image" src="../../img/nav/change.jpg" width="26" height="12"  name="change">
                <input type="hidden" value="<?=$strResult["contactpersonid"]?>" name="id">
          </td>
          <td height="16">
                <input type="image" src="../images/knoppen/edit_del.gif" width="15" height="16"  name="userID">
                </form>
          </td>


en de afhandeling :

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        if (isset($_POST['userID'])) 
        {
                $strSQL = "DELETE FROM `contactperson` WHERE `contactpersonid` =".intval($_POST['userID']); 
                executeQuery($strSQL);
        }
        
        if (isset($_POST['change_x']))
        {
            $strSQL = "SELECT contactperson.*, cms_newsletter_group_name FROM contactperson LEFT JOIN company ON contactperson.companyid=company.companyid LEFT JOIN cms_newsletter_group ON company.companyrelation=cms_newsletter_group.cms_newsletter_group_id".$strOrder." WHERE contactperson.contactpersonid = ".$_POST["id"];
            $strRow = executeQuery($strSQL);
            if ($strRow)
            {
                while ($strResult = fetchArray($strRow))
                {
                    if ($strResult['contactnewsletter'] == 1)
                    {   
                        $strSQLUpdate = "UPDATE `contactperson` SET `contactnewsletter`='0' WHERE `contactpersonid` = ".$_POST['id'];   
                        executeUpdate($strSQLUpdate);
                    }
                    elseif ($strResult['contactnewsletter'] == 0) 
                    {
                        $strSQLUpdate = "UPDATE `contactperson` SET `contactnewsletter`='1' WHERE `contactpersonid` = ".$_POST['id'];   
                        executeUpdate($strSQLUpdate);
                    }
                }
            }
        }
    }

[ Voor 66% gewijzigd door Verwijderd op 01-03-2006 14:23 ]


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

[html] tags bestaan niet, je zal voor alle andere talen dan php [code=taal], in dit geval [code=html], moeten gebruiken :).

DM!


Acties:
  • 0 Henk 'm!

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Waarom gebruik je eigenlijk een input type is img en niet een button type=submit met daarin een image, lijkt mij in dit de juiste oplossing

Daarnaast is je HTML nog steeds brak en staat je app open voor SQL injection attacks(en dat laatst was ook al door gorgi opgemerkt ;))

(en het gaat niet om je waardes quoten, het gaat om het escapen van je input waarden http://nl2.php.net/mysql_real_escape_string)

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Acties:
  • 0 Henk 'm!

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 19:52
Gebruik het volgende:

PHP:
1
if(isset($_POST['submit_x']))


Een IMG SRC submit geeft geen submit door, maar submit_x en submit_y.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey..


Dat van die injection is inderdaad een hele goede, ik weet dat het belangrijk is om te gebruiken, maar de site waar ik nu aan bezig ben heeft dat helemaal niet, en ben ook niet van plan alles om te bouwen :)

Maar ik heb ook al een paar keer gehoord dat mijn html brak zou zijn. Wat is daar dan precies mis mee? Ik weet inderdaad dat die style eigenlijk in een apart css file hoort, maar doe vaak "inline-stylen" terwijl ik aan het programmeren ben. Ik leer het graag van jullie.


HTML:
1
2
3
4
5
6
7
8
9
<td>
     <form method="POST" action="<?php echo $_SERVER['PHPSELF']?>"  style="padding:0;margin:0;">
     <input type="image" src="../../img/nav/change.jpg" width="26" height="12"  name="change">
     <input type="hidden" value="<?php echo $strResult["contactpersonid"]?>" name="id">
</td>
<td height="16">
     <input type="image" src="../images/knoppen/edit_del.gif" width="15" height="16"  name="userID">
     </form>
</td>

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Maar ik heb ook al een paar keer gehoord dat mijn html brak zou zijn. Wat is daar dan precies mis mee? Ik weet inderdaad dat die style eigenlijk in een apart css file hoort, maar doe vaak "inline-stylen" terwijl ik aan het programmeren ben. Ik leer het graag van jullie.
Je ziet toch zo al dat de nesting niet klopt van je HTML elementen?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:37

mulder

ik spuug op het trottoir

Al doende leert men, zou mij niet al te druk maken. Css kan prima in je html ;)

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • Reinder83
  • Registratie: September 2002
  • Laatst online: 18-09 14:44
ik had dat ook al tegen je gezegd op PHPfreakz ;)
mja dat je er dan niets mee doet kan ik ook niet helpen :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
HTML:
1
2
3
4
5
6
7
8
9
<form method="POST" action="<?$_PHPSELF?>"  style="padding:0;margin:0;">
<td>
     <input type="image" src="../../img/nav/change.jpg" width="26" height="12"  name="change">
     <input type="hidden" value="<?=$strResult["contactpersonid"]?>" name="id">
</td>
<td height="16">
      <input type="image" src="../images/knoppen/edit_del.gif" width="15" height="16"  name="userID">
</td>
</form>


Dus zo zou het volgens jullie wel goed moeten zijn?

het is inderdaad wel iets netter, maar technisch gezien maakt het toch geen ene drol uit!?!?!

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:37

mulder

ik spuug op het trottoir

Nee, je mist bv table en tr tags. Dit is crap ;)

[ Voor 4% gewijzigd door mulder op 01-03-2006 16:07 ]

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
het is inderdaad wel iets netter, maar technisch gezien maakt het toch geen ene drol uit!?!?!
Vind je het voor jezelf dan niet eenvoudiger om nette code te hebben? :)

March of the Eagles


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Bij verkeerde nesting is het eigenlijk aan de parser om te bepalen wat hij ermee gaat doen. Hij kan besluiten tags te negeren, of af te sluiten op een plek waar jij dat niet verwacht. Het mooiste is nog wel dat dat per browser kan/zal verschillen aangezien er niet echt een standaard is voor dergelijke 'error correction'.
Kortom: als jij je niet aan de standaard houd kan je nooit garanderen dat het in elke browser goed werkt ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
die table en tr staan in dit stukje er niet bij, kan moeilijk een stuk script van 400 regels posten toch? had alleen het stukje eruit gehaald waar het om ging ;)

Ik vind het ook echt wel heel belangrijk om nette code te hebben. Nu we het er toch over hebben............

Ik heb wel eens dat wanneer ik mijn files upload naar de ftp en even later weer download om verder te coden, dat er dan witregels tussen mijn regels komen, de man van de hosting zegt dat het aan mijn client ligt wat ik vreemd vind. Want werk meestal in Zend en soms eens in Dreamweaver en lijken mij toch wel normale clients.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Verwijderd schreef op woensdag 01 maart 2006 @ 16:34:
die table en tr staan in dit stukje er niet bij, kan moeilijk een stuk script van 400 regels posten toch? had alleen het stukje eruit gehaald waar het om ging ;)
form-tags horen ook niet tussen tr en td
je kan overigens eenvoudig je HTML valideren via http://validator.w3.org

Intentionally left blank

Pagina: 1