• 0

OnClick with php variable?


Question

i know that using the OnClick tag, you can change javascript variables, im trying to do the same thing but change a PHP variable..

i also want to be able to do it on the same page without the page reloading.

im sure its really really ez to do, the answer is punching me in the face and i cant figure it out.

Link to comment
https://www.neowin.net/forum/topic/580888-onclick-with-php-variable/
Share on other sites

23 answers to this question

Recommended Posts

  • 0

It depends on how you are using the variable. For example if you have this link:

<a href='somepage.php?id=value'>URL</a>. You can use Javascript to change the target href to something like somepage.php?id=another_value.

But if you wish to change the variable value from a PHP file. Then you will need to use ajax to use javascript to communicate with the file, set the new value.

  • 0
  roosevelt said:
It depends on how you are using the variable. For example if you have this link:

<a href='somepage.php?id=value'>URL</a>. You can use Javascript to change the target href to something like somepage.php?id=another_value.

But if you wish to change the variable value from a PHP file. Then you will need to use ajax to use javascript to communicate with the file, set the new value.

ya, i dont want to do variable in the address, becuase its something really simple, that im justing using for a quick fix.

like i want to change $tinyfix = 1; into $tinyfix = 2; on click.

  • 0

Since the PHP-code is executed at the server, all PHP-code has been executed, and should be considered "dead", by the time the page is loaded in your web browser.

Javascript code is executed at the client after the page has been loaded in your web browser. That's why Javascript cannot talk with PHP code.

The only solution is to reload the entire page, as roosevelt said, or parhaps a part of the page as Code.Red said. There is no other option.

  • 0
  n3Mo said:
Since the PHP-code is executed at the server, all PHP-code has been executed, and should be considered "dead", by the time the page is loaded in your web browser.

Javascript code is executed at the client after the page has been loaded in your web browser. That's why Javascript cannot talk with PHP code.

The only solution is to reload the entire page, as roosevelt said, or parhaps a part of the page as Code.Red said. There is no other option.

ya i realized that after. i also realized that i can do the thing i wanted with html i believe.... can i do an OnClick html?

p.s.

OMG NEMO! ur sig! :o i used to play that game so much on my NES when i was a kid :p

  • 0

onclick is an attribute of any HTML element and is handled by JavaScript.

&lt;h1 onclick="alert('I am going to change `'+this.innerHTML+'` to `y0 mamma!`'); this.innerHTML = 'y0 mamma!'"&gt;Some text&lt;/h1&gt;

Alternatively, you can call a JavaScript function when onclick is executed:

&lt;script type="text/javascript"&gt;
function modify_text(obj, txt)
{
	alert('I am going to change `'+obj.innerHTML+'` to `'+txt+'`');
	obj.innerHTML = txt;
}
&lt;/script&gt;
&lt;h1 onclick="modify_text(this, 'y0 mamma!');"&gt;Some text&lt;/h1&gt;

More information on the onclick Event.

  • 0

ok ill explain what im trying to do and you can try to fashion an example for me.

right now, i have a javascript were when i click a button a drop down box appears, but when it appears it pushes all the text down the page, which i dont want it to do.

so what i want to do is set the margin to 30px; (or more) and then when i click the button to make the drop down box appear, i want the margin to change to 10px; so that none of the text moves, and theres still nice spacing.

  • 0

&lt;script type="text/javascript"&gt;
function toggle_display(id)
{
    var e = document.getElementById(id);

    if(e != undefined)
    {
        if(e.style.margin == '40px')
            e.style.margin = '10px';
        else
            e.style.margin = '40px';
    }
}
&lt;/script&gt;

&lt;input type="button" onclick="toggle_display('divIDName');" value="Click me!" /&gt;

What this will do is toggle the margin from 10 to 40px. If the margin is not 40px, it will make it 40px. If it is 40px, it will reset it to 10px.

If this is not the behavior you want, then you will want to remove the if(e.style.margin == '40px') conditional and simply set the margin to 40px. I added error checking just in case the element ID you pass is invalid.

  • 0
  Mathachew said:
What this will do is toggle the margin from 10 to 40px. If the margin is not 40px, it will make it 40px. If it is 40px, it will reset it to 10px.

If this is not the behavior you want, then you will want to remove the if(e.style.margin == '40px') conditional and simply set the margin to 40px. I added error checking just in case the element ID you pass is invalid.

yes, awesome!

thanks a ton :woot:

  • 0

arg i cant get it working.

i had it partiallly working, then i messed it up somehow.

&lt;html&gt;

&lt;head&gt;
&lt;link href='css.css' type='text/css' rel='stylesheet'&gt;
&lt;/head&gt;

&lt;body&gt;


&lt;div id='themargin'&gt;

hey this should be in a box.

&lt;/div&gt;

this should be outside the box. &lt;br/&gt;&lt;br/&gt;


&lt;script type="text/javascript"&gt;
function toggle_display(id)
{
var e = document.getElementById(id);

if(e != undefined)
{
if(e.style.margin == '40px')
e.style.margin = '10px';
else
e.style.margin = '40px';
}
}
&lt;/script&gt;

&lt;input type="button" onclick="toggle_display('themargin');" value="Click me!" /&gt;

&lt;/body&gt;
&lt;/html&gt;

#themargin {
	margin:40px;
	border:1px solid orange;
	padding:5px;
}

  • 0

It's because the margin property expects something like "40px 40px 40px 40px," not just "40px." The rendering engine understands this and replaces it with the correct form.

Something like this will work:

&lt;script type="text/javascript"&gt;			
function toggle_display(id)
{
	var e = document.getElementById(id);
	if(e != undefined)
	{
		if(e.style.margin.indexOf('40px') &gt;= 0 || e.style.margin == "") 
			e.style.margin = '10px'; 
		else
			e.style.margin = '40px';
	}
}
&lt;/script&gt;

Note that in Firefox, before you tell the javascript to set the margin property, javascript thinks that the property is empty, so we also check this in the if statement. I don't exactly know why this is or if there is a better way to deal with this, but in my experience I just do it this way.

  • 0

use event listeners

Much better than using the old on* method's, no idea why people don't use them more often.

Edit:

http://developer.mozilla.org/en/docs/DOM:e...ddEventListener

And since IE, as always goes against the trend, http://developer.mozilla.org/en/docs/DOM:e...ternet_Explorer

Edit 2: Although you shouldn't run into this until you start doing more advanced things, IE also handles the event passing wrong (i.e. not what the spec says), so you'll have to add more code to do the same thing than in Mozilla or such, here's some code, it's only an extra line, but it shouldn't be needed anyway. http://www.howtocreate.co.uk/wrongWithIE/?...r=Event+Objects

Edited by The_Decryptor
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Microsoft's "Athena" AI: A blueprint for your own dev team's productivity boost by Paul Hill Last month, Microsoft made many developer-oriented announcements at its annual BUILD conference. One of the tools that it announced at the time was called Athena, an artificial intelligence agent that lives in Microsoft Teams and aims to speed up product development processes. Now, however, Microsoft has released the blueprint of Athena so anyone can begin implementing a similar helper for their work. Rather than just another chatbot, Athena is a deeply integrated agent accessible through Teams that helps to connect people, tools, and data throughout the product development process. Athena is smart enough to work out what needs to happen next and helps team members get it done without having to go to different applications - Athena controls it all from Teams and you just have to communicate in natural language. Athena can be embedded in several developer workflows including Teams, Azure DevOps, and GitHub. Perhaps the greatest thing about Athena is that it’s not a new product being sold by Microsoft, but rather a methodology and open-source template (Dex) that organizations or individuals can take to build their own AI agents, allowing for more customization. To get started with Athena, you'll want to set up the Dex agent. Microsoft has also published a breakout session video about Athena so you can take a deeper dive. Who it affects, and how The primary beneficiaries of Microsoft’s decision to release Athena open source are engineering teams everywhere who will be freed from boring, repetitive tasks such as pull request (PR) reviews, work item management, and security checks. This will let them get on with coding new features and innovating - something that Microsoft has been pushing hard for since the start of the latest AI revolution. For product managers and engineering leaders, Athena also looks set to be incredibly useful as they will get better real-time visibility into the status of projects, if a release is truly ready for launch, and to ensure the team is aligned. Organizations from small to large will be able to benefit from using Athena. Due to its open-source nature, Athena can be tailored to meet specific development processes. This could unlock faster delivery cycles and improve code quality across the board. Why it's happening Athena is already being used internally at Microsoft by over 2,000 of its engineers. The Redmond giant explained that this has led to “measurable gains” in speed, quality, and focus. Aside from faster review cycles for developers, Athena is also surfacing release-blocking bugs earlier, enabling the consistent completion of security and privacy workflows, and providing quicker health assessments so that teams can gauge the overall health of their software delivery. By handling all these more boring tasks, Athena can free up developers to build more features into their projects. It also has the potential to speed up delivery times so that end users can use the new software faster, and with potentially less bugs. We often hear the term “democratization” in tech, a process that makes technologies more accessible and affordable. According to this definition, Microsoft’s release of Athena delivers on democratizing AI for developers as its open source and allows people to integrate AI Into their workflows, without starting from scratch. The move also aligns with Microsoft's AI strategy, that is, putting it all throughout its products. Copilot is probably the most notorious for its omnipresence in essentially every Microsoft product including Windows and Edge. Unlike Copilot, developers get a bit more freedom with Athena, but it’s still tied up with Microsoft products, namely Teams and GitHub. Caveats and what to watch for While it’s great that Microsoft is making its Athena blueprint accessible, one issue is that developers may still find it a bit complex to implement as there are still specific customizations organizations will want to make. Additionally, this solution involves a more involved setup process as outlined in the GitHub README. Another thing organizations should be wary about is data privacy and security implications when it comes to integrating with sensitive internal systems. Organizations that are working on secretive projects probably wouldn’t want to use Athena as this could put sensitive code in the hands of third parties. It’s not only technical issues that need considering either, there is also the human element. Some people may have concerns about AI hallucinating or ethical concerns around job security that could hurt adoption. To this end, Microsoft has reaffirmed that Athena is supposed to assist teams only, not replace team members. While Athena can be extremely useful, as shown by the results internally at Microsoft, human oversight and judgment will still be vital. Complex decision and creative problem-solving in development are some areas where a human still needs to be involved. Source: Microsoft
    • How could it not be optional? ChatGPT isn't going to guess people's credentials :P
    • Mmmm, spread too thin into 2 quite different things
    • Only good thing shown at the showcase and it's not even an exclusive. And people keep saying that Xbox has no games 😅 Microsoft is going to wipe the floor with Sony this weekend.
    • flight? Maybe if they call it an arcade stick that'll help.
  • Recent Achievements

    • First Post
      James courage Tabla earned a badge
      First Post
    • Reacting Well
      James courage Tabla earned a badge
      Reacting Well
    • Apprentice
      DarkShrunken went up a rank
      Apprentice
    • Dedicated
      CHUNWEI earned a badge
      Dedicated
    • Collaborator
      DarkShrunken earned a badge
      Collaborator
  • Popular Contributors

    1. 1
      +primortal
      382
    2. 2
      +FloatingFatMan
      176
    3. 3
      ATLien_0
      174
    4. 4
      snowy owl
      169
    5. 5
      Xenon
      133
  • Tell a friend

    Love Neowin? Tell a friend!