طراحی جدول خروجی در php

mohsen162

Member
با سلام خدمت دوستان
من تا اونجا از مای اسکیوال خروجی گرفتم که سر ستون در بالا و خروجی ها در پایین نوشته میشه می تونید راهنمایی کنید که مثلا یک چنین جدولی طراحی کنم

نمایندگی ها جمع فروش خرید
شیراز
کازرون
.
.
.
منظورمو رسوندم یعنی هم عمودی هم افقی عنوان رو مشخص کنم موارد دیگه ام از mysql بگیرم
 

masima

Member
سلام اگه درست متوجه شده باشم شما میخواین یه فرم مثل فاکتور خرید/فروش ایجاد کنید؛ درسته ؟ (اگه که نه؛ پس بهتره یکم اطلاعات بیشتر بدین.) خوب این به طراحی صفحاتتون بستگی داره ، یعنی مربوط به html و css هست. مثلا از تگ table استفاده کنید یا بهتر از اون اینه که از div استفاده کنید. امیدوارم کمکی کرده باشم
 

paphooman

New Member
سلام دادا..
ببین شما برای اینکه ستون ایجاد کنی می تونی ار تگ <td></td> استفاده کنی و برای ایجاد ردیف از تگ <tr><tr/>.
حالا اونطوری که من فهمیدم می خواهی یه ستون ایجاد کنی و اطلاعاتی که از دیتا بیس می گیری جلوش (یعنی تو یه ستون دیگه ) بیاد؟(اگه اینطوری نیست بیشتر توضیح بده)
شما نیاز داری با تگ ستون که بالا گفتن اون رو ایجاد کنی یعنی اگر یه ستون می خواهی که توش 5 تا سطر باشه باید مثل زیر عمل کنی
<>td
</tr><tr>
</tr><tr>
</tr><tr>
</tr><tr>
</tr><tr>
/td><
 

mohsen162

Member
سلام و عرض تشكر از سما كه پاشخ دادين
انگار من منظورمو درست نرسوندم
اينارو مي دونم مي خوام اينا اتو ماتيك باشه يعني من فقط سر ستونو بزارم بقه چيزا يعني مثلا شيراز و كازرون و....
اتومات بياد مثلا بزارم تو يك حلقه for ولي نمي دونم چطوري برنامه هوشمند ميشه
 

mohsen162

Member
سلام و عرض تشكر از شما كه پاسخ دادين
انگار من منظورمو درست نرسوندم
اينارو مي دونم مي خوام اينا اتو ماتيك باشه يعني من فقط سر ستونو بزارم بقه چيزا يعني مثلا شيراز و كازرون و....
اتومات بياد مثلا بزارم تو يك حلقه for ولي نمي دونم چطوري برنامه هوشمند ميشه
 

masima

Member
حتما یک ستون جدولتون نام شهر (city) و یک ستون جدولتون مقدار فروش( sale) : پس باید مجموع فروش در هر شهر رو بدست بیارید اینجوری !
PHP:
 select city, sum(sale) from `db_name`.`tb_name` group by `city`
 

MMSHFE

Active Member
با سلام، این راه رو امتحان کنید:
PHP:
mysql_connect('localhost', 'root', '');
mysql_select_db('database');
$result = mysql_query('SELECT `city`, SUM(`sale`) AS `sale`, SUM(`buy`) AS `buy` FROM `table` GROUP BY `city`');
if(mysql_num_rows($result) > 0) {
    echo '<table border="1">'."\n";
    echo '<tr align="center" valign="middle">';
    echo '<th>نمایندگی</th><th>جمع فروش</th><th>جمع خرید</th>';
    echo '</tr>'."\n";
    while($row = mysql_fetch_assoc($result)) {
        echo '<tr align="center" valign="middle">';
        echo '<td>'.$row['city'].'</td>';
        echo '<td>'.$row['sale'].'</td>';
        echo '<td>'.$row['buy'].'</td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
}
else {
    echo 'اطلاعات یافت نشد.<br/>'."\n";
}
نکته: اسامی بانک اطلاعاتی، جدول، فیلدها، نام کاربری، رمز عبور و... نمونه هستن و باید توی کد خودتون برحسب نیازتون اونها رو تغییر بدین.
موفق باشید.
 

mohsen162

Member
با سلام خدمت دوستان عزيز و تشكر از شما
من دارم يك برنامه مي نويسم براي يك شركت به اينصورت كه 12شهر و ما در حدود 6 محصول به اين شهرها مي ديم با راهنماي كه شما كردي يخورده من كيچ شدم نميدونم ديتا بيس چطوري طراحي كنم كه بتونم گزارش ماهيانه يا 3 ماهه به تفكيك محصول يا جمع فروش محصول ياهر چيز ديگري رو به راحتي از اين ديتا بيس بگيرم ممنون ميشم راهنمايي كنيد
 

masima

Member
با سلام خدمت دوستان عزيز و تشكر از شما
سلام و خواهش میکنم

در حال حاضر جدول شما چجوریه ؟ یعنی چه ستون هایی توش دارید؟
این بستگی به هدف شما داره که جدولتون رو چگونه طراحی کنید و ..
به نظرم جدولتون چند ستون زیر رو باید داشته باشه :
شهر ، محصول ، فروش sale (منظور فروش یک محصول خاص در یک شهر خاص ) ، خرید shop (منظور خرید یک محصول خاص در یک شهر خاص ) ، تاریخ

PHP:
date        |     shop    |     sale     |    product   |       city
-------------------------------------------------------------------------
2011-08-20    1000          1500            p1            mashhad
-------------------------------------------------------------------------
2011-07-15    2000          3000            p2            shiraz
-------------------------------------------------------------------------
2011-06-18    1000           1200           p1            shiraz
-------------------------------------------------------------------------
2011-07-10    2000            2500          p3            mashhad
-------------------------------------------------------------------------
2011-07-20    1000            1200            p2           mashhad
-------------------------------------------------------------------------
2011-07-10    1500            2500            p1            tehran
-------------------------------------------------------------------------
2011-07-15     2500           5000            p2            tehran
-------------------------------------------------------------------------


به عنوان مثال سطر یکم اینجوری خونده میشه :
در تاریخ 20-08-2011 کاگزار شما توی مشهد ، محصول p1 رو 1000 تومن خریده و داره 1500 تومن میفروشه !

حالا کوئری :
1) "میخوایم مقدار فروش توی هر شهر رو بدست بیاریم"
PHP:
select city, sum(sale) as `sum of sale` from `db_name`.`tb_name` group by `city` ;
نتیجه :

PHP:
city         |   sum of sale
-----------------------------
mashhad        5200
shiraz             4200
tehran            7500

2) "میخوایم مقدار فروش توی هر محصول رو بدست بیاریم"
PHP:
select product, sum(sale) as `sum of sale` from `db_name`.`tb_name` group by `product` ;
و نتیجه :

PHP:
product  |  sum of sale
 -----------------------------
p1                 5200
p2                 9200
p3                 2500
اگه خواسته باشید شرط خاصی مثل تاریخ یا ... دیگر و هم به انتهای کوئری اضافه کنید :

3) "میخوایم مقدار فروش توی هر شهر رو بدست بیاریم توی یک بازه زمانی خاص مثلا بین 10-07-2011 تا 20-07-2011 (توجه کنید که سطرهای که تاریخشون برابر روز 10 ماه 7 سال 2011 تا روز 19 ماه 7 سال 2011 بررسی میشن !)"
البته باید این دو تاریخ رو بوسیله دستورهای پی اچ پی به شکل متغیر داخل کوئری بریزید .

PHP:
select city, sum(sale) as `sum of sale` from `db_name`.`tb_name` where `date` between '2011-07-10' and '2011-07-20' group by `city` ;

و نتیجه :
PHP:
city      |   sum of sale
 --------------------------
 mashhad      2500
 shiraz           3000
 tehran          7500
شما میتونید برای مجموع خرید از sum(shop) استفاده کنید و ............
وااااای دستم خسته شد !
امیدوارم به مفید باشه براتون این مطلب !

 
آخرین ویرایش:

mohsen162

Member
اقا منو يك دنيا شرمنده كردين:neutral:
خيلي كامل گفتيد من دقيقا فهميدم
يك سوال براي ورود اطلاعات دارم من اطلاعات ماهيانه بدستم مياد يعني در حدود 270 عدد يكبارخ بايدوارد ديتا بيس بشه مثلا شيراز تخمه نوع اول 2 كيلو نوع دوم 4كيلو مرغ برزيلي كيلو مرغ ايراني 20 كيلو و10و.... فسا تخمخ نوع اول 20 كيلو و همينطور نميدونم درست منظورمو درست فهميديد حالا جدولي با html طراحي كردم كه يكباره شهرها و محصولات و محصولات توش وارد كنند يعني ر واقع جدول 3 بعدي حالا سوالام اينه كه ورود اطلاعات به ديتابيس با حلقه با چي بايد اينجوري كه گفتين ئارد ديتا بيس كنم
کد:
$guere="nsert
]اينو چطوري بنويسم
 

masima

Member
اقا منو يك دنيا شرمنده كردين:neutral:
خيلي كامل گفتيد من دقيقا فهميدم
خواهش میکنم ! :)
يك سوال براي ورود اطلاعات دارم من اطلاعات ماهيانه بدستم مياد يعني در حدود 270 عدد يكبارخ بايدوارد ديتا بيس بشه مثلا شيراز تخمه نوع اول 2 كيلو نوع دوم 4كيلو مرغ برزيلي كيلو مرغ ايراني 20 كيلو و10و.... فسا تخمخ نوع اول 20 كيلو و همينطور نميدونم درست منظورمو درست فهميديد حالا جدولي با html طراحي كردم كه يكباره شهرها و محصولات و محصولات توش وارد كنند يعني ر واقع جدول 3 بعدي حالا سوالام اينه كه ورود اطلاعات به ديتابيس با حلقه با چي بايد اينجوري كه گفتين ئارد ديتا بيس كنم
یکم سوال دارم درمورد جدول شما:
یعنی چی حدود 270 عدد یکباره بره تو پایگاه داده ؟ خیلی مبهم نوشتید ؛ من متوجه نشدم
جدول سه بعدی یعنی چی ؟:shock:

و حالا در مورد جدول خودم :
اگه بخواین توی جدولی مثل مال من اطلاعات رو سطر به سطر وارد کنید ؛ کافیه از دستور insert into استفاده کنید و برای این کار یک فرم html طراحی میکنید به این مضمون :
که اطلاعات مورد نیاز یک سطر رو کاربر (نمیدونم یا هر کی شما میخواین باشه !) رو بگیره و داخل جدول بریزه :
این صفحه رو با نام insert-form.html ذخیره کنید :
PHP:
<html>
<body>
<form action="insert-sql.php" method="post" >
city : 
<input type="text" name="city" /><br/>
product : 
<input type="text" name="product" /><br/>
sale : 
<input type="text" name="sale" /><br/>
shop : 
<input type="text" name="shop" /><br/>
<input type="submit" value="insert" name="sendBtn" />
</form>

</body>
</html>
چون کدهای اینجا به هم نریزه انگلیسی نوشتم ، اطلاعاتی که روی فرم نمایش داده میشن؛ شما فارسی شو بنویس !:)
حالا این صفحه رو با نام insert-sql.php ذخیره کنید :
PHP:
if ( isset($_POST['sendBtn']) ) {
$con = mysql_connect('localhost', 'root', '');
mysql_select_db('dbName');
$qry = "INSERT INTO `dbName`.`tbName` (`city`, `product`, `sale`, `shop`) VALUES( '$_POST[city]', '$_POST[product]', '$_POST[sale]', '$_POST[shop]' ) ";
$result = mysql_query ( $qry, $con );
if (!result)
die ("could not insert into table : " . mysql_error() );
else 
echo "insett into table, successfully ! ";
}
و به جای dbName نام پایگاه دادتون رو بنویسید و به جای tbName نام جدولتون رو بنویسید ! همین !

در ضمن ستون date جدولتون رو از نوع timestamp انتخاب کنید که تاریخ رو خودکار ، داخلش بذاره بعدا موقع استفاده باید با تابع های خاصی اونو به تاریخ خورشیدی تغییر بدین ؛ که اینجا جاش
نیست که بگم ! :green:
موفق باشید

 
آخرین ویرایش:

mohsen162

Member
سلام من دقيقا همين كارو كردم اما با اين بحث شما در مورد چگونه خرو جي گرفتن موندم كه چيكار كنم
جدول من سه بعدي

HTML:
<pre>
                        شهر                               تخمه                                     مرغ
                                                    نوع اول      نوع دوم               نوع اول     نوع دوم    
                         شيراز        
 

</pre>
]به اين صورت فكر كنم منظورمو رسوندم
اينو چطور وارد ديتابيس مي كنيد كه با اون جور خروجي گرفتن جور در بياد؟
 
آخرین ویرایش:

mohsen162

Member
با سلام خدمت شما جدول من هنوز آماده نشده بود براي همين يك جدول شبيه جدول خودم از يكي از دوستانم گرفتم و براتون آپلود كردم
مشكل اينجاست كه اگه اينجور كه شما توضيح داديد بخوام ديتا وارد كنم بايد براي هر رديف يك ستون اضاف كنم كه دكمه ارسال را براي هر رديف بزارم ( براي هر رديف جداگانه يك فرم طراحي كنم )
من سعي كردم كه با حلقهfor و آرايه ها اين مشكل حل كنم اما نشد ( شايدباور نكنيد هر دفعه اين برنامه رو كامپيوتر من يك جوابي ميده هر بار كه دكمه ارسال رو فشار ميدم يكبار 4 ركورد به ركورد جدولم اضاف ميكنه يكبار يكي اضاف ميكنه:lol:)
لطفا راهنمايي كنيد كه چطوري مي تونم يك دكمه ارسال بزارم و هر رديف در واقعه در يك رديف ديتابيسم قرار بگيره
 

پیوست ها

  • vrod.txt
    16.5 کیلوبایت · بازدیدها: 2

masima

Member
خب من گفتم جدول دیتابیس ولی این که فرمه ... ؟! تازشم چه قدر وحشتناکه کد نویسیش ! بگذریم .. :)
مشكل اينجاست كه اگه اينجور كه شما توضيح داديد بخوام ديتا وارد كنم بايد براي هر رديف يك ستون اضاف كنم كه دكمه ارسال را براي هر رديف بزارم ( براي هر رديف جداگانه يك فرم طراحي كنم )
بسیار خب ! حالا با کد زیر میتونید یک فرم با هر تعداد سطر (!! :shock: ) که میخواین وارد جدول تون کنید !
با استفاده از آرایه های چند اندیسی این کار رو براتون انجام دادم ...( قابل توجه کسانی که فک میکنن استفاده از آرایه های چند اندیسی کار بیخودیه ! )
باید اینو اضافه کنم که اگه هر سطر یا ستونی رو خالی بگذارید ، اون سطر داخل جدول ثبت نیمشه ! (قدرت خدا ! :green: )
جدول هم مثل همونی که تو پست پیش گفتم ؛ حالا کدها
صفحه insert-form.html
PHP:
<html><title>insert form</title>
<body>
<?php
$arg = array('city', 'product', 'sale', 'shop');
?>
<form action="insert-sql.php" method="post" >
<table>
<tr>
    <th>city :</th> 
    <th>product :</th> 
    <th>sale :</th>
    <th>shop :</th>
</tr>
<?php for( $i=0; $i<5; $i++ ) { ?>
<tr>
<?php foreach( $arg as $key ) { ?>
    <td>
        <input type="text" name="arg[<?php echo $i; ?>][<?php echo $key; ?>]" value="arg[<?php echo $i; ?>][<?php echo $key; ?>]" />
    </td><!-- example arg[0]['city'] -->
<?php } // end foreach( $arg as $key ) ?>
</tr>
<?php } // end for( $i=0; $i<5; $i++ )?>
</table>
<input type="submit" value="send data" name="sendBtn" />
<input type="reset" value="reset" />
</form>
</body>
</html>


صفحه insert-sql.php
PHP:
<?php
if ( !isset($_POST['sendBtn']) ) {
    echo "please click the 'send' botton !";
    exit();
    } // end if ( !isset($_POST['sendBtn']) )
    
$a = array('city', 'product', 'sale', 'shop');

if ( !empty($_POST['arg']) ) {
    $ar = $_POST['arg'];
    $con = mysql_connect('localhost', 'root', '');
    mysql_select_db('dbName');
    } else {
    echo "there is not any rows to insert in table";
    exit();
    } // end else    
    
$flag = false;
$row_insert = 0;

for ($i=0; $i<count($ar); $i++) {

    foreach ( $a as $key ) {
        if ( empty($ar[$i][$key]) )
            $flag = true;
        } // end foreach ( $a as $key )
    
    if ( !$flag ) {    
        $row_insert ++;
        $sale = intval($ar[$i]['sale']);
        $shop = intval($ar[$i]['shop']);
        $qry = "INSERT INTO `dbName`.`tbName` (`city`, `product`, `sale`, `shop`) VALUES( '$ar[$i][city]', '$ar[$i][product]', '$sale', '$shop' ); ";
        
        $result[$i] = mysql_query ( $qry, $con );
        
        if ( !$result[$i] )
            echo "<br/>could not insert into table where row = \$ar[$i] : " . mysql_error();
        else 
            echo "<br/>successfuly, insett into table where row = \$ar[$i]  ";
    
    } // end if ( !$flag )
$flag = false;
} // end for ($i=0; $i<count($ar); $i++)
echo "<br/><br/>now, <b>$row_insert</b> row(s) inserted in table !";
?>
خوب ؛ امیدوارم دیگه حل شده باشه :)
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا