|
$offline = $odb->query("SELECT COUNT(*) FROM bots WHERE (UNIX_TIMESTAMP()-time)>20")->fetch()[0];
$offliner $offline->fetchColumn();
|
|
|
|
|
I want to solve a PHP issue
I have a db with 2 tables: first one is "document":
id | title |
================================
1 | equations |
2 | great |
3 | painting |
second one is "pic":
id | doc_id | description
===============================================
1 | 1 | "mathematics"
2 | 1 | "physic"
3 | 2 | "litterature"
4 | 2 | "art"
the "doc_id" is a foreign key, related to the id of the table "document"
this is my question: I'm trying to print for each title, all the descriptions related to it, example:
for the title "equations" , the foreign key related to it, is "doc_id =1"
wich means for "equations" i will print "matematics" and "physic"
the final table printed using PHP and SQL, on my browser, should be:
| tiltle | description
===============================================
| equations | mathematics, physic
| great | litterature , art
| painting |
Here's my code:
<pre><?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "doc-pic";
$conn = mysqli_connect($servername, $username, $password, $dbname);
$sql = "SELECT * FROM pic LEFT JOIN document ON pic.doc_id=document.id";
$result = mysqli_query($conn, $sql);
$sql1 = "SELECT title from document";
$result1 = mysqli_query($conn, $sql1);
?>
<table>
<?php
if (mysqli_num_rows($result1) > 0)
while($row = mysqli_fetch_array($result1)){?>
<tr>
<td><?php echo $row["title"]; ?></td>
</tr>
<?php if (mysqli_num_rows($result) > 0 )
while($row = mysqli_fetch_array($result)){
?>
<tr>
<td><?php echo $row["doc_id"]; ?></td>
<td><?php echo $row["description"]; ?></td>
</td>
</tr>
</td>
<?php }
} ?>
thanks in advance
|
|
|
|
|
|
<pre>I have an issue while calculating the column-like bank statement. actually, I am trying to calculate Opening Balance/today In /today Out / Closing Bal in MySQL PHP. I have two tables. material_infor `IN +` entry and material_approvefor `OUT -`. I am considering my opening balance was `123`.
I am new in PHP and I am here using Union All function. Please help me to create the function for getting Opening / In today / out today/closing calculation in my code.
`table- material_in`
| id | components_key | insert_date | credit |
|------|----------------|-------------|-------------|
| 1 | 12345 | 2021-04-16 | 100 |
| 2 | 12345 | 2021-04-16 | 50 |
`table- material_approve`
| id | components_key | insert_date | debit |
|------|----------------|-------------|-------------|
| 1 | 12345 | 2021-04-16 | 30 |
| 2 | 12345 | 2021-04-16 | 2 |
<pre>I am trying the code -
SELECT
`u`.`component_key`,
`u`.`insert_date`,
`u`.`transaction_qty`
FROM
(
SELECT
`components_key` AS `component_key`,
`insert_date`,
`credit` AS `transaction_qty`
FROM
`material_in`
UNION ALL
SELECT
`components_key`,
`insert_date`,
`debit` AS `transaction_qty`
FROM
`material_approve`
) u
WHERE
`u`.`component_key` = '12345'
ORDER BY
`u`.`insert_date`
DESC
the output comes -
| components_key | insert_date | transaction_qty|
|-------------|-------------|------------|
| 12345 | 2021-04-16 | 100 |
| 12345 | 2021-04-16 | 50 |
| 12345 | 2021-04-16 | 30 |
| 12345 | 2021-04-16 | 2 |
`output will be-`
| components_key | insert_date | openbal| today_in | today_out | closebal
|-----------|-------------|-------------|----------|-----------|---------|
|12345 | 2021-04-16 | 123 | 100 | 30 | 193 |
|12345 | 2021-04-16 | 193 | 243 | 2 | 241 |
|
|
|
|
|
This is not a php issue. This is Mysql.
Where are you stuck?
|
|
|
|
|
I was using netbeans for php development before, now VSCode.
My question is why every time I run / load a page, VSCode opens a new blank window... even though VScode is already open... why!? It is true even when I am not debugging!
Even when I run the most basic code to debug,
<?php
phpinfo();
?>
it always opens a new VS Code Window (Untitled-1). Then, let say I press Reload, it again opens the same blank screen.
I am using "PHP Debug" as a extension, and my launch.json is:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9000
}
]
}
I do not want to open a new vs window each page I debug. How to fix that?
|
|
|
|
|
When you run a website from VS Code it opens the browser? Is that what you are asking about?
|
|
|
|
|
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\phs\check.php on line
|
|
|
|
|
Pasting your error message into Google gives 211,000 results where other people have asked exactly the same question:
mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given - Google Search[^]
Or you could check the documentation:
Returns false on failure. For successful queries which produce a result set, such as SELECT, SHOW, DESCRIBE or EXPLAIN, mysqli_query() will return a mysqli_result object. For other successful queries, mysqli_query() will return true.
So either your query is failing, or it doesn't return a result set.
We can't tell you which, since you haven't shown us any of your code.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
$marks2 = [
"student1" =>
[
"Physics" => 58,
"Chemistry" => 64,
"Biology" => 83
],
"student2" =>
[
"Physics"=> 68,
"Chemistry" => 84,
"Biology" => 82
],
"student3" =>
[
"Physics"=> 69,
"Chemistry" => 84,
"Biology" => 89
]];
|
|
|
|
|
What language is this supposed to be? And exactly what do you mean by "echo the numbers" ?
If it is PHP then see PHP: list - Manual[^].
|
|
|
|
|
I would to import csv products to mysql using below codes but i don't know what framework to use
the data is large more than 100000 products
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use PDO;
class ImportProducts extends Command
{
protected $signature = 'import:products';
protected $description = 'Imports products into database';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$contents = file_get_contents('products.csv');
$lines = explode("\n", $contents);
$i = 0;
foreach ($lines as $line) {
$fields = explode(';', $line);
$pdo = new PDO('mysql:dbname=coding_challenge;host=172.0.0.1;port=3306', 'root', 'secret');
$query = $pdo->prepare("SELECT COUNT(*) AS c from products WHERE id=?");
$result = $query->execute([$fields[0]]);
if($query->rowCount()) {
$pdo->query('DELETE FROM products WHERE id = "' . $fields[0] . '"');
print('Deleted existed product to be updated.');
}
$query = $pdo->prepare('INSERT INTO products (id, name, sku,status,variations, price, currency) VALUES (?, ?, ?, ? , ? , ?, ?)');
$result = $query->execute([$fields[0], ($fields[4] ?? ''), ($fields[5] ?? ''), ($fields[6] ?? ''), ($fields[9] ?? ''), ($fields[10] ?? '') ]);
$i++;
}
die('Updated ' . $i . ' products.');
}
}
<?php
namespace App\Console;
use App\Console\Commands\ImportProducts;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
ImportProducts::class,
];
protected function schedule(Schedule $schedule)
{
}
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
|
|
|
|
|
Please give me login page code in html,css,php,mysql
|
|
|
|
|
Sorry, this site does not provide code to order. Google is your friend, so that is a good place to start your research.
|
|
|
|
|
Hello.
First of all, i want to apologize for my question, since the code im about to post is way outdated.
I am hosting this script on a server which is running a very old version of php.
The website is used by me and 2 other friends, and we are the only ones able to connect to it, due to .htaccess only showing the page to recognized ip adresses.. So there is no need to protect against sql injection or anything.
Now that thats out of the way, here is the problem i am facing:
i have a php script, which is showing a dropdown menu, with values gathered from a mysql table called chat_clothes.
I then have a submit button, that is supposed to post whatever you have chosen in the dropdown menu, to another table called chat_brugere
But when i click the submit button, it posts "Resource id #7", instead of the selected value.
Here is my code:
<?php
@session_start();
header('Content-Type: text/html; charset=ISO-8859-1');
include('includes/config.php');
?>
<link rel="stylesheet" type="text/css" href="css/chat.css" />
<div id="sidebar_header">Garderobe</div>
<div id="sidebar_content">
<p style="display: inline;">Skid i havet.</p><br /><br />
<select name="sko">
<?php
if(isset($_SESSION['logget_ind']) && $_SESSION['logget_ind'] == true) {
$getSko = mysql_query("SELECT `navn` FROM `chat_clothes` WHERE `ejer` = '".$_SESSION['brugernavn']."' AND `type` = 'sko'");
while ($showSko = mysql_fetch_array($getSko)) {
echo '<option id="sko" name="sko" style="width: 300px;">'.$showSko['navn'].'</option><br />'
;
}
}
?>
</div>
</select>
<?php
if (isset($_POST['sko'])) {
mysql_query("UPDATE chat_brugere SET shoes='".$getSko."' WHERE id='".$_SESSION['id']."'");
echo 'sko er opdateret!';
} else {
echo '';
}
echo '
<form action="nygad.php" method="POST">
<div>
<table>
<tr>
<td><center><input type="submit" name="sko" value="Opdater!" /></center></td>
</tr>
</table>
</div>
</form>
';
?>
|
|
|
|
|
If the user can have any influence over the bruggernavn or id session variables, or the content of the navn column, then your queries will be vulnerable to SQL Injection[^]. NEVER use string concatenation to build a SQL query. ALWAYS use a parameterized query.
PHP: SQL Injection - Manual[^]
If they can influence the navn column, there's also a danger of a persisted cross-site scripting vulnerability, since you don't properly encode the output.
Cross Site Scripting (XSS) | OWASP[^]
Beyond that, you're setting the shoes column to the $getSko variable, which is the object returned by your mysql_query call. I suspect you wanted to set it to the $_POST['sko'] value instead.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
You are correct.
Should it be
mysql_query("UPDATE chat_brugere SET shoes='".$_POST['sko']."' WHERE id='".$_SESSION['id']."'");
instead of
mysql_query("UPDATE chat_brugere SET shoes='".$getSko."' WHERE id='".$_SESSION['id']."'");
?
Cause then it just posts the button value which is "Opdater!"
|
|
|
|
|
You'd need to move the <select> inside the <form> element, and use a different name for the button.
But don't ignore the SQL Injection[^] vulnerability. It's a critical security vulnerability, which is so simple to exploit that even a 3 year old can exploit it[^]. It can be used to extract private data from your database, which can lead to massive fines[^]. Or it can be used to alter data in your database without your knowledge, which could have disastrous results.
PHP: SQL Injection - Manual[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thank you so much for your help..
I'm not worried about sql injection, cause its only me and 2 other people who has access to the site, since its protected through .htaccess, and will remain that way.. there is no sensitive information on the server either way
I tried to move the select tag into the form, but now, the results from the database is shown outside the dropdown menu
I have changed the name of the button to something else, and now, nothing is posted to the database when i hit the submit button..
Would you be willing to edit the script and post it here, if its not too big of a deal? i feel like i would understand the errors better, if i could compare the 2 codes, and see where i messed up
|
|
|
|
|
Something like this should work:
<?php
@session_start();
header('Content-Type: text/html; charset=ISO-8859-1');
include('includes/config.php');
?>
<link rel="stylesheet" type="text/css" href="css/chat.css" />
<div id="sidebar_header">Garderobe</div>
<div id="sidebar_content">
<form action="nygad.php" method="POST">
<p style="display: inline;">Skid i havet.</p><br /><br />
<select name="sko">
<?php
if(isset($_SESSION['logget_ind']) && $_SESSION['logget_ind'] == true) {
$brugernavn = mysql_real_escape_string($_SESSION['brugernavn']);
$getSko = mysql_query("SELECT `navn` FROM `chat_clothes` WHERE `ejer` = '$brugernavn' AND `type` = 'sko'");
while ($showSko = mysql_fetch_array($getSko)) {
$navn = htmlentities($showSko['navn']);
echo "<option value=\"$navn\">$navn</option><br />";
}
}
?>
</select>
<?php
if (isset($_POST['sko'])) {
$shoes = mysql_real_escape_string($_POST['sko']);
$id = mysql_real_escape_string($_SESSION['id']);
mysql_query("UPDATE chat_brugere SET shoes='$shoes' WHERE id='$id'");
echo 'sko er opdateret!';
}
?>
<p style="text-align:center;">
<input type="submit" name="btn" value="Opdater!" />
</p>
</form>
</div> <!--
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I tried the new script, and now it looks like it wants to post the selected value, but the problem now, is that none of the values from chat_clothes are appearing in the dropdown menu.. its just blank (even though i'm logged in as before)
This is the script in the browser: [^]
And this is the table chat_clothes: chat-clothes — ImgBB[^]
|
|
|
|
|
Check the the session variable logget_ind is set, and the value is equal to true .
Also check that the session variable brugernavn is set, and matches one of the ejer values from your table.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
OH MY GOD!! IT WORKS NOW!!
I found the reason why it did not show the value in the dropdown menu..
The reason is that the value in the column in the table where it was searching for values, was "Røde Converse".. after i changed it to "Rode Converse", it now shows up.. So it was simply because the value contained a Ø (which is a letter in my language), and not anything wrong with the code you posted.
Anyways, the script is working perfect now, after you fixed it.. Thank you SO much for your help.. This has been very enlightning for me.. before posting my question here, i tried posting about my problem at stackoverflow, and they just inactivated my question, since the code is outdated..
Thanks man!
|
|
|
|
|
It is many years since I last used PHP, but shouldn't
echo "<option value=\"$navn\">$navn</option><br />";
be something like
echo "<option value=\"" . $navn . "\">" . $navn . "</option>";
to ensure that the value, rather than the variable name is concatenated. Plus the <br /> is not necessary as options are stacked anyway and the breaks will be saved for outside of the select rather than inside its options list.
|
|
|
|
|
PHP: Strings - Manual[^]
If the string uses double-quotes, variables referenced within the string will be expanded. So the two options will produce the same output.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|