PHP remove first element of array and shift all others up 1 - php

I have the following code:
$recent = apc_fetch('recn');
$recent[9] = $recent[8];
$recent[8] = $recent[7];
$recent[7] = $recent[6];
$recent[6] = $recent[5];
$recent[5] = $recent[4];
$recent[4] = $recent[3];
$recent[3] = $recent[2];
$recent[2] = $recent[1];
$recent[1] = $recent[0];
$rec = array_pop($recent);
$recent[0] = $name;
apc_store('recn', $recent);
Each time the page is reloaded, I wanted $name to be 1st, and than move whatever is 2nd down the list, and so on. I echo the array like so:
echo "Most Recent Songs: <br>";
echo "1. " . $name. "<br>";
echo "2. " . $recent[1] . "<br>";
echo "3. " . $recent[2] . "<br>";
echo "4. " . $recent[3] . "<br>";
echo "5. " . $recent[4] . "<br>";
echo "6. " . $recent[5] . "<br>";
echo "7. " . $recent[6] . "<br>";
echo "8. " . $recent[7] . "<br>";
echo "9. " . $recent[8] . "<br>";
echo "10. " . $recent[9] . "<br>";
But only the first entry shows up.

Found it! Thanks to #giaour for the array_unshift suggestion, and #Chelsea for helping me understand array_pop Heres my new (working) code:
$recent = apc_fetch('recn');
array_unshift($recent, $name);
$rec = array_pop($recent);
apc_store('recn', $recent);

Related

How to replace a 'value' on mysqli_fetch_array when printing out search results?

Sorry for the confusing title. I am as confused.
SO what I am trying to do is print results from the MySQL database I've got. I have a checkbox value as "yes" in my DB and I would like to replace this to some other word while printing out the results.
I've tried different ways but all of them break the page, because I'm new to this and have no idea what I am doing.
Here is my code so far (only put what I think is relevant):
$keyword= "";
if (isset($_POST["keyword"])) {
$keyword = ($_POST["keyword"]);
}
$results = mysqli_query($con, "SELECT * FROM pcdata WHERE name LIKE '$keyword' LIMIT 0, 25");
if (!$results) {
echo "Not found...";
} else {
echo "Found...<br>";
}
while ($row = mysqli_fetch_array($results)) {
echo "<br>";
echo "Name: " . $row['name'] . "<br>";
echo "Model: " . $row['model'] . "<br>";
echo "Operating system: " . $row['model'] . "<br>";
echo "Type of computer: " . $row['pctype'] . "<br>";
echo "Other information: " . $row['info'] . "<br>";
echo "Need help ASAP: " . $row['help'] . "<br>";
}
Why don't you try a simple if inside your while:
$myvariable='';
if($row['help']='yes'){
$myvariable='put_something_here';
}
And in your echo just do:
echo "Need help ASAP: " . $myvariable . "<br>";
Or a ternary solution:
$row['help'] == 'yes' ? 'put_something_here' : 'what_do_you_want_to_print_if_it_is_not_yes'
Try this code:
$keyword= "";
if (isset($_POST["keyword"]))
$keyword=($_POST["keyword"]);
$results=mysqli_query($con,"
SELECT *
FROM pcdata
WHERE name LIKE '$keyword' LIMIT 0,25");
if (!$results) {
echo "Not found...";
}
else {
echo "Found...<br>";
}
while ($row = mysqli_fetch_array($results))
{
echo "<br>";
echo "Name: " . $row['name'] . "<br>";
echo "Model: " . $row['model'] . "<br>";
echo "Operating system: " . $row['model'] . "<br>";
echo "Type of computer: " . $row['pctype'] . "<br>";
echo "Other information: " . $row['info'] . "<br>";
echo "Need help ASAP: ";
if ($row['help'] === 'yes'){
echo 'YES';
} else {
echo 'NO';
}
echo '<br>';
}
We check the value of $row['help'] and if it "yes" printing 'YES', if other - printing 'NO'
you can also use select statement combined with Case statement which will result as desired try following code
$keyword= "";
if (isset($_POST["keyword"]))
{
$keyword = ($_POST["keyword"]);
}
//used different variable to build query
$selectquery="SELECT id,name,model,pctype,info CASE WHEN help='yes' THEN 'Your Yes String' WHEN help='no' THEN 'Your No String' else 'nothing' END as help FROM pcdata where name like '$keyword'" ;
//passed $selectquery to mysqli_qery
$results = mysqli_query($con, $selectquery);
if (!$results) {
echo "Not found...";
} else {
echo "Found...<br>";
}
while ($row = mysqli_fetch_array($results)) {
echo "<br>";
echo "Name: " . $row['name'] . "<br>";
echo "Model: " . $row['model'] . "<br>";
echo "Operating system: " . $row['model'] . "<br>";
echo "Type of computer: " . $row['pctype'] . "<br>";
echo "Other information: " . $row['info'] . "<br>";
echo "Need help ASAP: " . $row['help'] . "<br>";
}

How to list all value in array one by one for many items from json URL

<?php
$id = '2422414574';
$json = file_get_contents("http://xxxxxx.com/api.php?token=xxxx&id=xxxx");
$data = json_decode($json);
echo $data->phim[0]->filmName . "<br/>";
echo $data->phim[0]->epsList[0]->name . " - ";
echo $data->phim[0]->epsList[0]->id . "<br/>";
echo $data->phim[0]->epsList[1]->name . " - ";
echo $data->phim[0]->epsList[1]->id . "<br/>";
echo $data->phim[0]->epsList[2]->name . " - ";
echo $data->phim[0]->epsList[2]->id . "<br/>";
echo $data->phim[0]->epsList[3]->name . " - ";
echo $data->phim[0]->epsList[3]->id . "<br/>";
echo $data->phim[0]->epsList[4]->name . " - ";
echo $data->phim[0]->epsList[4]->id . "<br/>";
echo $data->phim[0]->epsList[5]->name . " - ";
echo $data->phim[0]->epsList[5]->id . "<br/>";
echo $data->phim[0]->epsList[6]->name . " - ";
echo $data->phim[0]->epsList[6]->id . "<br/>";
echo $data->phim[0]->epsList[7]->name . " - ";
echo $data->phim[0]->epsList[7]->id . "<br/>";
echo $data->phim[0]->epsList[xxxx]->name . " - ";
echo $data->phim[0]->epsList[xxxx]->id . "<br/>";
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
As you can see, I have to repeat 1 code in many time. Is there any short way to do this without repeat code?
For example, I want to get all values from id and name from this URL, which have 24 items. That means I have to repeat code in 24 times :(
what about foreach()?
foreach($data->phim as $phim)
{
echo $phim->filmName . "<br/>";
foreach($phim->epsList as $epsList)
{
echo $epsList->name . " - ";
echo $epsList->id . "<br/>";
}
}
You need to iterate over it using a foreach loop. This is one of the basic functions of PHP and there are many tutorials for it.

HTML & PHP Information Table

So i'm hosting servers and trying to make a table displaying the information server name players etc i have a script that displays this but i suck at css, What i'm trying to get is a little like in this website http://echelon.kthx.at/pubbans.php
<?php
include ("BC2Conn.php");
// opens a connection to gameserver
$BC2Conn = new BC2Conn("31.185.143.136", 48888);
if (!$BC2Conn->isConnected()) {
echo "Connection could not be established. " .
"To debug, set '-d' as 3rd parameter to new connection.<br />" .
"<br />" .
"Example: \$BC2Conn = new BC2Conn(\"127.0.0.1\", 48888, \"-d\");";
return 0; // stop executing this script
}
// secure login
// $BC2Conn->loginSecure("password");
// unsecure login (not salted)
// some random serverinformation
echo "Servername: " . $BC2Conn->getServerName() . "<br />";
echo "Players: " . $BC2Conn->getCurrentPlayers() . "/" . $BC2Conn->getMaxPlayers() . "<br />";
echo "Playmode: " . $BC2Conn->getCurrentPlaymodeName() . "<br />";
echo "Current Map: " . $BC2Conn->getCurrentMapName() . "<br /><br /><br /><u>Players:</u><br /><br />";
// playerlist
$playerNames = $BC2Conn->getPlayerlistNames();
foreach ($playerNames as $key => $content) {
if ($BC2Conn->getPlayerClantag($content) != "") {
echo "[" . $BC2Conn->getPlayerClantag($content) . "]";
}
echo " " . $BC2Conn->getPlayername($content) . " - Kills: ";
echo $BC2Conn->getPlayerKills($content) . " | Deaths: ";
echo $BC2Conn->getPlayerDeaths($content) . " | Score: ";
echo $BC2Conn->getPlayerScore($content) . "<br />";
}
// logout
$BC2Conn->logout();
?>

Why does my echo not work given no results found?

I am performing a routine to check if books exist in a database given a range. I want to echo if no books are found. I have the following:
$search = mysqli_query($con,$query);
while(list($book_id, $title, $authors, $description, $price) = mysqli_fetch_row($search)){
if(!empty($book_id)) {
echo "Book ID: " . $book_id . "<br/>";
echo "Book Title: " . $title . "<br/>";
echo "Authors: " . $authors . "<br/>";
echo "Description: " . $description . "<br/>";
echo "Price: " . $price . "<br/>";
echo "<br/>";
}
if(empty($book_id)){
echo "Fail";
}
}
If no books are found nothing is printed. The echo does not work? How come?
Thanks
Because if no records are returned, you won't enter in the while at all, as $book_is will contain the value false and while(false)... you know
In this situation you may use mysqli_num_rows to check if there are rows found
Your no results echo is inside the while loop which will never get called
while (list($book_id, $title, $authors, $description, $price) = mysqli_fetch_row($search)) {
if (!empty($book_id)) {
echo "Book ID: " . $book_id . "<br/>";
echo "Book Title: " . $title . "<br/>";
echo "Authors: " . $authors . "<br/>";
echo "Description: " . $description . "<br/>";
echo "Price: " . $price . "<br/>";
echo "<br/>";
}
}
if (empty($book_id)) {
echo "Fail";
}
Move it outside like the code above
It is because your while loop has not been accessed at all. Try to echo something out of the if conditions, and see if it get's displayed.

Echo image from folder together with database information

I'm doing a tutorial where you save an uploaded image to a folder on your computer while saving information about who uploaded it, title of image and time of upload, to a database.
When someone enter the page with the uploaded image, a small text with information that is stored in the database, will appear right above the image(thumb sized). When you click on the thumbnail fancybox will kick in and you will get the original size of the image.
Though, my problem is that the image itself gets echoed each time someone uploads an image.
So if three people upload you get a total of 9 thumbnails. If 4 people upload it will be 16 images etc. They do not copy itself in the folder. Check screenshot please.
http://s122.photobucket.com/user/KcMello/media/Ska3080rmavbild2014-02-14kl110753_zpsc19caae9.png.html
What I need help with is, that if someone could check through the code below and tell me what im doing wrong. I think it's glob but im not sure.
Thanks!
yours sincerely,
Winterwind
<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);
while($row = mysqli_fetch_array($result)){
$information = ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date'];
echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
foreach(glob("bilder/thumb_*.jpg") as $filename){
$original = substr($filename, 13);
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='$filename' alt='$information' /></a>" . "<br>";
}
}
?>
Update of code:
<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);
while($row = mysqli_fetch_array($result)){
$information = ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date'];
echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
error_reporting(0);
$original = substr($filename, 13);
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filname'] . "' alt='$information' /></a>" . "<br>";
}
?>
The finished code:
<?php
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$selectall = "SELECT * FROM store";
$result = mysqli_query($dbcon, $selectall);
while($row = mysqli_fetch_array($result)){
$information = ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date'];
echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
error_reporting(0);
$original = $row['filname'];
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filname'] . "' alt='$information' /></a>" . "<br>";
}
?>
Many thanks to Jojo for helping me out!:)
Your Problem is that you are showing all images in folder "bilder" where the name starts with "thumb_" without checking if the image actually belongs to the row from your database table. Assuming that your naming pattern for the thumbnails is like this:
bilder/thumb_ . $row['filename'] . '.jpg
You could update your code to something like this (untested):
while($row = mysqli_fetch_array($result)){
$information = ' Titel: ' . $row['titel'] . ' Uppladdare: ' . $row['uppladdare'] . ' Filnamn: ' . $row['filname'] . ' Datum: ' . $row['date'];
echo "<strong>Titel: </strong>" . $row['titel'] . "<br>";
echo "<strong>Uppladdare: </strong>" . $row['uppladdare'] . "<br>";
echo "<strong>Filnamn/bild: </strong>" . $row['filname'] . "<br>";
echo "<strong>Datum: </strong>" . $row['date'] . "<br>";
echo "<br>";
echo "<a class='fancybox' rel='massoravbilder' href='bilder/$original'> <img src='bilder/thumb_" . $row['filename'] . "' alt='$information' /></a>" . "<br>";
}
A better idea IMO is to store the thumbnail-path in your database as well and use it to render your thumbnail-link.

Categories