pass form data in a new window to edit and save - php

I'm trying to figure out how to pass form data collected from sql database to a new window.
The idea is when the user click 'Rediger' (edit), that a new small window will open up with the current data and an input field for the user to change the data, and then hit the save button for the data to be written to the database. Then the window must close and the original page being updated with the new data.
Is this possible?
Can anyone please help me with this?
Thank you.
Check out the page here: http://kristoff.it/onlinecoaching/coach/
Here is my code:
<?php
/*Template Name: coach*/
?>
<?php
session_start();
$coachId = $_SESSION['coachId'];
$fornavn = $_SESSION['fornavn'];
$efternavn = $_SESSION['efternavn'];
$titel = $_SESSION['titel'];
$beskrivKort = $_SESSION['beskrivKort'];
$tlf = $_SESSION['tlf'];
$email = $_SESSION['email'];
$skype = $_SESSION['skype'];
$messenger = $_SESSION['messenger'];
$session30 = $_SESSION['session30'];
$session60 = $_SESSION['session60'];
?>
<!doctype html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo('charset');?>">
<title>
<?php
global $page, $paged;
wp_title( '|', true, 'right' );
bloginfo( 'name' );
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) )
echo " | $site_description";
if ( $paged >= 2 || $page >= 2 )
echo ' | ' . sprintf( __( 'Page %s' ), max( $paged, $page ) );
?>
</title>
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
<?php if ( is_singular() && get_option( 'thread_comments' ) ) wp_enqueue_script('comment-reply'); ?>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<div class="outerWrapper">
<div><img src="http://kristoff.it/onlinecoaching/wp-content/uploads/2013/05/logo.png" width="726" height="114" alt="OnlineCoaching"></div>
<div align="center">
<div class="contentForside">
<form method="POST" action="" id="submitcoach">
<?
$sql = "SELECT * FROM coach where coachId=1";
$result = mysql_query($sql);
while($row=mysql_fetch_assoc($result))
{
echo '<div class="coachgreen">';
echo '<h1>Velkommen coach ' . $row['fornavn'] . '</h1>';
echo '<div class="coachwhite">';
echo '<table border="0" align="left" width="99%">';
echo '<tr><td align="center" valign="top">';
echo '<table border="0" valign="top" width="130">';
echo '<tr><td><img id="coachImg" src="' . $row['imgUrl'] . '" width="110" height="120" alt="' . $row['imgAlt'] . '"></td></tr>';
echo '<tr><td valign="top"><p>Skift billede</p></td></tr>';
echo '<tr><td valign="top"> </td></tr>';
echo '<tr><td><img id="coachImg" src="http://kristoff.it/onlinecoaching/wp-content/uploads/2013/05/allanscherfig_video.jpg" width="110" height="120" alt="' . $row['imgAlt'] . '"></td></tr>';
echo '<tr><td valign="top"><p>Upload ny video</p>' . '</td></tr>';
echo '</table>';
echo '</td>';
echo '<td valign="top"><br>';
echo '<table width="100%" border="0">';
echo '<tr height="25">';
echo '<td valign="top"width="15%"><p id="coach"><b>Titel</b></p></td>';
echo '<td valign="top"><p id="coach">' . $row['titel'] . '</p></td>';
echo '<td><p id="coach">Rediger</p></td>';
echo '</tr>';
echo '<tr height="25">';
echo '<td valign="top"><p id="coach"><b>Beskrivelse kort</b></p></td>';
echo '<td valign="top"><p id="coach">' . $row['beskrivKort'] . '</p></td>';
echo '<td valign="top"><p id="coach">Rediger</p></td>';
echo '</tr>';
echo '<tr height="110">';
echo '<td valign="top"><p id="coach"><b>Beskrivelse lang</b></p></td>';
echo '<td valign="bottom"><div id="beskrivLang"><p id="coach">' . $row['beskrivLang'] . '</p></div></td>';
echo '<td valign="top"><p id="coach">Rediger</p></td>';
echo '</tr>';
echo '<tr height="10"><td colspan="3"> </td></tr>';
echo '<tr height="25">';
echo '<td valign="top"><p id="coach"><b>Brugernavn</b></p></td>';
echo '<td valign="top"><p id="coach">brugernavn</p></td>';
echo '<td valign="top"><p id="coach"> </p></td>';
echo '</tr>';
echo '<tr height="25">';
echo '<td valign="top"><p id="coach"><b>Adgangskode</b></p></td>';
echo '<td valign="top"><p id="coach">Adgangskode</p></td>';
echo '<td valign="top"><p id="coach">Skift</p></td>';
echo '</tr>';
echo '<tr height="25">';
echo '<td valign="top"><p id="coach"><b>Klient telefon</b></p></td>';
echo '<td valign="top"><p id="coach">' . $row['tlf'] . '</p></td>';
echo '<td valign="top"><p id="coach">Skift</p></td>';
echo '</tr>';
echo '<tr height="25">';
echo '<td valign="top"><p id="coach"><b>Skype</b></p></td>';
echo '<td valign="top"><p id="coach">' . $row['skype'] . '</p></td>';
echo '<td valign="top"><p id="coach">Skift</p></td>';
echo '</tr>';
echo '<tr height="22">';
echo '<td valign="top"><p id="coach"><b>Messenger</b></p></td>';
echo '<td valign="top"><p id="coach">' . $row['messenger'] . '</p></td>';
echo '<td valign="top"><p id="coach">Skift</p></td>';
echo '</tr>';
echo '<tr height="42">';
echo '<td align="right" valign="bottom"> </td>';
echo '<td valign="top"> </td>';
echo '<td valign="top"> </td>';
echo '</tr>';
echo '</table>';
echo '</td></tr>';
echo '</table';
}
?>
</form>
</div>
</div>
</div>
</div><!-- end contentForside -->
</div><!-- end center -->
</div> <!-- end outerWrapper -->
<div align="center">
<div class="copyright">
<?php echo 'copyright © ' . date('Y ') . 'kristoff.it' ;?>
</div>
</div>
</body>
</html>

When you create the new page with the form data to edit, include a hidden field that uniquely identifies what you are editing - ideally a unique key and table reference. When they click on the submit button, your form processor will then know which table and entry in that table to update.
Be sure to validate the data from the form as a user could of course attempt to maliciously modify that hidden data.
Edit: Once you have made the update, you can rebuild the page and show it to the user - it will appear to them they have updated a field in the original page.
You can do the update dynamically with ajax, but that is a longer story...

Related

HTML Problem in displaying the items in different lines

I am trying to show three copies of the image in each line dynamically when I read it from the database, but it shows all the images next to each other. I tried to edit the code so it copies it but didn't work
How to make show three images in each line regardless of the number of items in the database?
Here is my code:
<?php
session_start();
require "init.php";
login();
?>
<html>
<head>
<title> Expert System </title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table border='1' align='center' >
<?php
// LOGIN USER
function login(){
global $con;
global $counter;
//$email = $mysqli->escape_string('');
$query="SELECT * FROM users ";
$result=mysqli_query($con,$query);
if ( $result->num_rows == 0 ) // User doesn't exist
echo "User with that ID doesn't exist!";
else { // User exists
$counter=0;
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo '<td>
<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >
</td>';
echo '<td>
<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >
</td>';
echo '<td>
<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >
</td>';
echo "</tr>";
}
}
}
mysqli_close($con);
?>
</table>
</body>
</html>
According to a long discussion with the owner of this question, I'm posting my solution.
In your code you have to just move the table tag inside function.
<?php
// LOGIN USER
function login(){
// write remaining code.... and then use this while loop
echo '<table border="1" align="center">';
while($row = $result->fetch_assoc())
{ echo '<tr>';
// If you want 2 images in a row than use $i<= 2
for($i= 1; $i<= 3; $i++)
{
echo '<td><img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" ></td>';
}
echo '</tr>';
} // while
} // login()
Just use <tr> <img...> <tr> and remove <td> tag. <tr> represents row and <td> represents column. So because your <img> is inside <td> tags in <tr>, it is appearing in one row.
Here echo will not work, first made complete HTML then echo it once at the end. let see the example below.
Let see below, first what I am observing is that you are adding the same image thrice while it looks like you want to append the next image in the next row not the same image in each row.
Below I am just changing your code to show images in separate rows
$imagetags = "";
while($row = $result->fetch_assoc()) {
$imagetags .= "<tr><td>";
$imagetags .= '<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >'
$imagetags .= "</td></tr>";
$imagetags .= "<tr><td>";
$imagetags .= '<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >'
$imagetags .= "</td></tr>";
$imagetags .= "<tr><td>";
$imagetags .= '<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >'
$imagetags .= "</td></tr>";
}
But to show next image from DB row, in next row on HTML, you have to made changes in your code like below
$imagetags = "";
while($row = $result->fetch_assoc()) {
$imagetags .= "<tr><td>";
$imagetags .= '<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >'
$imagetags .= "</td></tr>";
}
that what shows with your code:
and that with my code:
You declared function inside of table but you called it before any html,that is why your images are not inside a table and not styled correctly, try this
<?php
session_start();
require "init.php";
// LOGIN USER
function login(){
global $con;
global $counter;
//$email = $mysqli->escape_string('');
$query="SELECT * FROM users ";
$result=mysqli_query($con,$query);
if ( $result->num_rows == 0 ) // User doesn't exist
echo "User with that ID doesn't exist!";
else { // User exists
$counter=0;
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo '<td>
<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >
</td>';
echo '<td>
<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >
</td>';
echo '<td>
<img src="images/' . $row["category"]. '" width="250px" height= "150px" alt="Avatar" >
</td>';
echo "</tr>";
}
}
}
mysqli_close($con);
?>
<html>
<head>
<title> Expert System </title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table border='1' align='center' >
<?php login(); ?>
</table>
</body>
</html>

how to get multiple checkbox value in "KOHANA FRAMEWORK"?

"KOHANA FRAMEWORK" submit button how to get selected check box value and how to insert in database.
My page has two fields textbox and second checkbox.
I trying to insert checkbox and textbox value but textbox value is possible to get but checkbox value is not.
=====> add.php
<?php echo form::open('backend/notifications/add/', array('enctype' => 'multipart/form-data')) ?>
<div class="staffWrapper">
<h2 style="float: left;">List Companies</h2>
<div class="clear"></div>
<table style="width:100%; table-layout:fixed;" border="0">
<tr>
<th width="20"><input type='checkbox' id='selectall' style='width:15px;'/></th>
<th width="210">Name</th>
<th width="100">Contact Person</th>
<th width="100">Phone</th>
<th width="210">Email</th>
<!-- <th width="80" colspan="2">Actions</th> -->
</tr>
<?php
if (count($companies)) {
$i = (isset($_GET['page']) ? ($_GET['page']-1)*50+1 : 1);
foreach ($companies as $company) {
echo $i % 2 ? '<tr class="even">' : '<tr class="odd">';
// echo "<td align='center'>" . $i . "</td>";
echo "<td align='center'>";
echo '<input type="checkbox" id="PILIH" name="PILIH[]" class="PILIH" value='.$company['id'].' style="width:15px;"/>';
echo "</td>";
echo "<td>" . $company['name'] . "</td>";
echo "<td>" . $company['contact_person'] . "</td>";
echo "<td>" . $company['phone'] . "</td>";
echo "<td>" . $company['email'] . "</td>";
$i++;
}
} else if (empty ($companies) && $searchKey){
echo '<tr class="odd">';
echo '<td colspan="7" align="center"><h3>No mathcing results were found for this search term.</h3></td>';
echo '</tr>';
} else if (empty ($companies)){
echo '<tr class="odd">';
echo '<td colspan="7" align="center"><h3>There are no companies.</h3></td>';
echo '</tr>';
}
?>
</table>
<?php echo $pagination; ?>
</div>
<div class="clear"></div>
<div style="float:right; margin-right: 335px; padding:10px 0 10px 0;">
<?php echo form::submit('', 'Create Notifications', array('class' => 'submit')) ?>
</div>
<div class="clear"></div>
<?php echo form::close(); ?>
In the same way as in pure PHP.
$PILIH = !empty($_POST['PILIH'])?$_POST['PILIH']:Array(); // pure PHP
$PILIH = Array::get($_POST, 'PILIH', Array());
$PILIH = $this->request->post('PILIH', Array()); //Where $this is Controller
$PILIH = Request::current()->post('PILIH', Array());
As a result, you will get an array from company-ID or an empty array, so:
$company_id = NULL;
$q = DB::query(Databse::INSERT, 'INSERT INTO foo (company_id) VALUES (:company_id)')->bind(':company_id', $company_id);
foreach($PILIH AS $company_id) {
$q->execute();
}
You did not give too much input, so: happy code analysis. And: RTFM.

how do I update the value of each row without primary key?

I want to update the value in a certain row. But it seems impossible since this table (from database) doesn't have the primary key. It only have two foreign key in its column. What should I do ? please, any help ?
here is my code :
<table align= "center" border="1" cellspacing="0" cellpadding="2">
<?php
$strgettable="select tblUsrGrp.UsrGrpNama, tblmenu.MenuNama, tblmenuakses.MenuAkses
FROM tblUsrGrp
inner join tblMenuAkses
on tblUsrGrp.UsrGrpID = tblMenuAkses.usrgrpid
inner join tblMenu
on tblMenu.menuid = tblMenuAkses.menuid";
$varRecCount=0;
$rs=odbc_exec($dbconnVOT, $strgettable);
if($rs)
{
echo '<tr><td style=width:10%;>';
echo '<center><b> No. </b></center>';
echo '</td>';
echo '<td style=width:30%;>';
echo '<center><b> User Group </b></center>';
echo '</td>';
echo '<td style=width:20%;>';
echo '<center><b> Menu Name </b></center>';
echo '</td>';
echo '<td style=width:20%;>';
echo '<center><b> Menu Akses </b></center>';
echo '</td>';
echo '<td style=width:20%;>';
echo '<center><b> Update </b></center>';
echo '</td></tr>';
while (odbc_fetch_row($rs))
{
$varRecCount++;
echo '<tr><td>';
echo '<center> '.$varRecCount.'</center>';
echo '</td>';
echo '<td>';
echo '<center> '.odbc_result($rs,"UsrGrpNama").'</center>';
echo '</td>';
echo '<td>';
echo '<center> '.odbc_result($rs,"MenuNama").'</center>';
echo '</td>';
echo '<td>';
echo '<center> '.odbc_result($rs,"MenuAkses").'</center>';
echo '</td>';
echo '<td>';
echo '</td>';
echo '</td></tr>';
}
}
?>
</table>
<div style="text-align:center;">
<input type="button" name="btnUpdate" id="btnUpdate" onClick="javascript:sendData('updatedata');" value = "Update">
</div>
any help would be much appreciated . TQ

SQL query doesn't give the right result

I have a form where people can search the database for four values:
Location, Period, Day and Service. I always do not get the results that I want.
If I use AND, people need to fill in everything. If I use OR I get the complete database. I want to be able to search the database for those one to 4 things. Is there a way how I can do this?
Is there maybe a way to check which fields are filled in, and that the query is automatically changed with the filled in fields?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Zoeken</title>
</head>
<body>
<p><img src="add.png" width="20px" height="20px"/> | <img src="search.png" width="20px" height="20px"/> | <img src="number.png" width="20px" height="20px"/> </p>
<form action="" method="post">
<div>
<table>
<tr><td><strong>Locatie: </strong></td><td><input type="text" name="Locatie" value="" /></td> </tr>
<tr><td><strong>Periode: </strong></td><td><input type="text" name="Periode" value="" /></td> </tr>
<tr><td><strong>Dag: </strong></td><td><input type="text" name="Dag" value="" /></td> </tr>
<tr><td><strong>Dienst: </strong></td> <td><input type="text" name="Dienst" value="" /></td></tr>
<tr><td></td><td><input type="submit" name="zoeken" value="Zoeken"></td></tr>
</table>
</div>
</form>
<p><img src="add.png" width="20px" height="20px"/> | <img src="search.png" width="20px" height="20px"/> | <img src="number.png" width="20px" height="20px"/> </p>
</body>
</html>
<?php
if (isset($_POST['zoeken']))
{
include('connect-db.php');
$Locatie = $_POST['Locatie'];
$Periode = $_POST['Periode'];
$Dag = $_POST['Dag'];
$Dienst = $_POST['Dienst'];
// get results from database
$result = mysql_query("SELECT * FROM WMC_DeLijn WHERE Locatie='$Locatie' ANY Periode='$Periode' ANY Dag='$Dag'ANY Dienst='$Dienst' ")
or die(mysql_error());
// display data in table
echo "<h2>Resultaten:</h2><p>";
echo "<table border='1' cellpadding='10'>";
echo "<table><tr><th>ID</th><th>Locatie</th><th>Periode</th><th>Dag</th><th>Dienst</th><th>Delen</th><th>Geleed</th><th>Start 1</th><th>Eind 1</th><th>Start 2</th><th>Eind 2</th><th>Lijnen</th></tr>";
// loop through results of database query, displaying them in the table
while($row = mysql_fetch_array( $result )) {
// echo out the contents of each row into a table
echo "<tr>";
echo '<td align="center">' . $row['id'] . '</td>';
echo '<td align="center">' . $row['Locatie'] . '</td>';
echo '<td align="center">' . $row['Periode'] . '</td>';
echo '<td align="center">' . $row['Dag'] . '</td>';
echo '<td align="center">' . $row['Dienst'] . '</td>';
echo '<td align="center">' . $row['Delen'] . '</td>';
echo '<td align="center">' . $row['Geleed'] . '</td>';
echo '<td align="center">' . $row['Start1'] . '</td>';
echo '<td align="center">' . $row['Eind1'] . '</td>';
echo '<td align="center">' . $row['Start2'] . '</td>';
echo '<td align="center">' . $row['Eind2'] . '</td>';
echo '<td align="center">' . $row['Lijnen'] . '</td>';
//Link to edit record
echo '<td align="center"><img src="edit.png" width="20px" height="20px"/></td>';
// Link to delete record
echo '<td align="center"><img src="delete.png" width="20px" height="20px"/></td>';
//Link to Add Event to Google Calendar
echo '<td align="center"><img src="proceed.png" width="20px" height="20px"/></td>';
echo "</tr>";
}}
// close table>
echo "</table>";
?>
You can either build the query string dynamically, only adding WHERE clause statements if the parameter is not falsy, or add conditions in the SQL itself like so: WHERE (col = ? OR '' = ?) AND (col2 = ? OR '' = ?).
Change your query to have either a AND condition or a OR condition like
SELECT * FROM WMC_DeLijn
WHERE Locatie='$Locatie'
AND Periode='$Periode'
AND Dag='$Dag'
AND ienst='$Dienst';
(OR)
SELECT * FROM WMC_DeLijn
WHERE Locatie='$Locatie'
OR Periode='$Periode'
OR Dag='$Dag'
OR ienst='$Dienst';

Need help with repeating/looping in PHP

I have this block of PHP and HTML:
<table width="57%" border="0" class="tabela_master" id="aps-cat">
<tr>
<?php
while ($row = $db->sql_fetchrow($result_1))
{
echo '<td width="33%" rowspan="12" align="center"><img src="../images/' . $row['picture'] . '" /></td>';
echo '<td width="20%" align="right" class="tabela_master" style="font-weight: bold">Emri / Mbiemri:</td>';
echo '<td width="1%"> </td>';
echo '<td width="46%" class="tabela_master">' . $row['firstname'] . " " . $row['lastname'] . '</td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold">Gjinia:</td>';
echo '<td> </td>';
echo '<td class="tabela_master">' . $row['gender'] . '</td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold">Datelindja:</td>';
echo '<td> </td>';
echo '<td class="tabela_master">' . $row['birthday'] . '</td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold">Adresa / Lokacioni:</td>';
echo '<td> </td>';
echo '<td class="tabela_master">' . $row['location'] . '</td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold">Telefoni:</td>';
echo '<td> </td>';
echo '<td class="tabela_master">' . $row['telephone'] . '</td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold">Email adresa:</td>';
echo '<td> </td>';
echo '<td class="tabela_master">' . $row['email'] . '</td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold">Interesi:</td>';
echo '<td> </td>';
echo '<td class="tabela_master">' . $row['occupation'] . '</td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold"> </td>';
echo '<td> </td>';
echo '<td class="tabela_master"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold"> </td>';
echo '<td> </td>';
echo '<td class="tabela_master"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold"> </td>';
echo '<td> </td>';
echo '<td class="tabela_master"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold"> </td>';
echo '<td> </td>';
echo '<td class="tabela_master"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right" class="tabela_master" style="font-weight: bold"> </td>';
echo '<td> </td>';
echo '<td class="tabela_master"> </td>';
}
//$db->sql_freeresult($result_1);
?>
</tr>
</table>
Now what I want is multiple records shown in the page. The web currently looks like this:
And what I want would look like this:
So my table would provide all my results from my MySQL query which looks like this:
$sql_1 = 'SELECT id, firstname, lastname, birthday, location, occupation, gender, telephone, email, picture
FROM pinkmoon_users ORDER BY `id` DESC LIMIT 1';
$result_1 = $db->sql_query($sql_1) or die($db->sql_error());
Remove the LIMIT 1 in your SQL statement
$sql_1 = 'SELECT id, firstname, lastname, birthday, location, occupation, gender, telephone, email, picture
FROM pinkmoon_users ORDER BY `id` DESC ';
$result_1 = $db->sql_query($sql_1) or die($db->sql_error());
Your query retrieves only the last record from the database. If you want more, you should change the LIMIT 1 to (for example) LIMIT 10 or remove the limit contraint entirely.

Categories