I have here my php code and txt file. I want to display 6 lines in .txt file randomly at the output of php. How can i do it. I try my code but it only display the first 6 lines.
Thanks!
Php:
require_once "config.php";
$txt_file = file_get_contents($database);
$rows = explode("\n", $txt_file);
array_shift($rows);
$i = 0;
foreach($rows as $row => $data)
{
$row_data = explode('&id=', $data);
$info[$row]['name'] = $row_data[0];
$info[$row]['id'] = $row_data[1];
$name = $info[$row]['name'];
$id = $info[$row]['id'];
echo $name."<BR>";
echo $id."<BR><BR>";
if (++$i == "6") break;
}
Txt file:
ABC&id=1
DEF&id=2
GHI&id=3
<?
// read file content into array
// http://fi2.php.net/file
$txt_file = file($database);
// pick six elements randomly
// http://fi2.php.net/array_rand
foreach( array_rand($txt_file, count($txt_file)>6 ? 6 : count($txt_file)) as $row => $data)
{
$row_data = explode('&id=', $data);
$info[$row]['name'] = $row_data[0];
$info[$row]['id'] = $row_data[1];
$name = $info[$row]['name'];
$id = $info[$row]['id'];
echo $name."<BR>";
echo $id."<BR><BR>";
}
?>
Related
I am using PHP for export CSV file this is working, but i export 2000 or greater rows how to create automatic next CSV file.
How to Move other file on after 2000 rows?
<?php
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename = records.csv');
echo $header = "Name";
echo "\r\n";
$sql = mysql_query(“Select * from table”);
while ($getData = mysql_fetch_assoc($sql)) {
echo '"'.$name.'"';
echo "\r\n";
}
exit;
?>
You can use array_chunk function to keep the records of 2000 and export them in csv.
For example
$rowData = [
[1,2,3],
[11,21,31],
[21,22,32],
[31,42,73],
[111,222,333]
];
foreach(array_chunk($rowData, 2) as $key => $records){
$file_name = 'export_data_'.$key.'.csv';
writeToCsv($file_name,$records);
}
//funtion to export data to csv
function writeToCsv($fileName, $rowData){
$fp = fopen($fileName, 'w');
foreach ($rowData as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
}
In your case use array_chunk($rowData, 2000)
<?php
$rowLimit = 2000;
$fileIndex = 0;
$i = 1;
$handle = null;
$fileList = array();
$timestampFolder = strtotime("now").'/';
mkdir($timestampFolder);
$sql = mysql_query("Select * from table");
while ($getData = mysql_fetch_assoc($sql)) {
if( ($i%$rowLimit) == 1) {
$fileIndex+=1;
if(!is_null($handle)) {
fclose($handle);
}
$fileName = "records".$fileIndex.".csv";
$handle = fopen($timestampFolder.$fileName, "a");
$fileList[] = $fileName;
}
fputcsv($handle, $getData);
$i++;
}
foreach($fileList as $file) {
echo ''.$file.'<br>';
}
I need to access an .xlsb file that does the same function as this code that accesses a .csv file:
<?php
$file1 = __DIR__ . '/download/Trabalhos.csv';
$csv1 = file($file1);
foreach ($csv1 as $row1 => $line1) {
$row1++;
$column1 = str_getcsv($line1, ';');
if ($row1 == 2) {
$column1[6]."<br>";
$valor1 = $column1[6];
}
}
$file2 = __DIR__ . '/download/produtividade do trabalho.csv';
$csv2 = file($file2);
foreach ($csv2 as $row2 => $line2) {
$row2++;
$column2 = str_getcsv($line2, ';');
if ($row2 == 3) {
$column2[9]."<br>";
$valor2 = $column2[9];
}
}
$file3 = __DIR__ . '/download/inatividade do trabalho.csv';
$csv3 = file($file3);
foreach ($csv3 as $row3 => $line3) {
$row3++;
$column3 = str_getcsv($line3, ';');
if ($row3 == 2) {
$column3[0]."<br>";
$valor3 = $column3[0];
}
}
$total = $valor1 * $valor2 * $valor3;
?>
Access the .xlsb file, scroll through the columns and rows, and display the row value on the screen.
Example: "Line 2, Column G(In this case, G = 6)
"A = 0
B = 1
C = 2)"
...
I want it to show me the value of row 2 that is in column G(6).
As in the first if ...
if ($row1 == 2) {
$column1[6]."<br>";
$valor1 = $column1[6];
}
You can use the PHP Excel library from EasyXLS.
$xls = new COM("EasyXLS.ExcelDocument");
$rows = $xls->easy_ReadXLSBActiveSheet_AsList("Trabalhos.xlsb");
for ($row1=0; $row1<$rows->size(); $row1++)
{
$rowLine = $rows->elementAt($row1);
if ($row1 == 2) {
$column1[6]."<br>";
$valor1 = $row->elementAt(6);
}
}
You can find some more code samples about importing data from xlsb file.
For your purpose you can use PHPOffice/PHPExcel
I'm want string out of the column data.
But it failed.
<?php
$conn = mysql_connect("localhost", "nantawat", "12345678") or die(mysql_error());
$select_db = mysql_select_db("my_db", $conn) or die(mysql_error());
$select_tbl = mysql_query("SELECT * FROM log", $conn);
while ($fetch = mysql_fetch_object($select_tbl)) {
$r = $fetch->data;
$i = explode(",", $r);
if (!isset($i[1])) {
for ($j = 0; $j <= 200; $j++) {
$i[$j] = null;
}
}
$name = $i[0];
$mama = $i[1];
$no = $i[2];
$a = $i[3];
$b = $i[4];
echo $name . "</br>";
echo $mama . $no . $a . $b . "</br>";
}
while ($data = mysql_fetch_object($select_tbl)) {
echo $data->data . "<br>";
}
?>
But i want output =
bus
car
bike
aabus
car
bike
aabus
car
bike
aabus
ddd
ee
And i not
Notice: Undefined offset: 3 in C:\xampp\htdocs\logs\New folder
(2)\explode.php on line 21
Notice: Undefined offset: 4 in C:\xampp\htdocs\logs\New folder
(2)\explode.php on line 22
Thank You.
You should just do what you want to do.
You want to connect to database then do it:
$conn = mysql_connect("localhost", "nantawat", "12345678") or die(mysql_error());
I suggest you to use mysqli library instead of mysql (mysql is deprecated in new php versions and totally removed in php7)
$conn = mysqli_connect("localhost", "nantawat", "12345678", "my_db") or die(mysql_error());
You want to query on log table, then do it:
$select_tbl = mysqli_query($conn, "SELECT * FROM log");
You want to fetch info from your result, then do it:
while ($row = mysqli_fetch_array($select_tbl)) {
echo $row['id_user'];
echo $row['id_doc'];
echo $row['date'];
echo $row['data'];
}
You want to explode data, then do it:
while ($row = mysqli_fetch_array($select_tbl)) {
echo $row['id_user'];
echo $row['id_doc'];
echo $row['date'];
$data = explode(',', $row['data']);
foreach ($data as $d) {
if ($d !== '') { // because before first comma or after last can be empty
echo $d . PHP_EOL;
}
}
}
If you want to save database result in variables:
If you are getting only one row of database, you can save them in variables directly:
$id_user = '';
$id_doc = '';
$date = '';
$data = array();
id ($row = mysqli_fetch_array($select_tbl)) {
$id_user = $row['id_user'];
$id_doc = $row['id_doc'];
$date = $row['date'];
$tempData = explode(',', $row['data']);
foreach ($tempData as $d) {
if ($d !== '') {
$data[] = $d;
}
}
}
And if you have multiple rows of database you need to save them all in a total array:
$array = array();
id ($row = mysqli_fetch_array($select_tbl)) {
$id_user = $row['id_user'];
$id_doc = $row['id_doc'];
$date = $row['date'];
$data = array();
$tempData = explode(',', $row['data']);
foreach ($tempData as $d) {
if ($d !== '') {
$data[] = $d;
}
}
$array[] = array(
'id_user' => $id_user,
'id_doc' => $id_doc,
'date' => $date,
'data' => data,
);
}
And finally use this to see what structure your final array has:
echo '<pre>';
pront_r($array);
echo '</pre>';
First off it is not wise to store comma seperated values in a single cell and you are using deprecated mysql_ functions. I think your solution can be found in using a foreach instead of the isset part:
while ($fetch = mysql_fetch_object($select_tbl)) {
$r = $fetch->data;
$i = explode(",", $r);
foreach ($i as $q){
echo $q . '<br/>';
}
}
If you still want to access your variables $name, $mama, $no and $ab, you can use isset for those specifically.
while ($fetch = mysql_fetch_object($select_tbl)) {
$r = $fetch->data;
$i = explode(",", $r);
if (isset($i[0])){
$name = $i[0];
echo $name . '<br>'; //only echo if it exists
}
if (isset($i[1])){
$mama= $i[1];
echo $mama. '<br>'; //only echo if it exists
}
//try it yourself for $no and $ab
}
Try:
while ($row = mysqli_fetch_array($select_tbl)) {
extract($row);
/* Using extract method can get the array key value as variable
Below variables are available
$id_user;
$id_doc;
$date;
$data; */
}
Hi this is a portion of my code which when ever output, the array $data2[0] seems to always output weird characters. It doesn't happens in $data2[1] or $data[2]..??? I been trying to figure this out for 2 days.
<?php
$filename = "../file/attendance_log/1414001189.txt";
$contents = file_get_contents($filename);
$contents = str_replace("\"","",$contents);
$lines = explode("\n", $contents);
$numrows = count($lines);
$x = 0;
for ($numrows; $x < $numrows; $x++)
{
echo $data2[0];
$data2 = explode(",", $lines[$x]);
echo $time = mktime(0,0,1,$data2[1],$data2[0],$data2[2]);
$user_no = $data2[3];
$item_no = $data2[4];
$quantity = $data2[5];
$waste = $data2[6];
$job_no = $data2[7];
}
?>
You're trying to explode and use the first line which has the column names in it
i slightly rewrote what you had to accomodate that and also not use a counter and
setting the default timezone too so you get what i think you were looking for
<?php
$filename = "../file/attendance_log/1414001189.txt";
$contents = file_get_contents($filename);
$contents = str_replace("\"","",$contents);
$lines = explode("\n", $contents);
date_default_timezone_set('UTC');
if (count($lines)){
$lines = array_slice($lines, 1);
foreach ($lines as $line){
$data2 = explode(",", $line);
if (count($data2) == 8){
echo $data2[0];
$time = mktime(0,0,1,$data2[1],$data2[0],$data2[2]);
echo $time . '<br>';
$user_no = $data2[3];
$item_no = $data2[4];
$quantity = $data2[5];
$waste = $data2[6];
$job_no = $data2[7];
}
}
}
?>
I had found the answer. It is because when the user save the file. It saved as Unicode UTF. It should save as Unicode UTF-8, that way there won't be any problems.
i have the following code
$contents = file_get_contents('folder/itemtitle.txt');
$fnamedata = file_get_contents('folder/fname.txt');
$fnamearray = explode("\n", $fnamedata);
$contents = explode("\n", $contents);
foreach ($contents as $key => $itemline)
{
}
foreach ($fnamearray as $key2 => $fname)
{
echo ($fname);
echo ($itemline);
}
what i want to do is to have the first line of each file echo so the output looks like
fname[0},itemline[0],fname[1],itemline[1]
what i am getting with the following is just this
fname[0],fname[1],fname[2].... ect
h
Assuming the indexes will always match:
$contents = file_get_contents('folder/itemtitle.txt');
$fnamedata = file_get_contents('/home/b1396hos/public_html/ofwgkta.co.uk/dd_folder/fname.txt');
$fnamearray = explode("\n", $fnamedata);
$contents = explode("\n", $contents);
for($i = 0; $i < count($contents); $i++)
{
echo $fnamearray[$i];
echo $contents[$i];
}
Since both arrays are simple, consecutive numeric indexed arrays, you can just use a for loop:
$l = max(count($fnamedata),count($contents));
for($i=0; $i<$l; $i++) {
$itemline = $contents[$i];
$fname = $fnamearray[$i];
// do stuff
}