Publication de fonction Javascript et script d'appel php

Dans html, j'ai plusieurs boutons qui sont automatiquement créés pour chaque objet dans la base de données avec un statut particulier. Chaque bouton obtient son propre identifiant.

echo '<Button id="button'.$counter.'" onClick="clickedbutton('.$counter.', '.$row['OrderID'].')" >'."<center>".$row['OrderID']."<br>"."</center>".'</Button>'; 

Le bouton appelle le bouton de la fonction javascript et lui donne le numéro du bouton et la commande de ce bouton.

 function clickedbutton(buttonid,orderid){ buttonid = "button" + buttonid; } 

Cette fonction est chargée dans le numéro du bouton et le fait sur button0, button1, etc. Le orderid est également franchi avec succès. Maintenant, dans la fonction, je veux appeler un script php externe, mais aussi orderid doit être transmis au script.

 <?php //connect to database include_once('mysql_connect.php'); // Select database mysql_select_db("test") or die(mysql_error()); // SQL query $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + orderid + "'"; mysql_close(); ?> 

Je connais la protection mysqli et tout, je vais l'ajuster plus tard. Maintenant, je veux me concentrer sur la question ci-dessus, comment appeler et passer à travers le paramètre variable vers le phpscript.

Vous devrez utiliser AJAX.

Javascript seul ne peut pas atteindre un script php. Vous devrez faire une demande, passer la variable à PHP, l'évaluer et retourner un résultat. Si vous utilisez jQuery en envoyant une requête ajax est assez simple:

 $.ajax({ data: 'orderid=' + your_order_id, url: 'url_where_php_is_located.php', method: 'POST', // or GET success: function(msg) { alert(msg); } }); 

Et votre script php devrait obtenir l'id de commande comme:

 echo $_POST['orderid']; 

La sortie revient en chaîne à la fonction de succès.

MODIFIER

Vous pouvez également utiliser les fonctions abrégées:

 $.get('target_url', { key: 'value1', key2: 'value2' }).done(function(data) { alert(data); }); // or eventually $.post instead of $.get 

En supposant que vous ne souhaitez pas utiliser AJAX, vous pouvez faire quelque chose comme ça dans votre fonction de clickedbutton :

 window.location.replace('path/to/page.php?orderid=' + orderid); 

Et ensuite dans votre page.php

 "...where OrderID = '" . $_GET('orderid') . "'"; 

(Notez les points pour rejoindre les chaînes)

En utilisant Ajax.

 function clickedbutton(buttonid,orderid){ $.post("page.php", { buttonid: buttonid }) .done(function(data) { alert("Data Loaded: " + data); }); } 

En php, vous l'obtenez avec $ _POST.

 //[..] previous php code $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + $_POST['buttonid'] + "'"; //[..] rest of php code 

Vous pouvez essayer comme ça

 var url = myurl +'?id=' + orderid; window.location.href = url; 

Et en page php

  $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '".mysql_real_escape_string($_GET['id'])."'"; 

modifier

Si vous souhaitez charger le fichier php sans rafraîchir la page, vous pouvez essayer comme d'autres amis l'ont suggéré …

Le moyen le plus simple est de créer une chaîne de requête et de la joindre à la fin de l'URL du script php.

 function clickedbutton(buttonid,orderid){ var url = 'script.php?'; var query = 'buttonid=' + buttonid + '&orderid=' + orderid; window.location.href = url + query } 

Dans le script php, vous pouvez accéder aux paramètres via ceci:

 <?php echo $_GET['buttonid']; echo $_GET['orderid'];