Get a data id in modal using jquery and assign a variable - php

IF I click add button (like above image) with the id and name in href,how do I assign a variable after i get a data in modal like $_GET in php?
modal
<tr>
<td class="w3-padding-16" style="text-transform: capitalize"><?php echo $first_nameparty ?></td>
<td class="w3-padding-16" style="text-transform: capitalize"><?php echo $last_nameparty ?></td>
<td class="w3-padding-16" style="text-transform: capitalize"><?php echo $middle_nameparty ?></td>
<td>Add</td>
</tr>
js
$(document).ready(function(){
$(".party").click(function(event){
event.preventDefault();
var puttingdata = $(this).attr("href");
$("#puthere").text(puttingdata);
});
});
This is will show and i dont know how to assign
<span id="puthere" class="w3-large" style="text-transform: capitalize;"><b></b></span>

Maybe this is what you need.
Use data-* attribute intead of href.
<td><button data-obj='{"party": <?php echo $resident_idparty ?>, "partytwo": "<?php echo $first_nameparty ?>", "party3": "<?php echo $last_nameparty ?>"}' class="w3-btn w3-green party">Add</button></td>
Then you can get the data object assigned in puttingdata variable.
var puttingdata = $(this).data("obj");
$("#puthere").text(puttingdata.party);

It will reload when you are using href.
The $_GET syntax will only retrieve whats stated on the URL link, for eg.
// http://test.com?party=123
$var = $_GET['party']; // 123
If you do not want to reload the page, you should consider use AJAX

Related

php table get value from button when clicked

i have this table with a button in it, what i want is when i click the button "id=myBtn" get its value to a input text field.
<tbody>
<?php while($row = mysqli_fetch_array($queryTripulacion2)):? >
<tr>
<td><input type="checkbox" name="f[]" value=<?php echo $row[2];?>></td>
<td><?php echo $row['order'];?></td>
<td><?php echo $row['name'];?></td>
<td><?php echo $row['last'];?></td>
<td ><?php echo $row['cod1']?></td>
<td class="nr"><?php echo $row['cod2'];?></td>
<td><?php echo $row['address'];?></td>
<td><?php echo $row['activity'];?></td>
<td><input type="button" id="myBtn" value="<?php echo $row['wanted_value']; ?>"></td>
</tr>
<?php endwhile;?>
</tbody>
this is what i tried, but is not working!. I want the "wanted_value" inside my "#inputM". THANKS!
$(".tablar tbody").on('click','#myBtn',function() {
$('#modal').show();
var c = $(this).closest('tr').find('td.eq(8)').text();
$("#inputM").val(c);
.eq() is a function, not part of a selector. So it should be:
var c = $(this).closest('tr').find('td').eq(8).text();
But this won't work. That TD doesn't have any text in it, it just has the input button. You need to select the button, not the TD, and use .val() rather than .text().
var c = $(this).closest('tr').find('td').eq(8).children(":button").val();
But this is all really overcomplicating it, since the button you're selecting is the same one you clicked on, so it should just be:
var c = $(this).val();

How to make a button inside a table execute a mysql query

I have a simple html table that displays data from a mysql table containing a list of available tournaments.
<table>
<tr>
<th>Tournament Name</th>
<th>Platform</th>
<th>Date</th>
<th>Venue</th>
<th>Judge</th>
<th>Description</th>
<th>Limit</th>
<th>Register</th>
</tr>
<?php while($row = mysqli_fetch_array($result)):?>
<tr>
<td><?php echo $row['nTournament'];?></td>
<td><?php echo $row['pTournament'];?></td>
<td><?php echo $row['dTournament'];?></td>
<td><?php echo $row['vTournament'];?></td>
<td><?php echo $row['jTournament'];?></td>
<td><?php echo $row['dTournament'];?></td>
<td><?php echo $row['lTournament']; ?></td>
<td><form method="post" action="tournamentlist.php"><button type="submit" name="btn_register"></button></form></td>
</tr>
<?php endwhile; ?>
</table>
What I want to do is that once the current user clicks that button, the button executes a query which takes the current user's id and the tournament id of the selected row to add them to another mysql table. Something like a tournament inscription.
The query/function I want to run is:
if (isset($_POST['btn_register'])) {
singup();
}
function singup() {
global $db;
$idUser = $_POST['idUser'];
$idTournament= $_POST['idTournament'];
$query = "INSERT INTO registeredCompetitor(idUser, idTournament) VALUES ('$idUser', '$idTournament')";
mysqli_query($db, $query);
header('location: tournamentlist.php');
}
The query works just fine on it's own but I don't know if the function itself works because of the button.
Is it possible to do such thing without the use of a form? If not, What other ways are there to do something like this?
EDIT1: Button now is ready but nor the function or the query executes once it's clicked.
You can create a form on each row that has 2 hidden fields in it. Not sure what your DB fields are called though so you'll have to change user_id and tournament_id to something appropriate.
...
<td>
<form action="post" action="the_name_of_your_php_script.php">
<input type="hidden" name="idUser" value="<?php echo $row['user_id']; ?>">
<input type="hidden" name="idTournament" value="<?php echo $row['tournament_id']; ?>">
<button type="submit" name="btn_register"></button>
</form>
</td>
...
Can't wrap it because <form> is not allowed as a child of <td>
All the documentation I see online permits forms inside of <td>. The other alternative is to use a link instead of a form.
You can use javascript to execute this functionality.
<table>
<tr>
<th>Tournament Name</th>
<th>Platform</th>
<th>Date</th>
<th>Venue</th>
<th>Judge</th>
<th>Description</th>
<th>Limit</th>
<th>Register</th>
</tr>
<?php while($row = mysqli_fetch_array($result)):?>
<tr>
<td><?php echo $row['nTournament'];?></td>
<td><?php echo $row['pTournament'];?></td>
<td><?php echo $row['dTournament'];?></td>
<td><?php echo $row['vTournament'];?></td>
<td><?php echo $row['jTournament'];?></td>
<td><?php echo $row['dTournament'];?></td>
<td><?php echo $row['lTournament']; ?></td>
<td><button type="submit" onclick="sendRequest('<?php echo $idUser ?>','<?php echo $idTournament ?>')" name="btn_register"></button></td>
</tr>
<?php endwhile; ?>
</table>
Javascript code
function sendRequest(idUser,idTournament ){
// i am using jquery
$.post(other_page_url,{idUser:idUser,idTournament :idTournament},function(data)
{
window.location = 'tournamentlist.php';
} )}
I hope it's gonna help you
You don't need to wrap this in a <form> inside the table, you can do it all via Javascript / Jquery if you wish. On the html side, add the data you need to the button in data sets:
<td><button type="submit" name="btn_register" id="btn_register" data-user-id="<?php echo $userId ?>" data-tournament-id="<?php echo $row['idTournament']; ?>"></button></td>
Then in your script, you can call the data and send to post via ajax and either load the new page after INSERT, or load as a modal, or whatever you like. You can do something like below if loading a modal (change the load part to refresh the page if you want to go directly):
$('#btn_register').on('click', function () {
var t_id = $(this).data('tournament-id');
var u_id = $(this).data('user-id');
$.ajax({
url: "YourURL",
type: "POST",
data:{
t_id:t_id,
u_id:u_id
},
success: function (h) {
$(".modal-title").text("Table with new stuff");
$(".modal-body").html(h);
$('#modal').modal();
// lots of options here - you could even reload above if desired
}
})
});

symfony 1.4 and jquery. How to pass variable to jquery function?

I have the template indexSuccess.php with an AJAX function:
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#test<?php $mensajes->getIdmensajes() ?>').click(function(){
jQuery('#contenido<?php $mensajes->getIdmensajes() ?>').load(this.href);
return false;
});
});
</script>
<h2>Listado de mensajes emitidos</h2>
<h3>En orden cronológico inverso (más nuevo primero)</h3>
<table id="enviados" width="60%" border="1" cellpadding="8">
<thead>
<tr>
<th>Fecha Creación</th>
<th>Contenido del mensaje</th>
<th>Destinatarios</th>
</tr>
</thead>
<tbody>
<?php foreach ($mensajess as $mensajes): ?>
<tr>
<td width="10%" align="center"> <?php echo date('d/m/Y', strtotime($mensajes->getFechaalta())) ?></td>
<td bgcolor="<?php echo $mensajes->getColores()->getCodigo() ?>"><?php echo $mensajes->getCuerpo() ?></td>
<td width="20%" id="contenido<?php echo $mensajes->getIdmensajes() ?>">
<a id="test<?php echo $mensajes->getIdmensajes() ?>" href="<?php echo url_for('mensajes/receptores?idmensajes='.$mensajes->getIdmensajes()) ?>">Ver receptores</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
I want to pass the value $ message-> getIdmensajes () to the AJAX function. I will have a different ID for each row, but this does not work. But the function works well when I set the value. For example: jQuery ('# test24') and jQuery ('# contenido24') works well for the value Idmensajes=24 . How do I pass the value $ message-> getIdmensajes () to AJAX function?
Your question is not so clear but you wrote
jQuery ('#contenido24') works well for the value Idmensajes=24
Also, you have this
jQuery('#test<?php $mensajes->getIdmensajes() ?>').click(function(){
jQuery('#contenido<?php $mensajes->getIdmensajes() ?>').load(this.href);
return false;
});
So, I think you have elements with similar ids, such as contenido24, contenido25 and so on as data container and links with ids like #test24, #test25 an so. If this is the case then you can simply use
jQuery(document).ready(function(){
// Register click handler for all a tags whose id begins with 'test'
jQuery("a[id^='test']").click(function(e){
e.preventDefault(); // instead of return false
jQuery('#contenido'+this.id.match(/\d+/)[0]).load(this.href);
});
});
jQuery('contenido'+this.id.match(/\d+/)[0]) will select elements with id like #contenido24, contenido25 depending on the ID of a, if an a tag has id='test20' then it'll select #contenido20 and load content from ajax call into this element.

onclick redirect to url stored in php variable

I have the following table:
foreach ($forwards as $data):
?>
<tr style="cursor: pointer" class="main_row">
<td><?php echo $data['Offer']['id']; ?> </td>
<td><?php echo $data['Offer']['name'];?> </td>
<td><?php echo round($data['Stat']['ltr'],2)."%"; ?></td>
<td><?php echo round($data['Stat']['cpc'],2)."%"; ?></td>
<td><?php echo $data['Category']['name']?></td>
<td><?php echo $data['Country']['name'] ?></td>
</tr>
<?php
endforeach; ?>
now the idea is that when ever you click one of the main_row it should redirect to a new url. the problem is that the url contains an id for instance the url could look like www.example.com/details/2 where 2 is the id.
This id is like all of the other data stored in a php variable: $data['Offer']['id'];
Now my question how can i redirect using both php and javascript? is there a work around? .
Please do note that i am fully aware that php i server side and javascript is not. it is because of this i am asking this question.
<table>
<?php foreach ($forwards as $data): ?>
<tr data-link="http://www.example.com/details/<?php echo $data['Offer']['id']; ?>">
<td><?php echo $data['Offer']['id']; ?> </td>
<td><?php echo $data['Offer']['name'];?> </td>
<td><?php echo round($data['Stat']['ltr'],2)."%"; ?></td>
<td><?php echo round($data['Stat']['cpc'],2)."%"; ?></td>
<td><?php echo $data['Category']['name']?></td>
<td><?php echo $data['Country']['name'] ?></td>
</tr>
<?php endforeach; ?>
</table>
<script>
$('table tr').click(function(){
document.location.href = $(this).data('link');
});
</script>
if you use jQuery though.
You can get the ID from the first column in the row:
$(".main_row").click(function() {
var id = $(this).find("td:first-child").text();
window.location.href = 'www.example.com/details/' + id;
});
If you use jQuery do this:
$('.main_row').click(function(){
window.location.href = "YOUR_URL"+$(this).attr('id');
});
And modify the html for the row to look like:
<tr style="cursor: pointer" class="main_row" id="<?php echo $id ?>">
This way - any time you click on the row it appends the row ID to the url and redirect you there.
If I am understanding you question correctly, your not looking for a redirect. To redirect in php, it must be done before you echo anything to the browser.
Because you want to "redirect" after your display is rendered, you should be using anchors.
<td><a href="www.example.com/details/<?php echo $data['Offer']['id']; ?>">
<?php echo $data['Offer']['id']; ?>
</a></td>
The anchor will direct the browser to the href url.

delete items that are checked without $_POST php

I've stuck with the following issue:
I have a table with texts and each one has a checkbox next to it. I also have a button-like link "Delete selected". What I want is to give the ability to the user to select many texts through checkboxes and delete the selected all together. The problem is tha I don't want to use a form so I can't use $_POST so I suppose I have to use $_SESSION. I have used sessions before but I don't know how to combine them with checkboxes..
if you could give me some tips or examples I would be very gratefull..
parts of my code to give you a clue..
view_texts.php
<?php
$sql="SELECT * FROM texts";
$res=mysql_query($sql) or die(mysql_error());
$i=1;
while($row=mysql_fetch_array($res))
{
?>
<tr>
<td><input type="checkbox" name="check[]" value="<?php echo $row['id']?>"/></td>
<td><?php echo $i; ?></td>
<td><?php echo $row['title']; ?></td>
<td><?php echo substr($row['description'],0,20); ?></td>
<td><?php echo $row['page_id']; ?></td>
<td><img src="images/user_edit.png" alt="" title="" border="0" /> </td>
<td><a href="delete_text.php?id=<?php echo $row['id'];?>" class="ask"><img src="images/trash.png" alt=""
title="" border="0" /></a></td>
</tr>
<?php
$i++;
}
?>
<span class="bt_red_lft"></span><strong>Διαγραφή επιλεγμένων</strong><span class="bt_red_r"></span>
delete_selected_texts.php
<?php
if (isset($_POST['check']))
{
foreach ($_POST['check'] as $value)
{
$sql = "DELETE FROM texts WHERE id =".$value;
mysql_query ($sql);
}
}
?>
this is the code that i use for textboxes inside a form tag.
If you're stuck on not using a form, for whatever reason, you're looking at using javascript and sending an AJAX request on the POST instead. I'd recommend using jQuery, as that greatly simplifies the process of selecting the elements you want to target.
It would look something like this...
$(document).function(){
$(":checkbox").click(function(e){
var deleteItem = $("input:id").val();
$.ajax({
type: "POST";
data: deleteItem;
url: "path/to/a/file.php";
success: function(data){
if (data="success"){
$(this).css("backgroundcolor", "blue");
} else {
alert("failed to find item");
}
}
});
}
You would need then to have a file that the Ajax request sends the data to that will build a list of items to delete/take items off that list, which will be stored and called up when the delete_selected_texts.php is called up to be deleted.
NB.: The jQuery above hasn't been checked. There's an excellent chance of there being several errors in there.

Categories