AliJen

راهنمایی در فراخوانی از MYSQL

9 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

سلام به همه عزیزان

ممنون می شم دوستان در این مورد من رو راهنمایی کنید .

من از طریقه کدهای زیر یه سری اطلاعات رو از بانک اطلاعاتی در می یارم و نمایش می دهم ...


include "config.php";

$query="SELECT * FROM link WHERE status='free' AND description='1' LIMIT 1";
$select=mysql_query($query);
while($row=mysql_fetch_array($select))
{
echo $row['title'].' - '.$row['url'].' - '.'<br>';
}

برای مثلا خروجی می شود

hamid - 234567 -

اما من می خواهم وقتی که این اطلاعات نمایش داده شد یه کوئری دیگر هم ران شود ...

اما به این صورت که ... این کوئری یه فلید رو از همین رکورد که بالا نمایش داده شده بود رو آپدیت کنه ...


$update="UPDATE `link` SET status='sold' WHERE title='$user' ";
$update2=mysql_query($update);
echo $update2;

اما مشکل در بالا همین $USER هست ! من در اصل $row['title'] که در قسمت اول نمایش داده بودم رو می خوام ... یعنی همان HAMID

می خواهم وقتی اطلاعات این رکورد نمایش داده شد بعد یه قسمت از این رکورد آپدیت شه که بشه مثلا sold که دیگر ...

انگار به محصول بود فروخته شد رفت ! :ی

در کل این کدی است که من استفاده پیاده کردم البته قسمت $user=$row['title']; مشکل داره ! یعنی هیچ اطلاعات نداره و در نتیجه آپدیت انجام نمی شود .


<?php
include "config.php";

$query="SELECT * FROM link WHERE status='free' AND description='1' LIMIT 1";
$select=mysql_query($query);
while($row=mysql_fetch_array($select))
{
echo $row['title'].' - '.$row['url'].' - '.'<br>';
}

$user=$row['title'];

$update="UPDATE `link` SET status='sold' WHERE title='$user' ";
$update2=mysql_query($update);
echo $update2;

?>

ممنون می شوم راهنمایی کنید که من چطوری این کار رو انجام بدهم .

باتشکر

ویرایش شده در توسط AliJen
0

به اشتراک گذاری این پست


لینک به پست

نمی دونم درست متوجه شدم یا نه شما می خوای


$row['title']

نام یوزری باشه که در آپدیت می خوانی؟

اگر اینطوره فکر کنم اگر در query اول user_id رو هم بخونی و در دومی آی دی ها را برابر کنی مشکلت برطرف شه

البته من اگر جات بودم منتظر جواب یکی از اعضای هیات مدیره یا رضا آنلاین گرامی می شدم

5

به اشتراک گذاری این پست


لینک به پست

این رو تست کنید. صرفا جهت تست چون متدش باید تغییر کنه:

<?php
include "config.php";

$query="SELECT * FROM link WHERE status='free' AND description='1' LIMIT 1";
$select=mysql_query($query);
$user = '';
while($row=mysql_fetch_array($select))
{
echo $row['title'].' - '.$row['url'].' - '.'<br>';
$user .= $row['title'];
}


$update="UPDATE `link` SET status='sold' WHERE title='$user' ";
$update2=mysql_query($update);
echo $update2;

?>

البته میتونید کوئری دوم رو در while اولی هم اجرا کنید.

5

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

جالبه توی ایران پی اچ پی هم همینو مطرح کرده بودی

http://forum.iranphp...%8C%D9%84%D8%AF

شما در کل دارید هر دو کوئری رو روی یک جدول اجرا میکنید ، پس با یک کوئری هم حل میشه .


$sql = "update `link` set `status`='sold' where `status`='free' and `description`=1 ";
$query = @mysql_query($sql) or die('error in query');
$af_row =(int) @mysql_affected_rows($query);
if($af_row > 0)
echo $af_row.'رکورد تغییر کرد';
else
echo 'تغییری انجام نشد !';

ویرایش شده در توسط rezaonline
5

به اشتراک گذاری این پست


لینک به پست

دوستان ببخشید اظهار نظر میکنم ولی این کاراکتر نباید عوض بشه؟

`link` به 'link'

0

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

خیر سعید جان ، توی سینتکس sql ، اسم جداول و فیلد ها باید بین `` باشه .

البته توی بعضی درایور ها نوشتنش اجباری نیست تا اونجا که میدونم توی mysql مشکلی نیست مثلاً کوئری بالا


update link set status='sold' where status='free' and description=1

اما فکر کنم mysqli کمی گیر بده اما باز مطمئن نیستم .

واسه اوراکل و mssql هم یه سرچی بزن :rolleyes:

ویرایش شده در توسط rezaonline
4

به اشتراک گذاری این پست


لینک به پست

نمی دونم درست متوجه شدم یا نه شما می خوای


$row['title']

نام یوزری باشه که در آپدیت می خوانی؟

اگر اینطوره فکر کنم اگر در query اول user_id رو هم بخونی و در دومی آی دی ها را برابر کنی مشکلت برطرف شه

البته من اگر جات بودم منتظر جواب یکی از اعضای هیات مدیره یا رضا آنلاین گرامی می شدم

سلام درست متوجه شدید هر دو این موارد که فرمودید هم username و id هم ینیک هستند 2 نام کابری یک سان در سیستم نداریم

زیاد تفاوتی نمی کنه کدام رو انتخاب کنیم که دوستان راهنمایی کردند .

جالبه توی ایران پی اچ پی هم همینو مطرح کرده بودی

http://forum.iranphp...%8C%D9%84%D8%AF

شما در کل دارید هر دو کوئری رو روی یک جدول اجرا میکنید ، پس با یک کوئری هم حل میشه .


$sql = "update `link` set `status`='sold' where `status`='free' and `description`=1 ";
$query = @mysql_query($sql) or die('error in query');
$af_row =(int) @mysql_affected_rows($query);
if($af_row > 0)
echo $af_row.'رکورد تغییر کرد';
else
echo 'تغییری انجام نشد !';

سلام آقا رضا اینجا یه تغییر اساسی ایجاد شد این حالتی که شما مطرح کردید اطلاعات رو نمایش نمی ده مستقیم بروز رسانی می کنه بعد یه راست می یاد همه رو به روز می کنه

من شاید 200 محصول داشته باشم می خوام وقتی کاربر خرید کرد یه دونه اش از دیتابیس بیاد بیرون تحویل کاربر داده شه سپس همون موردی که از دیتابیس بیرون آمده وضعیتش فروخته شده شود .

که فکر می کنم پروسس کد بالایی مطرح شد کامل تر باشه اگر موافق باشید ؟

0

به اشتراک گذاری این پست


لینک به پست

این رو تست کنید. صرفا جهت تست چون متدش باید تغییر کنه:

<?php
include "config.php";

$query="SELECT * FROM link WHERE status='free' AND description='1' LIMIT 1";
$select=mysql_query($query);
$user = '';
while($row=mysql_fetch_array($select))
{
echo $row['title'].' - '.$row['url'].' - '.'<br>';
$user .= $row['title'];
}


$update="UPDATE `link` SET status='sold' WHERE title='$user' ";
$update2=mysql_query($update);
echo $update2;

?>

البته میتونید کوئری دوم رو در while اولی هم اجرا کنید.

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

یه موردی هم بود داخل این کد یه عدد 1 هم چاپ می شد که ظاهرا یه کد اضافه نوشته بودم حذفش کردم کلا کد به این صورت شد .


<?php
include "config.php";

$query="SELECT * FROM link WHERE status='free' AND description='1' LIMIT 1";
$select=mysql_query($query);
$user = '';
while($row=mysql_fetch_array($select))
{
echo $row['title'].' - '.$row['url'].' - '.'<br>';
$user .= $row['title'];
}

$update="UPDATE `link` SET status='sold' WHERE title='$user' ";
$update2=mysql_query($update);

?>

1

به اشتراک گذاری این پست


لینک به پست

یه مقدار هم بهبود ببخشیدم وضعیت رو که اگر محصولی نبودم الکی کوئری ران نکنه :ی


<?php

include "config.php";

$query="SELECT * FROM link WHERE status='free' AND description='1' LIMIT 1";
$select=mysql_query($query) or die(mysql_error());
$num=mysql_num_rows($select);
$user = '';
if ($num!=0){
while($row=mysql_fetch_array($select))
{
echo $row['title'].' - '.$row['url'].' - '.'<br>';
$user .= $row['title'];
}

$update="UPDATE `link` SET status='sold' WHERE title='$user' ";
$update2=mysql_query($update);

} else {
echo "محصول مورد نظر موجود نمی باشد";
}

?>

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری