Display page information echo print_r ($ results, true) in html - php

Can someone help me with a change to a php script that currently displays my information with echo print_r ($ results, true), I would like to make an html form that displays the information
enter image description here
I would like to make it look like this if possible
enter image description here
This is the full php page:
https://www.dropbox.com/s/ads312s19h8c0tc/license.php?dl=0

just replace your code
Line No : 296
echo '<textarea cols="100" rows="20">' . print_r($results, true) . '</textarea>';
new code is here
echo '<table border="1">';
foreach($result as $k=>$v){
echo '<tr><td>'. $k .'</td><td>'. $v .'</td></tr>';
}
echo "</table>";

Related

"sorry you are not allowed to access this page" when trying to pass variable in URL

I am new to plugin development and currently developing a custom CRUD plugin for a database.
I have created a admin page which shows all the database items in a table, and also i can add to this database. However when i try to pass a variable in the URL to edit a item from the database, i get the "sorry you are not allowed to access this page".
Currently it displays the database items in a table from a query then a for each loop, with a delete button in the row also.
<?php
foreach ($results as $results) {
echo '<tr>';
echo '<td>' .$results->id. '</td>';
echo '<td>' .$results->email. '</td>';
echo '<td><a class="button" href="' .home_url(). '/wp-admin/admin.php?page=member-management%2Fdelete_member.php?id=' .$results->id. '">Remove</a></td>';
echo '</tr>';
}
?>
The problem lies with the href here:
href="' .home_url(). '/wp-admin/admin.php?page=member-management%2Fdelete_member.php?id=' .$results->id. '"
if i replace it with :
href="' .home_url(). '/wp-admin/admin.php?page=member-management%2Fdelete_member.php'"
It works fine and goes to the page i want it to, does wordpress not allow variables passed in URL's?
Fix your variables, replacing the second $results for $result. It works the way it is, but makes your code more readable.
And more important, fix the URL, replacing the second ? with &
foreach ($results as $result) {
echo '<tr>';
echo '<td>' .$result->id. '</td>';
echo '<td>' .$result->email. '</td>';
echo '<td><a class="button" href="' .home_url(). '/wp-admin/admin.php?page=member-management%2Fdelete_member.php&id=' .$result->id. '">Remove</a></td>';
echo '</tr>';
}

Mailto: inside php and html table

I'm populating an html table with data from MySQL DB and I want to add a mailto function on the click of one of the columns. Problem is when I do it, the column is blank, but when I inspect it in the browser it shows up in the inspect panel.
My Code:
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>".$row['Property_ID']."</td>";
echo "<td>".$row['House_Number']."</td>";
echo "<td>".$row['Street_Address']."</td>";
echo "<td>".$row['Postal_Code']."</td>";
echo "<td>".$row['City']."</td>";
echo "<td>"."<a href='mailto:".$row['Submitted_By']."'></a>"."</td>";
echo "<td>".$row['Date_Submitted']."</td>";
echo "</tr>";
What the browser shows:
On inspection:
You <a> tag is empty, that's why you don't see your link.
You have to add your text inside <a> and </a>:
echo "<td>"
. "<a href='mailto:".$row['Submitted_By']."'>".$row['Submitted_By']."</a>"
. "</td>";
echo "<td>"."<a href='mailto:".$row['Submitted_By']."'>".$row['Submitted_By']."</a>"."</td>";
this line should be exactly like this.

xPath, complicated foreach loop

I am using xPath to get a table , the table's first column has a link to another page, I want that link to link on the name column (first column). Any help would be appreciated.
Here is what I have:
echo '<table>';
foreach($xpath->query('//*[#id="CRConcernedPersonel1_DataGridCRPersonel"]/tr') as $row) {
echo '<tr>';
foreach($xpath->query('td[position() > 0]', $row) as $col) {
echo '<td>'.trim($col->textContent).'</td>';
foreach($xpath->query('a/#href', $col) as $link)
echo '<a href="'.trim($link->textContent).'"</a>'.'Link text'."\n";
}
echo '</tr>';
}
echo '</table>';
Here is the output:
http://pastebin.com/5PjCae74
Thanks!
It should work when you change
echo '<a href="'.trim($link->textContent).'"</a>'.'Link text'."\n";
to
echo 'Link text'."\n";
Currently your output reads e.g. like
<a href="CRDetails.aspx?PID=84539&Disp=1&inq=1"</a>Link text
therefore the link's not working. Changing the line as suggested should result in
Link text

while loop inside a while loop? Separating data from PHP

while($row = mysql_fetch_array($result))
//Template for each card in search result
{
echo '<div class="sleeve">';
echo '<div class="card ', $row['name'], '">';
echo '<div class="front face">';
echo '<img src="/', $row['cardset'], '/', $row['name'], $row['altart'], '.jpg"', ' alt="', $row['name'], '" />';
echo '</div>';
echo '<div class="back face">';
echo '<a id="name">', $row['name'], '</a><br/>';
echo '<form name="info" action="">';
echo '<select name="set">';
//while???
echo '<option value="Zendikar">', $row['sets'],'</option>';
echo '</select>';
echo 'Foil:<input type="checkbox" name="foil" value="true"/><br/>';
echo '<select name="condition">';
echo '<option value="Near Mint">Mint</option>';
echo '<option value="Played">Played</option>';
echo '<option value="Damaged">Damaged</option>';
echo '</select>';
echo 'Trade:<input type="checkbox" name="trade" value="true"/ <br/>';
echo '</form>';
echo '<b>Rulings:</b> <br/>';
echo $row['rulings'];
echo '</div>';
echo '</div>';
echo '</div>';
}
//while??? It might be hard to see in that mess of echoes, but there's a section that I have no idea how to deal with. PHP is grabbing rows of info, and populating them nicely. It fills the screen with little boxes of info.
In this section, that I don't know how to deal with, the data in one of the rows contains multiple things (thing1, thing2, thing3) separated by a (, ) each time. I need each of those things in a new thing1
So I feel like there would be another while loop inside each card?
You're on the right track with a loop. Try something like this, which explodes the string into an array, based on the comma delimiter, with explode():
echo '<select name="set">';
foreach( explode( ',', $row['sets']) as $item)
echo '<option>', $item, '</option>';
echo '</select>';
You probably need a foreach statement there after exploding the String into an array:
instead of the //while line and the following one:
foreach (explode(',', $row['sets']) as $value)
echo '<option value="', $value, '">', $value,'</option>';
I guess you may actually have another value for each row (one to be displayed, the other one is the actual value you want to set), but then the String would look much more like "(key1=value1, key2=value2)" and then you need a little more work, but you get the idea.
Hope this helps.
Yes, you would need to first explode that row into an array
$list_of_things = explode(",", $row['whatever']);
and then use a while, or a foreach:
$thing_options = '';
foreach($list_of_things as $thing)
$thing_options .= "<option>$thing</option>";
You might also find the here document syntax useful:
print <<<TEMPLATE
<div class="sleeve">
<div class="card {$row['name']}">
<div class="front face">
<img src="/{$row['cardset']}/{$row['name']}{$row['altart']}.jpg"
alt="{$row['name']}" />
</div>
<div class="back face">
<a id="name">{$row['name']}</a>
<br/>
<form name="info" action="">
<select name="set">
{$thing_options}
<option value="Zendikar">{$row['sets']}</option>
</select>
...
TEMPLATE;
While all of the answers telling you to explode() the array are correct, I can't help but think that having a db column filled with comma separated values are a symptom that your database is not normalized. You should check out the following link for an introduction to db normalization: http://mikehillyer.com/articles/an-introduction-to-database-normalization/
I'd also recommend not echoing out HTML. Ideally, your PHP scripts should follow this pattern:
All PHP processing up front, including database queries and form handling. Results should be stored in variables.
|
|
|
V
Almost pure HTML template/view, with just enough display logic (if/else, loops, echo) to actually display the results you stored in the variables from step 1.
You'll find that debugging/editing is a lot simpler if you let PHP be the brains and HTML be the beauty. Just like how markup and styles should be separate, the same goes for scripting and display.
You can use PHP's explode-method to split the comma separated string into its values, and then handle that array in a foreach loop:
$raw = "one,two,three";
$values = explode("," $raw);
foreach($values as $value) {
echo $value;
}

Having trouble with echoing HTML in php script

I am trying to make a form that show users name and I am having a little trouble with this part. The ' ' and " " marks dont quite work how they are supposed to. Im trying to echo the options in drop down menu and some how the $wholenames and the last " sign appear in the wrong part of the page. Could someone please tell me what is the correct way of doing this?
Thanks
echo' "<option>'; echo $wholenames; echo'</option>"';
Actually I had looked it wrong it is a little bit more complex. Below you can see the code. The whole dropdown menu does not appear. The wholenames integer appears, but the menu does not...
echo'
<label for="addusertogroup">Add user to an existing group:</label>
<select name="addusertogroup" id="addusertogroup">
'; if(mysql_num_rows($userresult))
{
while($row2 = mysql_fetch_assoc($userresult))
{
$wholename = array("$row2[f_name] $row2[s_name]");
foreach ($wholename as $wholenames) {
echo "<option>$wholenames</option>";
}
}
}
else {
echo "<option>No Names Present</option>";
}
To make it work, simply do this:
echo "<option>";
echo $wholenames;
echo "<option>";
or this:
echo "<option>$wholenames</option>";
or this:
echo '<option>'.$wholenames.'</option>';
All will work, just up to you which one you pick.
You shouldn't have " before <option> and after </option>
It should be something like
echo "<option>". echo $wholenames; echo "</option>";
Also, if $wholenames is an array, you'd better iterate over it:
foreach ($wholenames as $name){
echo "<option>". echo $name; echo "</option>";
}
Any text for options in a HTML SELECT box are written inside the tag. If you don't put your text between the <option> tags the browser will try to insert it to the select box's DOM.
So you could change your code to this:
echo '<option value="myvalue">"' . $wholenames . '"</option>';
Haven't actually tested this code.
Update if the Quotation mark was not meant to be in the output you would simply need to write:
echo '<option value="myvalue">' . $wholenames . '</option>';
In php you can use both " " and ' ' with strings.

Categories