בעיה

Mr Boggy Man

New member
בעיה

מדוע הקוד הבא לא עובד היטב?:
if ($_GET['reremode'] == 'delete') { $id = $_GET['id']; $id2 = $id+1; $sql = "DELETE FROM cat WHERE id=$id"; mysql_query($sql); $sql = "SELECT * FROM cat WHERE id>$id2"; $rs = mysql_query($sql); while($blah = mysql_fetch_array($rs)) { $newid = $blah['id']-1; $sql = "UPDATE cat SET id=".$newid." WHERE id=".$blah['id'].";"; mysql_query($sql); } echo "Delete work fine."; }​
הבעיה היא שהוא לא תמיד מוריד את הid, ולפעמים הוא מוריד בצורה לא נכונה ושטויות....מה עושים?
 

orenphp

New member
לדעתי תנסה....

לדעתי השורה:
$sql = "SELECT * FROM cat WHERE id>$id2";​
אמורה להיות:
$sql = "SELECT * FROM cat WHERE id>$id";​
כי לפי הבנתי אתה רוצה לשלוף את כל הקטגוריות מעל(חדשה יותר ברמת ID) זו שנמחקה. אחרי זה, הייתי מוותר על $newid ורושם:
$sql = "UPDATE cat SET id=id-1 WHERE id=".$blah['id'].";";​
מה שעשית פה לדעתי הוא לא ממש טוב, בד"כ id יוגדר כauto_increment ולך לא אכפת אם הסדר של הID-ים הוא: 1,2,3,4 או 1,4,6,19 מאחר ואתה שולף את השאילתא ועובר בצורה של לולאה. * אין צורך ל"תקן" את הסדר של הID, זה מאוד מיותר. מקווה שזה פתר את הבעיה ושלקחת את ההערה שלי בחשבון.
 
למעלה