PDA

View Full Version : بالا بردن یک ردیف در دیتابیس



mamadco
دوشنبه 01 تیر 1394, 19:49 عصر
سلام مهندسین عزیزم :D

دوستان میخوام ، یه بخش بزارم یه کاربر با کلیک با اون آگهیش بیاد بالا یعنی ردیف آگهیش تو جدول بالاتر از همه قرار بگیره
باید چه کنم ؟

H:Shojaei
دوشنبه 01 تیر 1394, 20:01 عصر
یک فیلد number بذارید و کلیک که کرد کاربر اون رو برابر:
update tbl number=max(number)+1 بگذارید و جدول رو هم با همین فیلد مرتب کنید وقتی میخواید بخونیدش...

mamadco
جمعه 05 تیر 1394, 18:24 عصر
شرمنده مهندس اگر بخوام همینو با pdo بنویسم چطوری میشه ؟

mamadco
یک شنبه 07 تیر 1394, 14:49 عصر
همونی که نوشتید و سینتکسش کار نمیکرد رو بذارید من کامل میکنم بهتون تحویل میدم...

مهندس ممنون که تو اون تاپیک چ دادید
مهندس این الان ج نمیده نمید ونم چرا :(

<?php

include 'inc_config/config.php';
if(isset($_POST['update'])){
$conditionField =23;
$sth = $connect->prepare("UPDATE `carinfo` SET id=max(id)+1 WHERE id=:id");
if($sth->execute(array(

':id'=>$conditionField))){
echo "ok";
}
else{
echo "No";
}
}

?>

<form action="" method="post" >
<input type="submit" name="update" value="update" />
</form>

arta.nasiri
یک شنبه 07 تیر 1394, 16:06 عصر
سلام

با استفاده از sub-select میتونید اینکارو انجام بدید.
UPDATE `carinfo` car, ((SELECT max(id) as id FROM `carinfo`) max) SET car.id=max.id+1 where car.id=:id

ولی این روش اشتباهه و شما نباید برای جابجایی محل نمایش id اون آگهی رو تغییر بدید. بهتره یه فیلد دیگه مثلا به اسم weight اضافه کنید و رو مقدار این فیلد مانور بدید.

mamadco
یک شنبه 07 تیر 1394, 16:16 عصر
مرسی مهندس شرمندذه من عجله دارم ولی این کار نکرد ، یه نگاه دیگه منیندازید ؟

<?php
include 'inc_config/config.php';

if(isset($_POST['update'])){
$id =23;
$sth = $connect->prepare("UPDATE `carinfo` SET id=((SELECT max(id) as id FROM `carinfo`) as max_id)+1 where id=:id");
$sth->bindParam(':id',$id);
if($sth->execute()){
echo "ok";
}
else{
echo "no";
}
}
?>
<form action="" method="post" >
<input type="submit" name="update" value="update" />
</form>

arta.nasiri
یک شنبه 07 تیر 1394, 16:53 عصر
UPDATE `carinfo` car, ((SELECT max(id) as id FROM `carinfo`) max) SET car.id=max.id+1 where car.id=:id

arta.nasiri
یک شنبه 07 تیر 1394, 23:11 عصر
لزومی نداره number رو حتما AI کنید. میتونید از همون روش sub-select استفاده کنید و خروجی رو تو هر بار که insert میکنید به number بدید.

mamadco
دوشنبه 08 تیر 1394, 20:12 عصر
یه مثال میزنی مرسی :)

mamadco
پنج شنبه 11 تیر 1394, 11:22 صبح
مهندس اینکار چرا ج نمیده ؟

<?php
$user_id = '0';
$sql = $connect->prepare("INSERT INTO `carinfo` (user_id,number) VALUES (:user_id,SELECT MAX(number) + 1 FROM `carinfo`) ");
$sql->execute(array(
":user_id"=>$user_id,
))
?>

arta.nasiri
پنج شنبه 11 تیر 1394, 11:38 صبح
اینو تست کنید ببینید جواب میده
INSERT INTO `carinfo`
SELECT :user_id, (max(number)+1)
FROM `carinfo`;

mamadco
پنج شنبه 11 تیر 1394, 12:18 عصر
(user_id,number) VALUES رو چ کنم ؟

arta.nasiri
پنج شنبه 11 تیر 1394, 19:00 عصر
(user_id,number) VALUES رو چ کنم ؟

دیگه نمیخواد اینو بنویسی