PHP - Run the same php function multiple times on the same file - php
I'm currently creating a database / table list sort of system, where it will display the current likes/dislikes of a user. The likes/dislikes of a user is fetched, and managed by a function from a seperate file, called displayRating(). I use require_once to call the seperate file that it is located in, at the beginning of my list, then get down to business.
I then go ahead and have my
foreach(...){
...
displayRating($id);
...
}
However I'm getting an error, which seems to be telling me that I can't call a function multiple times within the same page. Here is my exact (unoptimized) code:
vote.php
<?php
function displayRating($id){
if(isset($id)){
require_once('medoo.min.php');
// Start up the D.B. Connection
$database = new medoo([
// required
'database_type' => 'mysql',
'database_name' => '****',
'server' => 'localhost',
'username' => '****',
'password' => '****',
'charset' => 'utf8',
// driver_option for connection, read more from http://www.php.net/manual/en/pdo.setattribute.php
'option' => [
PDO::ATTR_CASE => PDO::CASE_NATURAL
]]);
// xf_user_field_value DB. Amount of ratings: 506c617965725f7261746573 Current Score: 706c617965725f726174696e67
$accountinfo = $database->select('xf_user_field_value', ['field_value'], ["user_id"=>$id]);
$vScore = $accountinfo[5]['field_value'];
// Processing Time
$phrase = '<div class="bc"><div data-hint="%1$s" class="hint--right vote %2$s"></div></div>';
if($vScore == 0){
printf($phrase, 'Neutral Score', 'v_equal');
return;
} elseif ($vScore > 0){
// Positive Here
switch($vScore){
case 1:
printf($phrase, '1 Like', 'v_p1 hint--success');
break;
case 2:
printf($phrase, '2 Likes', 'v_p2 hint--success');
break;
case 3:
printf($phrase, '3 Likes', 'v_p3 hint--success');
break;
case 4:
printf($phrase, '4 Likes', 'v_p4 hint--success');
break;
case 5:
printf($phrase, '5 Likes', 'v_p5 hint--success');
break;
case 6:
printf($phrase, '6 Likes', 'v_p6 hint--success');
break;
case 7:
printf($phrase, '7 Likes', 'v_p7 hint--success');
break;
default:
printf($phrase, $vScore . ' Likes', 'v_p7 hint-success');
break;
}
} elseif ($vScore < 0){
// Negative Here
switch($vScore){
case -1:
printf($phrase, '1 Dislike', 'v_m1 hint--error');
break;
default:
if($vScore < -7){ $vClass = 7; } else { $vClass = abs($vScore); }
printf($phrase, abs($vScore) . ' Dislikes', 'v_m' . $vClass . ' hint--error');
}
}
} else {
return;
}
}
?>
displayCodes.php
<?php
function displayCodesMain($page){
if($page == 1){?>
<table class="friendcodes">
<tr>
<th>Username</th>
<th>Friend Code</th>
<th>Affinity</th>
<th>Level</th>
<th>Rating</th>
</tr>
<?php
$plisting = file_get_contents('plist.txt');
$plist = explode(' ', $plisting, 4);
require_once('vote.php');
array_pop($plist);
foreach($plist as $item) {
$item = explode(':', $item);
echo '<tr class="fc_premium">';
$item[3] = substr($item[3], 0, 3) . '-' . substr($item[3], 3, 7);
$item[1] = str_replace('&', ' ', $item[1]);
echo '<td>' . $item[1] . '</td><td>' . $item[3] . '</td><td style="text-transform:capitalize;">' . $item[4] . '</td><td>' . $item[5] . '</td><td> <div class="bc"><div class="vote v_p7"> </div></div> </td>';
echo '</tr>';
}
$listing = file_get_contents('list.txt');
$list = explode(' ', $listing, 26);
array_pop($list);
foreach($list as $item) {
$item = explode(':', $item);
echo '<tr class="fc_regular">';
$item[3] = substr($item[3], 0, 3) . '-' . substr($item[3], 3, 7);
$item[1] = str_replace('&', ' ', $item[1]);
echo '<td>' . $item[1] . '</td><td>' . $item[3] . '</td><td style="text-transform:capitalize;">' . $item[4] . '</td><td>' . $item[5] . '</td><td>'. displayRating($item[0]) .'</td>';
echo '</tr>';
}
echo '</table>';
} else if($page == 2) {
// Start page #2 management
?>
<table class="friendcodes">
<tr>
<th>Username</th>
<th>Friend Code</th>
<th>Affinity</th>
<th>Level</th>
</tr>
<?php
$listing = file_get_contents('list.txt');
$list = explode(' ', $listing, 51);
$list = array_slice($list, 25, 25);
array_pop($list);
foreach($list as $item) {
$item = explode(':', $item);
echo '<tr class="fc_regular">';
$item[3] = substr($item[3], 0, 3) . '-' . substr($item[3], 3, 7);
$item[1] = str_replace('&', ' ', $item[1]);
echo '<td>' . $item[1] . '</td><td>' . $item[3] . '</td><td style="text-transform:capitalize;">' . $item[4] . '</td><td>' . $item[5] . '</td>';
echo '</tr>';
}
?>
</table>
<?php
}
} // Close the function
?>
Test.php (What I'm using to dynamically get values and whatnot - warning, contains some CSS, which you can safely skip over.
<?php
/*include('newUser.php');
addNewUser('1', 'true', 'Spitfire', '8JX-UKR8', 'Spirit', '90');*/
require('displayCodes.php');
displayCodesMain(1);
?>
<head>
<style>
/*! Hint.css - v1.3.2 - 2014-05-18
* http://kushagragour.in/lab/hint/
* Copyright (c) 2014 Kushagra Gour; Licensed MIT */
.hint,[data-hint]{position:relative;display:inline-block}.hint:before,.hint:after,[data-hint]:before,[data-hint]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.hint:hover:before,.hint:hover:after,.hint:focus:before,.hint:focus:after,[data-hint]:hover:before,[data-hint]:hover:after,[data-hint]:focus:before,[data-hint]:focus:after{visibility:visible;opacity:1}.hint:hover:before,.hint:hover:after,[data-hint]:hover:before,[data-hint]:hover:after{-webkit-transition-delay:100ms;-moz-transition-delay:100ms;transition-delay:100ms}.hint:before,[data-hint]:before{content:'';position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.hint:after,[data-hint]:after{content:attr(data-hint);background:#383838;color:#fff;text-shadow:0 -1px 0 #000;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;box-shadow:4px 4px 8px rgba(0,0,0,.3)}.hint--top:before{border-top-color:#383838}.hint--bottom:before{border-bottom-color:#383838}.hint--left:before{border-left-color:#383838}.hint--right:before{border-right-color:#383838}.hint--top:before{margin-bottom:-12px}.hint--top:after{margin-left:-18px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:hover:after,.hint--top:hover:before,.hint--top:focus:after,.hint--top:focus:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--bottom:before{margin-top:-12px}.hint--bottom:after{margin-left:-18px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:hover:after,.hint--bottom:hover:before,.hint--bottom:focus:after,.hint--bottom:focus:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--right:before{margin-left:-12px;margin-bottom:-6px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{left:100%;bottom:50%}.hint--right:hover:after,.hint--right:hover:before,.hint--right:focus:after,.hint--right:focus:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translateX(8px)}.hint--left:before{margin-right:-12px;margin-bottom:-6px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{right:100%;bottom:50%}.hint--left:hover:after,.hint--left:hover:before,.hint--left:focus:after,.hint--left:focus:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translateX(-8px)}.hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0 #592726}.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0 #6c5328}.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0 #193b4d}.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{background-color:#458746;text-shadow:0 -1px 0 #1a321a}.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:after,.hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--always.hint--bottom:after,.hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--always.hint--left:after,.hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translateX(-8px)}.hint--always.hint--right:after,.hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translateX(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(0.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(0.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(0.71,1.7,.77,1.24)}
.vote { background: url('vote.png') no-repeat top left; width: 20px; height: 20px; }
.vote.v_m7 { background-position: 0px 0px; }
.vote.v_p7 { background-position: 0px -30px; }
.vote.v_p6 { background-position: 0px -60px; }
.vote.v_m6 { background-position: 0px -90px; }
.vote.v_m5 { background-position: 0px -120px; }
.vote.v_p5 { background-position: 0px -150px; }
.vote.v_p4 { background-position: 0px -180px; }
.vote.v_m4 { background-position: 0px -210px; }
.vote.v_m3 { background-position: 0px -240px; }
.vote.v_p3 { background-position: 0px -270px; }
.vote.v_p2 { background-position: 0px -300px; }
.vote.v_m2 { background-position: 0px -330px; }
.vote.v_m1 { background-position: 0px -360px; }
.vote.v_p1 { background-position: 0px -390px; }
.vote.v_equal { background-position: 0px -420px; }
.bc {
display: inline-block;
width: 20px;
height: 20px;
padding: 1px;
border-radius: 12px;
border: 1px solid #888;
}
.friendcodes {
border-spacing: 0;
}
.friendcodes tr > td {
padding: 5px 25px;
}
.fc_premium {
background: #ffdf8e;
border-spacing: 0;
}
.fc_regular {
border-spacing: 0;
}
</style>
</head>
<body>
<h3>
Use form below for Adding IDs
</h3>
<form action="http://shortcutcentral.org/projects/friendcodes/receiveQuery.php" method="post">
<input type='text' value="481" name="id" /><br>
<input type="submit" />
</form>
<h3>
Current Testing Stuff
</h3>
<p>
<?php
require('vote.php');
displayRating(481);
?>
</p>
</body>
Here's the exact error for those of you who are keen on it - I've obfuscated some of the stuff here as well, since I am working from a live install:
Fatal error: Cannot redeclare displayRating() (previously declared in /home/**/public_html/**/vote.php:2) in /home/**/public_html/**/vote.php on line 68
Both displayCodes.php and test.php are requiring vote.php, and the later is not doing a require_once. Switch test.php to require_once('vote.php');
It seems that this is ocurring because in your test.php code you are including vote.php with
require('vote.php');
and also you are requiring 'displayCodes.php' in test.php
The problem here is that you also call 'displayCodes.php' inside vote.php so the function is being declared two times. Try commenting this line in test.php
require('displayCodes.php');
so that way you are just including the function once.
Hope this helps
Try to remove the require_once('medoo.min.php'); in displayRating() method. You're caling displayRating() to a loop so it probably iclude medoo.min.php many times.
Related
How do I align a list of links/picture on the right side of the page, and stop them from overlapping?
I want to generate a list of links to other pages for my website (using a mix of PHP/HTML/CSS) and align them on the right side of the page without them overlapping. I am able to generate the links/pictures, but the problem I am having is they overlap on top of each other when I try to use position absolute. <style> body{ background: lightblue; margin: 25px; } .title{ font-size: 20px; } .recipe{ width: 60%; } .related{ position: absolute; float: right; right: 10px; width: 25%; list-style-position: inside; } .a{ float: right; right: 5px; } .relatedImages{ }img{ width: 15%; height: 17%; } </style> <title><?php $recipeInfo['title']; ?></title> <body> <br> <?php //Title and image of recipe echo '<br><br><div class="title">' .$recipeInfo['title']. '</div><br> <div class="mainImage"><image src="' . $recipeInfo['image']. '"> </div> <br><h2> Ingredients </h2>'; //Unfinished (Needs to be styled correctly) //Generating related links with clickable images for($r = 0; $r < $relatedLinks[$r]; $r++){ echo '<div class = "related"> <a href = "recipeInfo.php?id='.$relatedLinks[$r]['id']. '">'.$relatedLinks[$r]['title'].'<br> <image src = "https://spoonacular.com/recipeImages/' . $relatedLinks[$r]['image'] . '"></a> <br> </div>'; }; ; //Loop that generates a list of the ingredients used for($i = 0; $i < $recipeInfo['extendedIngredients'][$i]; $i++){ $amount = $recipeInfo['extendedIngredients'][$i]['amount']; $unit = $recipeInfo['extendedIngredients'][$i]['unit']; $ingrName = $recipeInfo['extendedIngredients'][$i]['name']; echo '<div class = "ingredients">' . $amount , " " , $unit , " " , $ingrName .' </div>'; } //Instructions with error handling for no instructions found $instructions = $recipeInfo['instructions']; if($instructions == ""){ $instructions = "Whoops, there are no available instructions for this recipe."; } echo '<br><h2> Insructions </h2> <div class="recipe">' . $instructions . '</div><br>'; //Unfinished, but will hopefully print a better list of instructions than just a dense paragraph //for($j = 0; $j < sizeOf($recipeInstr); $j++){ // echo '<h3>' .$recipeInstr[$j]['name'].'</h3>'; // for($n = 0; $n < $recipeInstr[$j]['steps']; $n++){ // echo '<div class="instruction">'. $n , " " , $recipeInstr[$j]['steps'][$n]['step'] . '<div>'; // } //} ?> </body> </html> The intended effect I am going for is one similar to how youtube has related videos on the right side of the page.
Well cou could try this code: <body> <br> <div class="maincontent"> <div class="main"> <?php //Title and image of recipe echo '<br><br><div class="title">' .$recipeInfo['title']. '</div><br> <div class="mainImage"><image src="' . $recipeInfo['image']. '"> </div> <br><h2> Ingredients </h2>'; //Loop that generates a list of the ingredients used for($i = 0; $i < $recipeInfo['extendedIngredients'][$i]; $i++){ $amount = $recipeInfo['extendedIngredients'][$i]['amount']; $unit = $recipeInfo['extendedIngredients'][$i]['unit']; $ingrName = $recipeInfo['extendedIngredients'][$i]['name']; echo '<div class = "ingredients">' . $amount , " " , $unit , " " , $ingrName .' </div>'; } //Instructions with error handling for no instructions found $instructions = $recipeInfo['instructions']; if($instructions == ""){ $instructions = "Whoops, there are no available instructions for this recipe."; } echo '<br><h2> Insructions </h2> <div class="recipe">' . $instructions . '</div><br>'; //Unfinished, but will hopefully print a better list of instructions than just a dense paragraph //for($j = 0; $j < sizeOf($recipeInstr); $j++){ // echo '<h3>' .$recipeInstr[$j]['name'].'</h3>'; // for($n = 0; $n < $recipeInstr[$j]['steps']; $n++){ // echo '<div class="instruction">'. $n , " " , $recipeInstr[$j]['steps'][$n]['step'] . '<div>'; // } //} ?> </div> <div class="sidelinks"> <?php //Unfinished (Needs to be styled correctly) //Generating related links with clickable images for($r = 0; $r < $relatedLinks[$r]; $r++){ echo '<div class = "related"> <a href = "recipeInfo.php?id='.$relatedLinks[$r]['id']. '">'.$relatedLinks[$r]['title'].'<br> <image src = "https://spoonacular.com/recipeImages/' . $relatedLinks[$r]['image'] . '"></a> <br> </div>'; }; ; </div> </div> </body> </html> and css code: <style> .maincontent { display: grid; grid-template-columns: 70% 30%; } body{ background: lightblue; margin: 25px; } .title{ font-size: 20px; } .recipe{ width: 60%; } .related{ list-style-position: inside; } .a{ float: right; right: 5px; } .relatedImages{ }img{ width: 15%; height: 17%; } </style> this should work, i couldnt test it
yii2 multiple select with image
I used Yii2 multiple selection dropdown with image , it is working fine at create but not showing me selected values on update... Form: <?php $allProducts = Product::find()->where('active = 1')->all(); $prArr = array(); if ($allProducts) { foreach ($allProducts as $allProduct) { echo '<option value="' . $allProduct->id . '" style="color: #000; height: 50px; padding-left: 70px;padding-top: 15px;background-image: url(\'' . $allProduct->getThumb() . '\');background-repeat: no-repeat;background-size: 65px auto;">' . $allProduct->title . '</option>'; } } ?> Controller: $oldRels = ProductRelated::find()->where('main_product_id = :main_product_id', ['main_product_id' => $model->id])->all(); if ($oldRels) { foreach ($oldRels as $oldRel) { $oldRel->delete(); } } if (isset($_POST['relProducts']) and ! empty($_POST['relProducts'])) { foreach ($_POST['relProducts'] as $relProduct_id) { $relProduct = new ProductRelated; $relProduct->main_product_id = $model->id; $relProduct->rel_product_id = $relProduct_id; $relProduct->save(false); } } How I can show multi selected values in dropdown with images when I update my recored?
you can try this: <select id="relProductSelect" name="relProducts[]" multiple> <?php $allProducts = Product::find()->where('active = 1')->all(); $arrRelatedProducts = ArrayHelper::map(ProductRelated::find()->where('main_product_id = :main_product_id', ['main_product_id' => $model->id])->all(), 'rel_product_id', 'rel_product_id'); if($allProducts){ foreach($allProducts as $allProduct){ if(in_array($allProduct->id, $arrRelatedProducts)){ echo '<option value="'.$allProduct->id.'" selected style="color: #000; height: 50px; padding-left: 70px;padding-top: 15px;background-image: url(\''.$allProduct->getThumb().'\');background-repeat: no-repeat;background-size: 65px auto;">'.$allProduct->title.'</option>'; }else{ echo '<option value="'.$allProduct->id.'" style="color: #000; height: 50px; padding-left: 70px;padding-top: 15px;background-image: url(\''.$allProduct->getThumb().'\');background-repeat: no-repeat;background-size: 65px auto;">'.$allProduct->title.'</option>'; } } } ?> </select>
The first result of search term did not come out
Why always do the first result of my search term will not come out? I noticed that it will only appear when I navigate to the page number 0. How can I solve this? I hope that when I navigate to page number 1, the first result will come out too! PHP Code: <?php //php code goes here include 'connect.php'; // for database connection include 'script_suggestion.php'; include 'script_close_suggestion_box.php'; $query = $_GET['q']; // query $button = $_GET ['submit']; if (isset($_GET['page'])) { $page_number = (int)$_GET['page']; $page_number = mysqli_real_escape_string($page_number); } else { $page_number = 1; } $results_per_page = 10; ?> HTML Code: <html> <head> <title> Brandon's Search Engine </title> <style type="text/css"> #title a { font-size: 17pt; margin: 5px; padding: 2px; border-color: black; text-decoration: underline; width: 544px; } #search-result { display: block; border: 1px solid grey; border-color: grey; } #search-result:hover { background-color: #dddddd; width: 544px; } #link { font-size: 17pt; margin: 5px; padding: 2px; width: 544px; } #description { font-size: 17pt; margin: 5px; padding: 2px; width: 544px; } #search-page-number { display: block; width: auto; height: auto; border: 1px solid gray; margin: 2px; padding-left: 5px; padding-right: 5px; padding-bottom: 2px; padding-top: 2px; list-style: none; float: left; text-align: center; } #search-page-number:hover { background-color: #dddddd; } #suggestion { border: 1px solid black; visibility: hidden; position: absolute; background-color: white; z-index: 10; } #suggestion a { font-size: 12pt; color: black; text-decoration: none; display: block; width: 548px; height: auto; text-align: left; padding: 2px; } #suggestion a:hover { background-color: #dddddd; width: 544px; padding: 2px; } </style> </head> <body> <form method="GET" action="search.php"> <table> <tr> <td> <h2> Brandon's Search Engine </h2> </td> </tr> <tr> <td> <input type="text" value="<?php echo htmlspecialchars($_GET['q']); ?>" name="q" style="height: 27px; width: 550px; padding: 2px" name="q" onkeyup="getSuggestion(this.value)" autocomplete="off" onblur="closeBox()" placeholder="Search Now"/> <input type="submit" value="Search" style="height: auto; width: 60px; padding: 2px" /> <div id="suggestion" style="width: 548px"> </div> </td> </tr> </table> <br> <hr> <table> <tr> <td> <?php //count $count_sql = "SELECT count(*) as c FROM searchengine WHERE title LIKE '%" . mysqli_real_escape_string($con,$query) . "%' OR keywords LIKE '%" . mysqli_real_escape_string($con,$query) . "%' OR link LIKE '%" . mysqli_real_escape_string($con,$query) . "%' "; $search_count = mysqli_fetch_array(mysqli_query($con,$count_sql)); $number_of_result = $search_count['c']; //SQL query $page_number = (int)$_GET['page']; $stmt = "SELECT * FROM searchengine WHERE title LIKE '%" . mysqli_real_escape_string($con,$query) . "%' OR keywords LIKE '%" . mysqli_real_escape_string($con,$query) . "%' OR link LIKE '%" . mysqli_real_escape_string($con,$query) . "%' LIMIT " . $page_number . " , $results_per_page"; $result = mysqli_query($con,$stmt) or die(mysqli_error($con)); //$number_of_result = mysqli_num_rows($result); if ($number_of_result < 1) { echo "<b>No results found!</b>"; echo "<p>"; echo "Your search - <b>$query</b>" . " - did not match any documents. Please try different keywords."; } elseif ($number_of_result > 1) { echo "<b>$number_of_result results found!</b>"; echo "<p>"; //results found here and display them while (($row = \mysqli_fetch_array($result))) {//10 results per page $title = $row["title"]; $description = $row["description"]; $link = $row["link"]; echo "<div id='search-result'>"; echo "<div id='title'><a href='$link'>" . $title . "</a></div>"; //echo "<br />"; echo "<div id='link'><small>" . $link . "</small></div>"; //echo "<p>"; echo "<div id='description'><small>" . $description . "</small></div>"; echo "</div>"; echo "<br />"; } } elseif ($number_of_result == 1) { echo "<b>$number_of_result result found!</b>"; echo "<p>"; //results found here and display them while (($row = \mysqli_fetch_array($result))) {//10 results per page $title = $row["title"]; $description = $row["description"]; $link = $row["link"]; echo "<div id='search-result'>"; echo "<div id='title'><a href='$link'>" . $title . "</a></div>"; //echo "<br />"; echo "<div id='link'><small>" . $link . "</small></div>"; echo "<br />"; echo "<div id='description'><small>" . $description . "</small></div>"; echo "</div>"; echo "<br />"; } } ?> </td> </tr> <tr> <td> <input type="hidden" name="page" value="<?php echo 1; ?>" /> <div id="page-number"> <?php $max_page_number = ceil($number_of_result / $results_per_page); if ($number_of_result == 0) { echo " "; } elseif ($number_of_result != 0) { echo "You are on page $page_number of $max_page_number."; } //ie if 35 results are therer then we require 4 pages that are 0 to max_page_number //current page number is equal to page_number //echo $max_page_number; echo "<ul>"; //both the condition are not the neccesary if ($max_page_number >= 1) { // if more than 2 pages if ($page_number != 1) { //First echo "<li id='search-page-number'>"; echo "<a href=search.php?q=$query&page=1>First</a>"; echo "</li>"; } if ($page_number != 1) { //Previous echo "<li id='search-page-number'>"; $prev = $page_number - 1; echo "Previous"; echo "</li>"; } for($index = 1 ; $index <= $max_page_number ; $index++) { echo "<li id='search-page-number'>"; echo "<a href=search.php?q=$query&page=".($index).">"; echo ($index) . "</a>"; echo "</li>"; } if ($page_number != $max_page_number) { //Next echo "<li id='search-page-number'>"; $next = $page_number + 1; echo "Next"; echo "</li>"; } if ($page_number != $max_page_number) { //Last echo "<li id='search-page-number'>"; echo "Last"; echo "</li>"; } } elseif (($max_page_number == 1 ) ) { echo "<li id='search-page-number'>"; echo "<a href=search.php?q=$query&page=1>1</a>"; echo "</li>"; } echo "</ul>"; ?> </div> </td> </tr> <tr> <td align="center"> To insert your site in result fill in the form at here. </td> </tr> </table> </form> </body> </html>
Your query ends with: "LIMIT " . $page_number . ", $results_per_page" But that's not how the LIMIT clause works in SQL. It's defined to be: LIMIT offset, row_count offset is a row number, starting from 0. So if you do: LIMIT 1, 10 You'll get records 2 through 11, not 1 through 10. The correct way to do it is: "LIMIT " . ($page_number-1)*$results_per_page . ", $results_per_page" Something else you should find useful is the SQL_CALC_FOUND_ROWS option to the SELECT statement. This tells MySQL to calculate how many total rows matched the criteria, even though you used LIMIT to return just a subset. This way you don't have to do two queries, one with COUNT(*) and another to get a page of data. After doing a query with this option, you can use SELECT FOUND_ROWS() to get the full count. $safequery = mysqli_real_escape_string($con,$query); $stmt = "SELECT SQL_CALC_FOUND_ROWS * FROM searchengine WHERE title LIKE '%" . $safequery . "%' OR keywords LIKE '%" . $safequery . "%' OR link LIKE '%" . $safequery . "%' LIMIT " . ($page_number-1)*results_per_page . " , $results_per_page"; $result = mysqli_query($con,$stmt) or die(mysqli_error($con)); $count_sql = "SELECT FOUND_ROWS() AS c"; $search_count = mysqli_fetch_array(mysqli_query($con,$count_sql)); $number_of_result = $search_count['c'];
How do I pass variable from a form to javascript popup form?
I have a form with a button which opens a javascript/css popup window. On the popup window I have a textarea which will be used to add a comment to a database field. The problem is that I need to pass it a value from the main page (the one that calls the popup) which will identify which entry in the database to update. But I am stuck trying to get it to work. Here is my code. I need to have the variable sent to the update.php page. Please help. <?php ini_set('display_errors',1); error_reporting(E_ALL); if(isset($_GET['sort']) && isset($_GET['col']) ){ $order = $_GET['sort']; $column = $_GET['col']; } else{ $order = 'ASC'; $column = 'cron_id'; } $page = 'Testing Site'; require_once('includes/head.php'); require_once('includes/mysql.php'); require_once('includes/class.tdcron.php'); require_once('includes/class.tdcron.entry.php'); date_default_timezone_set('America/Los_Angeles'); $result = mysql_query("SELECT * FROM cron WHERE active=1 ORDER BY $column $order") or die (mysql_error()); mysql_close(); $pass = "<img src='images/Checked.png' alt='Pass' width='16' height='16'/>"; $fail = "<img src='images/Stop.png' alt='Failed' width='16' height='16'/>"; $warn = "<img src='images/Warning.png' alt='Warning' width='16' height='16' />"; $com = "<img src='images/pencil.png' alt='Warning' width='16' height='16' />"; echo "<div id='tableContainer' class='tableContainer'>"; echo "<table width='100%' border='0' padding='0' cellpadding='0' cellspacing='0' class='scrollTable'>"; echo "<thead class='fixedHeader'>"; echo "<tr>"; if ($order=="ASC") { echo "<th>Status</th>"; } else { echo "<th>Status</th>"; } echo '<th>Schedule</th>'; if ($order=="ASC") { echo "<th>Job</th>"; } else { echo "<th>Job</th>"; } echo '<th>Description</th>'; if ($order=="ASC") { echo "<th>Destination</th>"; } else { echo "<th>Destination</th>"; } echo '<th>Errors</th>'; if ($order=="ASC") { echo "<th>Job Type</th>"; } else { echo "<th>Job Type</th>"; } if ($order=="ASC") { echo "<th>Category</th>"; } else { echo "<th>Category</th>"; } if ($order=="ASC") { echo "<th>Last Ran</th>"; } else { echo "<th>Last Ran</th>"; } echo '<th>Next Run</th>'; echo '<th>Log</th>'; echo '</tr></thead><tbody class="scrollContent">'; while($row = mysql_fetch_array($result)){ if($row['ok'] == 1){$status = $pass;} elseif($row['ok'] == 0){$status = $fail;} else{$status = $warn;} echo '<tr>'; echo '<td> **<form name="frm_comment" action="" onsubmit="return false;" >' . $status . ' ' . '<input type="image" src="images/pencil.png" onclick="popup_show(\'popup\', \'popup_drag\', \'popup_exit\', \'mouse\', -10, -5);" width=\'16\' height=\'16\' /> </form>** </td>'; echo '<td>' . $row['schedule'] . '</td>'; echo '<td>' . $row['job'] . '</td>'; echo '<td>' . $row['description'] . '</td>'; echo '<td>' . $row['destination'] . '</td>'; echo '<td>' . $row['errormsgs'] . '</td>'; echo '<td>' . $row['jobtype'] . '</td>'; echo '<td>' . $row['catagory'] . '</td>'; echo '<td>' . date('D M d # g:i A', $row['ran_at']) . '</td>'; echo '<td>' . date('D M d # g:i A', tdCron::getNextOccurrence($row['mhdmd'])) . '</td>'; echo "<td><a href='log/" . $row['log'] . "' target='_blank' >View Log</a></td>"; echo '</tr>'; } echo '</tbody>'; echo "</table>"; echo "</div>"; // ***** Popup Window **************************************************** echo'<div class="sample_popup" id="popup" style="display: none;"> <div class="menu_form_header" id="popup_drag"> <img class="menu_form_exit" id="popup_exit" src="images/form_exit.png" alt="Close Form" /> Comments </div> <div class="menu_form_body"> <form name="up" action="update.php" onsubmit="return validateForm()" method="post" > <input type="hidden" name="' . $row['job'] . '" /> <table> <tr> <td><textarea class="field" onfucus="select();" name="comment" rows="8" cols="44"></textarea> </tr> <tr> <td align="right" ><br /><input class="btn" type="submit" name="submit" value="Submit" /></td> </tr> </table> </form> </div> </div>'; require_once('includes/footer.php'); ?> Javascript code start // Copyright (C) 2005-2008 Ilya S. Lyubinskiy. All rights reserved. // Technical support: http://www.php-development.ru/ // // YOU MAY NOT // (1) Remove or modify this copyright notice. // (2) Re-distribute this code or any part of it. // Instead, you may link to the homepage of this code: // http://www.php-development.ru/javascripts/popup-window.php // // YOU MAY // (1) Use this code on your website. // (2) Use this code as part of another product. // // NO WARRANTY // This code is provided "as is" without warranty of any kind. // You expressly acknowledge and agree that use of this code is at your own risk. // USAGE // // function popup_show(id, drag_id, exit_id, position, x, y, position_id) // // id - id of a popup window; // drag_id - id of an element within popup window intended for dragging it // exit_id - id of an element within popup window intended for hiding it // position - positioning type: // "element", "element-right", "element-bottom", "mouse", // "screen-top-left", "screen-center", "screen-bottom-right" // x, y - offset // position_id - id of an element relative to which popup window will be positioned // ***** Variables ************************************************************* var popup_dragging = false; var popup_target; var popup_mouseX; var popup_mouseY; var popup_mouseposX; var popup_mouseposY; var popup_oldfunction; // ***** popup_mousedown ******************************************************* function popup_mousedown(e) { var ie = navigator.appName == "Microsoft Internet Explorer"; popup_mouseposX = ie ? window.event.clientX : e.clientX; popup_mouseposY = ie ? window.event.clientY : e.clientY; } // ***** popup_mousedown_window ************************************************ function popup_mousedown_window(e) { var ie = navigator.appName == "Microsoft Internet Explorer"; if ( ie && window.event.button != 1) return; if (!ie && e.button != 0) return; popup_dragging = true; popup_target = this['target']; popup_mouseX = ie ? window.event.clientX : e.clientX; popup_mouseY = ie ? window.event.clientY : e.clientY; if (ie) popup_oldfunction = document.onselectstart; else popup_oldfunction = document.onmousedown; if (ie) document.onselectstart = new Function("return false;"); else document.onmousedown = new Function("return false;"); } // ***** popup_mousemove ******************************************************* function popup_mousemove(e) { var ie = navigator.appName == "Microsoft Internet Explorer"; var element = document.getElementById(popup_target); var mouseX = ie ? window.event.clientX : e.clientX; var mouseY = ie ? window.event.clientY : e.clientY; if (!popup_dragging) return; element.style.left = (element.offsetLeft+mouseX-popup_mouseX)+'px'; element.style.top = (element.offsetTop +mouseY-popup_mouseY)+'px'; popup_mouseX = ie ? window.event.clientX : e.clientX; popup_mouseY = ie ? window.event.clientY : e.clientY; } // ***** popup_mouseup ********************************************************* function popup_mouseup(e) { var ie = navigator.appName == "Microsoft Internet Explorer"; var element = document.getElementById(popup_target); if (!popup_dragging) return; popup_dragging = false; if (ie) document.onselectstart = popup_oldfunction; else document.onmousedown = popup_oldfunction; } // ***** popup_exit ************************************************************ function popup_exit(e) { var ie = navigator.appName == "Microsoft Internet Explorer"; var element = document.getElementById(popup_target); popup_mouseup(e); element.style.display = 'none'; } // ***** popup_show ************************************************************ function popup_show(id, drag_id, exit_id, position, x, y, position_id) { var element = document.getElementById(id); var drag_element = document.getElementById(drag_id); var exit_element = document.getElementById(exit_id); var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth; var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight; element.style.position = "absolute"; element.style.display = "block"; if (position == "element" || position == "element-right" || position == "element-bottom") { var position_element = document.getElementById(position_id); for (var p = position_element; p; p = p.offsetParent) if (p.style.position != 'absolute') { x += p.offsetLeft; y += p.offsetTop; } if (position == "element-right" ) x += position_element.clientWidth; if (position == "element-bottom") y += position_element.clientHeight; element.style.left = x+'px'; element.style.top = y+'px'; } if (position == "mouse") { element.style.left = (document.documentElement.scrollLeft+popup_mouseposX+x)+'px'; element.style.top = (document.documentElement.scrollTop +popup_mouseposY+y)+'px'; } if (position == "screen-top-left") { element.style.left = (document.documentElement.scrollLeft+x)+'px'; element.style.top = (document.documentElement.scrollTop +y)+'px'; } if (position == "screen-center") { element.style.left = (document.documentElement.scrollLeft+(width -element.clientWidth )/2+x)+'px'; element.style.top = (document.documentElement.scrollTop +(height-element.clientHeight)/2+y)+'px'; } if (position == "screen-bottom-right") { element.style.left = (document.documentElement.scrollLeft+(width -element.clientWidth ) +x)+'px'; element.style.top = (document.documentElement.scrollTop +(height-element.clientHeight) +y)+'px'; } drag_element['target'] = id; drag_element.onmousedown = popup_mousedown_window; exit_element.onclick = popup_exit; } // ***** Attach Events ********************************************************* if (navigator.appName == "Microsoft Internet Explorer") document.attachEvent ('onmousedown', popup_mousedown); else document.addEventListener('mousedown', popup_mousedown, false); if (navigator.appName == "Microsoft Internet Explorer") document.attachEvent ('onmousemove', popup_mousemove); else document.addEventListener('mousemove', popup_mousemove, false); if (navigator.appName == "Microsoft Internet Explorer") document.attachEvent ('onmouseup', popup_mouseup); else document.addEventListener('mouseup', popup_mouseup, false); END Javascript CODE CSS Code Start div.sample_popup { z-index: 1; } div.sample_popup div.menu_form_header { border: 1px solid black; border-bottom: none; width: 400px; height: 20px; line-height: 19px; vertical-align: middle; background: url('../images/form_header.png') no-repeat; text-decoration: none; font-family: Times New Roman, Serif; font-weight: 900; font-size: 13px; color: #FFFFFF; /*#206040;*/ cursor: default; } div.sample_popup div.menu_form_body { width: 400px; height: 200px; border: 1px solid black; background: url('../images/form.png') no-repeat left bottom; } div.sample_popup img.menu_form_exit { float: right; margin: 4px 5px 0px 0px; cursor: pointer; } div.sample_popup table { width: 100%; border-collapse: collapse; } div.sample_popup th { width: 1%; padding: 0px 5px 1px 0px; text-align: left; font-family: Times New Roman, Serif; font-weight: 900; font-size: 13px; color: #004060; } div.sample_popup td { width: 99%; padding: 0px 0px 1px 0px; } div.sample_popup form { margin: 0px; padding: 8px 10px 10px 10px; } div.sample_popup input.field { width: 95%; border: 1px solid #808080; font-family: Verdana, Sans-Serif; font-size: 12px; } div.sample_popup input.btn { margin-top: 2px; border: 1px solid #808080; background-color: #DDFFDD; font-family: Verdana, Sans-Serif; font-size: 11px; } CSS CODE END
You're using a JS/CSS popup, so just pass $row['job'] in your call to popup_show() (assuming you are able to modify or overload that JS function), and then populate it in the hidden field of your popup HTML with Javascript. The way you're doing it now, you'd have to duplicate the block of Popup HTML once for each row in your resultset for it to work.
float left every other item echo php
im trying to float left every other UL tag, and i know i should flaot left every item and every other item clear:left, from what i've read, but the thing is i dont know how many UL or LI would appear because im echoing from a data base. this is the CSS: .clientes_provincia li{ font-family:Verdana, Geneva, Tahoma, sans-serif; font-size:10px; font-weight:bold; text-decoration:none; list-style-type:none; text-align:left; margin-top:0px; margin-left:10px; } .clientes_comuna li{ font-family:Verdana, Geneva, Tahoma, sans-serif; font-weight:bold; font-size:10px; font-weight:bold; text-decoration:none; list-style-type:none; list-style-position:inside; } .clientes_giro li{ font-family:Verdana, Geneva, Tahoma, sans-serif; font-size:10px; font-weight:normal; text-decoration:none; list-style-type:disc; } .clientes_nombre li{ font-family:Verdana, Geneva, Tahoma, sans-serif; font-size:10px; font-weight:normal; text-decoration:none; list-style-type:circle; margin-left:20px; } and this is the php code, where i echo the list: <?php $nombreProvincia = ""; $nombreComuna = ""; $nombreGiro = ""; $nombreNombre = array(); while ($row = mysql_fetch_assoc($resultAraucania)) { if ($nombreProvincia == $row['nombreProvincia']) { if ($nombreComuna == $row['nombreComuna']) { if ($nombreGiro == $row['nombreGiro']) { $nombreNombre[] = $row['nombreNombre']; } else { //nombreGiro echo '<li>' . implode('</li><li> ', $nombreNombre).'</li></ul></li></ul>'; $nombreGiro = $row['nombreGiro']; echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul class="clientes_nombre">'; $nombreNombre = array($row['nombreNombre']); } } else { // nombreComuna echo '<li>' . implode('</li><li> ', $nombreNombre).'</li></ul></li></ul></li></ul>'; $nombreComuna = $row['nombreComuna']; echo '<ul class="clientes_comuna"><li>'.$nombreComuna; $nombreGiro = $row['nombreGiro']; echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul class="clientes_nombre">'; $nombreNombre = array($row['nombreNombre']); } } else { // nombreProvincia if (!empty($nombreNombre)) { echo '<li>' . implode('</li><li> ', $nombreNombre).'</li></ul></li></ul></li></ul></li></ul>'; } $nombreProvincia = $row['nombreProvincia']; // this is the UL i'd like float for every other one. echo '<ul class="clientes_provincia"><li>'.$nombreProvincia; $nombreComuna = $row['nombreComuna']; echo '<ul class="clientes_comuna"><li>'.$nombreComuna; $nombreGiro = $row['nombreGiro']; echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul class="clientes_nombre">'; $nombreNombre = array($row['nombreNombre']); } } echo '<li>' . implode('</li><li> ', $nombreNombre).'</li></ul></li></ul></li></ul></li></ul>'; ?> So what I'd like to do is float every other UL tag of the 'Provincia' echo. Thanks for the help! at this moment with what i have i get a list like this: Provincia1 Comuna1 Giro1 Nombre1 Nombre2 Provincia2 Comuna2 Giro2 Nombre3 Nombre4 I want the provincia 2 be on the right side of provincia 1, and if I have another list provincia 3 i want it to be under pronvincia 1, and a prinvia 4 beside provincia 3 and so on.., thats what i mean with floating every other UL provincia, hope that helps as an example.
$i = 0; while ($row = mysql_fetch_assoc($resultAraucania)) { $class = $i++ % 2 ? 'odd' : 'even'; ... echo '<li class="' . $class . '">'; ... } This allows you to easily distinguish between even and odd columns and float "every other" column left.
If you don't care about IE too much, you can use .clientes_provincia:nth-of-type(odd) { float: left }
I think that your markup and looping is making this problem harder than it should be. I actually think it could just be 1 loop. The trick here is to use a width on a container <div> and each <ul> which automatically forces the browser to float two <ul>s and then drop to the next row for the following <ul>. If you can't use this static width idea then you have 2 very good other solutions already. Here is a small example which I have tested at http://writecodeonline.com/php/ $dataRow = array(); $dataRow[0] = array('nombreProvincia' => 'A123', 'nombreComuna' => 'A456', 'nombreGiro' => 'A789', 'nombreNombre' => array(101, 102)); $dataRow[1] = array('nombreProvincia' => 'B123', 'nombreComuna' => 'B456', 'nombreGiro' => 'B789', 'nombreNombre' => array(201, 202)); $dataRow[2] = array('nombreProvincia' => 'C123', 'nombreComuna' => 'C456', 'nombreGiro' => 'C789', 'nombreNombre' => array(301, 302)); echo '<div style="width:600px">'; foreach ($dataRow as $key => $row) { $nombreProvincia = $row['nombreProvincia']; $nombreComuna = $row['nombreComuna']; $nombreGiro = $row['nombreGiro']; $nombreNombre = '<li>'.implode('</li><li>', $row['nombreNombre']).'</li>'; echo $provincia = <<<HTML <ul class="clientes_provincia" style="width:200px;float:left;"> <li>$nombreProvincia <ul class="clientes_giro"> <li>$nombreGiro <ul class="clientes_nombre"> $nombreNombre </ul> </li> </ul> </li> </ul> HTML; } echo '<br style="clear:both"></div>'; Also, heredoc is awesome if you use PHP >= 4.