PDA

View Full Version : سوال: این کارها شدنیه آیا؟؟؟



raha1234567
شنبه 24 آبان 1393, 21:31 عصر
سلام دوستان می خوام ببینم این کاری که میگم شدنی هست آیا؟
یه دیتابیس میخوام بسازم به اسم job و یه جدول مثلا به اسم فارسی کافی نت
میخوام توی php توی یک txtb اسم جدول مثلا کافی نت رو جستجو کنه. آیا این کار شدنی هست؟؟؟؟ اگه هست کدش رو میخوا لطفا....

و قسمت دوم: جدول کافی نت من دارای 3 ستون هست به اسم های id, name,pic که میخوام وقتی اسم جدول جستجو داشت در صورت وجود ستون pic من در یک صفحه جدید نمایش داده بشه.

حالا من نمیخوام با کد نویسی عکس ها یا آدرسش رو در دیتابیس دخیره کنم می خوام از قبل عکس ها در دیتابیس ذخیره شده باشه.... برا این کار آیا من می تونم به پوشه دیتابیسم دسترسی داشته باشم؟؟؟؟؟؟

و با فرض اینکه دسترسی دارم و میرم عکس ها رو در پوشه pic در خود دیتابیس ذخیره میکنم.چه کدی بدم در php که عکسا رو نمایشم بده

ببخشید انقد سوال پرسیدم

rambod18
شنبه 24 آبان 1393, 21:58 عصر
برای سوال اول



SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME= 'کافی-نت'

raha1234567
شنبه 24 آبان 1393, 22:09 عصر
مرسی.
میگم میتون به جای کافی نت مساویش کنم با اسم text box دیگه؟؟؟؟
و میشه بگسد basr table چه میکنه؟؟

rambod18
شنبه 24 آبان 1393, 22:11 عصر
سوال دوم

معمولا نام عکس ها رو ذخیره می کنن اگه قصد استفاده از اسم عکس ها رو داری از این کد استفاده کن


SELECT pic FROM کافی-نت WHERE EXISTS(اینجا کل دستورات قسمت سوال اول رو وارد کنید)

rambod18
شنبه 24 آبان 1393, 22:18 عصر
وقتی یک جدول ایجاد میکنید چندتا جدول دیگه هم در کنارش ساخته میشه که نشون داده نمیشه.جدول هایی که خود شما ساختین base table هست .بله می تونید جای گذین کنید.
برای نمایش عکس در php هم از تگ img استفاده میشه.


<img src="<?= $نام متغییری که نتیجه خروجی توش ذخیره شده?>"/>

raha1234567
شنبه 24 آبان 1393, 22:23 عصر
یه چیز دیگه این job که شما برا قسمت دوم سوال گذاشتین هم دیتابیس هست دیگه؟؟؟

rambod18
شنبه 24 آبان 1393, 22:38 عصر
یه چیز دیگه این job که شما برا قسمت دوم سوال گذاشتین هم دیتابیس هست دیگه؟؟؟
بله هموت دیتابیس هست

raha1234567
شنبه 24 آبان 1393, 22:38 عصر
سوال دوم

معمولا نام عکس ها رو ذخیره می کنن اگه قصد استفاده از اسم عکس ها رو داری از این کد استفاده کن


SELECT pic FROM job WHERE EXISTS(اینجا کل دستورات قسمت سوال اول رو وارد کنید)




میشه به صورت زیر نوشت؟؟؟؟




$tbl=mysql_query("SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME='".$_POST["tsearch"]."' ");
//$result= mysql_query("SELECT * FROM `page` WHERE `tsearch` LIKE '".$_POST["tsearch"]."'");

$result=mysql_query("SELECT pic FROM $tbl");

rambod18
شنبه 24 آبان 1393, 22:44 عصر
میشه به صورت زیر نوشت؟؟؟؟




$tbl=mysql_query("SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME='".$_POST["tsearch"]."' ");
//$result= mysql_query("SELECT * FROM `page` WHERE `tsearch` LIKE '".$_POST["tsearch"]."'");

$result=mysql_query("SELECT pic FROM $tbl");

نتیجه یکیه.بله تو دوتا کوئری هم میشه.البته بهتره $tbl رو بررسی کنید که خالی نباشه بعد کوئری دوم رو اجرا کنید

raha1234567
شنبه 24 آبان 1393, 22:49 عصر
نتیجه یکیه.بله تو دوتا کوئری هم میشه.البته بهتره $tbl رو بررسی کنید که خالی نباشه بعد کوئری دوم رو اجرا کنید

یعنی بعد کوئری اول بنویسم :



if(!empty($tbl)){
دستورات }

rambod18
شنبه 24 آبان 1393, 22:56 عصر
ببینید اگر قراره این برنامه عملیاتی بشه علاوه بر چک کردن خالی نبودن $tbl که خودتون کدش رو گذاشتین نباید مقدار دریافتی از post رو مستقیما وارد کوئری کنید.
باید با تابع مثلا
mysqli_real_escape_string
مقادیر اون ها رو در برابر حملات sql injection ایمن کنید

raha1234567
شنبه 24 آبان 1393, 22:58 عصر
ببینید اگر قراره این برنامه عملیاتی بشه علاوه بر چک کردن خالی نبودن $tbl که خودتون کدش رو گذاشتین نباید مقدار دریافتی از post رو مستقیما وارد کوئری کنید.
باید با تابع مثلا
mysqli_real_escape_string
مقادیر اون ها رو در برابر حملات sql injection ایمن کنید

این هایی که گفتین رو دقیقا نفهمیدم .....

rambod18
شنبه 24 آبان 1393, 23:04 عصر
اگه این سایت یا اپلیکشنی که دارید طراحی می کنید در حد آموزشی یا دانشگاهی هست خوب.
اما اگر قراره روی سرور بره و کار کنی کدی که شما دارین استفاده می کنید در برابر حملات sql injection اسیب پذیره و امن نیست

raha1234567
شنبه 24 آبان 1393, 23:07 عصر
نه در حد پروژه بعد اگه خواست بذارم روی سایت حتما امنیت رو درش لحاظ خواهم کرد


من یه سوال دیگه هم دارم...... :خجالت:

rambod18
شنبه 24 آبان 1393, 23:11 عصر
نه در حد پروژه بعد اگه خواست بذارم روی سایت حتما امنیت رو درش لحاظ خواهم کرد


من یه سوال دیگه هم دارم...... :خجالت:
خوب یه تاپیک دیگه بزنید یا همینجا بپرسید(بهتره که تاپیک جدید ایجاد کنید)

raha1234567
شنبه 24 آبان 1393, 23:19 عصر
حالا من اگه بخوام این عکس ها رو که با اون دو کد بالا بدست آوردم توی یک صفحه دیگه نشون بده چیکار باید بکنم کد زیر که می گم درسته ؟:



$tbl=mysql_query("SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME='".$_POST["tsearch"]."' ");

$result=mysql_query("SELECT * FROM $tbl");

}
mysql_close( $link);
?>


<?php

header("location:kafinet.php");

while ( $record= mysql_fetch_array( $result)) {


?>

rambod18
شنبه 24 آبان 1393, 23:34 عصر
من فکر نمی کنم این کدی که نوشتین کار بکنه
اول اینکه احتمال خیلی زیاد تابع mysql_fetch_array خطا بده چون قبلا کانکشن رو بستین(mysql_close($link))
دوم اینکه معمولا شکل درست دستور هدر اینه


header('Location: kafinet.php');

و در اخر من نمیبینم در جایی شما لیست عکس هایی رو که بدست اوردین به صفحه kafinet.php بفرستین.
این شیوه که شما در نظر گرفتین که کدهای while بعد از انتقال هدر باشن و توی صفحه kafinet.php اجرا بشن باید تست بشه و ببینید جواب میده یا نه

raha1234567
یک شنبه 25 آبان 1393, 00:04 صبح
من فکر نمی کنم این کدی که نوشتین کار بکنه
اول اینکه احتمال خیلی زیاد تابع mysql_fetch_array خطا بده چون قبلا کانکشن رو بستین(mysql_close($link))
دوم اینکه معمولا شکل درست دستور هدر اینه


header('Location: kafinet.php');

و در اخر من نمیبینم در جایی شما لیست عکس هایی رو که بدست اوردین به صفحه kafinet.php بفرستین.
این شیوه که شما در نظر گرفتین که کدهای while بعد از انتقال هدر باشن و توی صفحه kafinet.php اجرا بشن باید تست بشه و ببینید جواب میده یا نه


اینی که نوشتم برا پاپ توی همون صفحه درسته؟؟


$tbl=mysql_query("SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME='".$_POST["tsearch"]."' ");
$result=mysql_query("SELECT pic FROM $tbl");

$num=mysql_num_rows($result);
for($i=0;$i<$num;$i++){
$p2=mysql_fetch_row($tbl);


?>
<table>
<tr>
<td>
<?php
echo $p2; ?>
</td></tr></table>
<?php
}
mysql_close( $link);
}

rambod18
یک شنبه 25 آبان 1393, 00:09 صبح
ظاهرا بله اما خوب از تئوری تا عمل فاصله زیاده تست کنید

raha1234567
یک شنبه 25 آبان 1393, 00:14 صبح
دقیقا همین شده که شما می فرمایید فاصله
الان هی به من خطا میگیره

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\jobs\search.php on line 82

بعد حالا اگه بخوام ببره صفحه بعد چه کنم؟

rambod18
یک شنبه 25 آبان 1393, 10:19 صبح
فکر می کنم خطا بخاطر دستور mysql_query هست
از این کد استفاده کنید ببینید جواب میده


$tbl=mysql_query("SELECT TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME='".$_POST["tsearch"]."' ",$link);
$result=mysql_query("SELECT pic FROM $tbl",$link); $num=mysql_num_rows($result);

rambod18
یک شنبه 25 آبان 1393, 10:30 صبح
من نمی دونم شما چطور طراحی کردین اما مثلا میشه نتایج بدست اومده رو ریخت توی input هایی با type=hidden که توی یک فرم هستند و یک دکمه نمایش هم گذاشت حالا وقتی طرف روی نمایش کلیک کنه اطلاعات فرستاده میشه.
یا می تونید اطلاعات بدست اومده رو با تابع json_encode() به json تبدیل کنید و با jquery به صورت ajax بهصفحه مورد نظر بفرستید

abbas27
یک شنبه 25 آبان 1393, 11:44 صبح
ببین میتونی یه کار دیگه هم کنی.میتونی مقدار متغییری که آدرس عکس یا اسمش رو ذخیره میکنه به همراه آدرسی که میخوای عکس توی اون صفحه نمایش داده بشه ارسال کنی/


header('Location: kafinet.php?namepic=<?php $row['namepic']; ?>');



بعد تو صفحه جدید با تگ img اونو نمایش بده/یعنی تو تگ img مقدار src رو برابر با متغیری که دریافت کردی قرار بده/