PDA

View Full Version : سوال: اجرای دستور select و ایجاد لینک hyperlink برای فیلد id



hamed-php
چهارشنبه 24 اسفند 1390, 21:25 عصر
هنگام استفاده از select چگونه میتونم تمامی دیتا رو از دیتابیس بخونم و موقع چاپ اونها کاری کنم که فقط فیلد id هنگام نمایش بصورت hyperlink باشه و بتونم به صفحات دیگر سایت اون رو متصل کنم

"SELECT * FROM "

hightech
چهارشنبه 24 اسفند 1390, 23:29 عصر
$query = "SELECT id,title FROM myTable";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
echo "<a href=\"?id=$row[id]\">$row[title]</a><br/>";
}

hamed-php
شنبه 27 اسفند 1390, 09:23 صبح
من تمامی رکوردها، من جمله تاریخ رو هم با روش * Select فراخوانده و نمایش میدهم
حالا برای خواندن تاریخ از دیتابیس و نمایش اون بصورت فارسی چگونه باید عمل کرد.
فرض کنید از کلاس jcalendar استفاده میشود.


$c = new jCalendar;



$c->date('j F'); // ۶ آبان


ممنون میشم اگر دوستان راهنمایی فرمایند

hamed-php
یک شنبه 28 اسفند 1390, 13:08 عصر
تاریخ رو به این صورت از دیتابیس رید میکنم



$sql = "select date from ozviyat1 " ;

$handle = mysql_query($sql);

$retArray = array();
while ($row = mysql_fetch_object($handle)) {

$retArray[] = $row;
}


حالا قبل از چاپ میخواهم تاریخ رو بصورت فارسی درآورده و سپس چاپ کنم

MMSHFE
یک شنبه 28 اسفند 1390, 16:37 عصر
باید تاریختون رو با تابع strtotime بصورت timestamp در بیارین و بعد با کلاس مربوطه مثل jCalendar یا JDF اون رو به تاریخ شمسی تبدیل کنید. موفق باشید.

hamed-php
یک شنبه 28 اسفند 1390, 18:19 عصر
while ($row = mysql_fetch_array($handle)) {
//echo date('j F');
$c = new jCalendar;
$timestamp = strtotime($row['date']);

//date('j F', $timestamp);
echo "<a href=\"?id=$row[id]\">$row[date].$timestamp</a></br>";
echo $c->date('j F', $timestamp); // ۲۳ مهر
echo "<br>";
}


good work

alismith
یک شنبه 28 اسفند 1390, 18:41 عصر
حالا اگر * select رو بکار بگیرم آیا با explod باید تاریخ رو بکشم بیرون. چون تمامی فیلدها رو مجبورم با هم رید کنم

منظورتون دقیقا چیه؟

اگر خروجی آرایه باشه :


$row['date']

اگر object باشه :


$row->date


موفق باشید

hamed-php
دوشنبه 07 فروردین 1391, 16:35 عصر
سلام

من کد هارو ضمیمه کردم

از تابع json_encode استفاده کردم



$sql = "select * from student";
$handle = mysql_query($sql);

$retArray = array();
while ($row = mysql_fetch_row($handle)) {
$retArray[] = $row;
}
$data = json_encode($retArray);
$ret = "{data:" . $data .",\n";
$ret .= "recordType : 'array'}";
echo $ret;


84713
حالا تاریخ رو چطوری تبدیل و چاپ کنم . با همون کلاس شمسی (اگر نیاز هست که کلاس شمسی رو بگذارم؟)

ممنون اگر دوستان راهنمایی فرمایند

hamed-php
چهارشنبه 09 فروردین 1391, 18:20 عصر
آیا میشود آرایه ای رو که توسط json_encode در یک متغییر ذخیره میکنیم رو پیمایش کنیم و تغییراتی حاصل کنیم مثل exploding کردن

MMSHFE
چهارشنبه 09 فروردین 1391, 18:38 عصر
میتونید خروجی JSON رو دوباره با json_decode به آرایه تبدیل کنید. حالا دقیقاً چه نوع پردازشی مدنظرتون هست؟

hamed-php
چهارشنبه 09 فروردین 1391, 18:42 عصر
یکی از اهدافم همون تبدیل تاریخ گرفته شده از دیتابیس به تاریخ شمسی هست
در پست 8 فایلهامو ضمیمه کردم
میشه لطفاً یک نگاهی بیاندازید

hamidhassas
پنج شنبه 10 فروردین 1391, 08:59 صبح
من تاریخ رو به وسیله فایل jdf.php که از اینترنت گرفتم نمایش میدم و اون رو در یک فیلد به نام date در دیتابیس که به صورت text در نظر گرفته شده به صورت مثلا 10/1/1391 ذخیره میکنم و بعد دقیقا همین تاریخ رو از داخل فیلد دیتابس دریافت میکنم و به نمایش در میارم

حالا میخوام بدونم که
1-آیا این کارهایی که کردم درسته و یا اشتباهه
2-آیا روش دیگه ای هم برای این کار وجود داره اگه بله چی و چطور؟
3-آیا با همین روش خودم میتونم تعیین کنم که مثلا تمامی رکورد هایی که در فیلد data اونها از تاریخ ( این ) تا تازیخ (این) است به نمایش در بیاد
4-آیا میتونم بگم که در این مقداری که مثلا10/1/1390 است تا مثلا تاریخ 20/3/1390 فقط تمامی رکورد هایی که عدد داخل بین دو ممیز که در اینجا 1 و 3 است به نمایش در بیاد ( یعنی از ماه فلان تا ماه فلان)

لطفا اگه پاسخی هست اون رو جزء به جزء و دقیق توضیح بدین

MMSHFE
پنج شنبه 10 فروردین 1391, 09:36 صبح
برای چنین مقاصدی، پیشنهاد میکنم فیلد تاریخ رو بصورت int توی دیتابیس تنظیم کنید و خروجی تابع time (که timestamp جاری هست) رو ذخیره کنید. هرموقع هم نیاز به مقایسه بود، میتونید اعمالی مثل کم کردن دو تاریخ از هم و... رو انجام بدین. ازطرفی موقع نمایش هم با فرستادن timestamp هر رکورد به JDF میتونید تاریخش رو محاسبه کرده و نمایش بدین. موفق باشید.

hamed-php
پنج شنبه 10 فروردین 1391, 11:31 صبح
راستی table رو بدین صورت اصلاح میکنم در فایل پیوست در پست شماره هشت:


-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Mar 29, 2012 at 07:12 AM
-- Server version: 5.1.36
-- PHP Version: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `server`
--

-- --------------------------------------------------------

--
-- Table structure for table `student`
--

CREATE TABLE IF NOT EXISTS `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(31) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=46 ;

--
-- Dumping data for table `student`
--

INSERT INTO `student` (`id`, `name`, `date`) VALUES
(1, 'احمد', '2011-06-24 14:10:46'),
(5, 'علی', '2011-10-16 00:00:00'),
(6, 'منصور', '2011-11-21 00:00:00');


خروجی کد زیر رو مشاهده بفرمایید:


$sql = "select * from student";
$handle = mysql_query($sql);

$retArray = array();
while ($row = mysql_fetch_array($handle)) {
$retArray[] = $row;
}
$data = json_encode($retArray);
$ret = "{data:" . $data .",\n";
$ret .= "recordType : 'array'}";
echo $ret;



{data:[{"0":"1","id":"1","1":"\u0627\u062d\u0645\u062f","name":"\u0627\u062d\u0645\u062f","2":"2011-06-24 14:10:46","date":"2011-06-24 14:10:46"},{"0":"5","id":"5","1":"\u0639\u0644\u06cc","name":"\u0639\u0644\u06cc","2":"2011-10-16 00:00:00","date":"2011-10-16 00:00:00"},{"0":"6","id":"6","1":"\u0645\u0646\u0635\u0648\u0631","name":"\u0645\u0646\u0635\u0648\u0631","2":"2011-11-21 00:00:00","date":"2011-11-21 00:00:00"}], recordType : 'array'}

در اینجا آیا میشه تغییرات رو قبل از چاپ بر روی date اعمال کرد؟

MMSHFE
پنج شنبه 10 فروردین 1391, 11:56 صبح
خوب بله دیگه، با json_decode خروجی JSON رو تبدیل به آرایه کنید و اندیس 2 آرایه مذکور رو تغییر بدین و بعد، دوباره با json_encode آرایه رو به JSON تبدیل کرده و نمایش بدین. موفق باشید.

hamed-php
یک شنبه 20 فروردین 1391, 09:23 صبح
با سلام

میشه لطفاً راهنمایی کنیید چطور حلقه ای تشکیل دهم تا آخرین رکورد تاریخ مندرج شده رو به آرایه تبدیل کنم . و بتونم اندیس اون ها رو تغییر بدهم.

ممنون از شما

MMSHFE
یک شنبه 20 فروردین 1391, 10:50 صبح
میشه بیشتر توضیح بدین؟

hamed-php
یک شنبه 20 فروردین 1391, 12:34 عصر
با سلام

مثلاً این کاری که کردم رو نگاه بیاندازید



$retArray = array();
while ($row = mysql_fetch_array($handle)) {
$retArray[] = $row;
}
$data = json_encode($retArray);
$obj = json_decode($data);
for ($i=0; $i<150; $i=$i+3){
$obj1 = array("0"=>"$i", "1"=>"hane", "2"=>"sdf");
}
$data = json_encode($obj1);
$ret = "{data:" . $data .",\n";
$ret .= "recordType : 'array'}";
echo $ret;

آرایه رو برای مثال نوشتم
برای تاریخ نمیدونم چیکار کنم . من قصدم این هست که فقط رکود تاریخ رو تو یه آرایه بریزم و بعد اون رو تبدیل به شمسی کنم و دوباره دی کد جیسون کنم

hamed-php
یک شنبه 20 فروردین 1391, 16:02 عصر
خوب بله دیگه، با json_decode خروجی JSON رو تبدیل به آرایه کنید و اندیس 2 آرایه مذکور رو تغییر بدین و بعد، دوباره با json_encode آرایه رو به JSON تبدیل کرده و نمایش بدین. موفق باشید.
میشه همینو راهنمایی کنید چطوری اجرا کنم