ugrás a tartalomhoz

DELETE + a törölt elem id-je

csman007 · 2010. Ápr. 22. (Cs), 12.00
Sziasztok!
Hogyan lehetne azt megoldani hogy ha kitörlök egy sort az adattáblából, a kitörölt elem id-jét megjegyezni? autoincrementes, azért kellene, mert annak a helyére szeretnék másik adatot rakni.
 
1

Re: DELETE + a törölt elem id-je

Schmidi · 2010. Ápr. 22. (Cs), 12.45
Miért szeretnél egy auto incrementes táblába ugyanolyan ID-val más adatot beszúrni?
Ebből lehetnek elég csúnya kavarodások, ha más táblák erre az ID-ra hivatkoznak.

Van valami kifejezett indokod rá, vagy csak az hogy ne maradjanak "üres" helyek az ID sorozatban? Mert ha csak az utóbbi, akkor ne foglalkozz vele.
8

"Ebből lehetnek elég csúnya

saxus · 2010. Ápr. 27. (K), 22.29
"Ebből lehetnek elég csúnya kavarodások, ha más táblák erre az ID-ra hivatkoznak."
ALTER TABLE tabla 
ADD CONSTRAINT tabla_reftabla_fkey
FOREIGN key helymezo 
REFERENCES reftabla (reftablaid)
ON UPDATE CASCADE ON DELETE RESTRICT;
Értem én, hogy sokaknál nem divat, de attól még egy normális adatbázisban nem kellene, hogy probléma legyen.
2

update?

duplabe · 2010. Ápr. 22. (Cs), 13.05
miert nem update-eled?
3

kép

csman007 · 2010. Ápr. 22. (Cs), 13.21
mert a tábla egy flash katalogus része.
3 oszlop van az id melyik katalogus és a kép neve, a flash pedig a kép id-je alapján, rakja be a képeket a katalogusba, és úgy lenne jó ha olyan sorba vannak a képek ahogy katalógus, mellesleg, megoldottam, és köszi azért a segítségeket. Annyi volt hogy a törölt rekordnak az id-jét get-el átadtam és az alapján futott le a mysql kód.
Ez a törlés kódja:

if($Process == "DelPage")
	{
		$qry = "select * from mag_pages where id='".$PageID."'";
		$db->execute_sql($qry,$result,$error_msg);
		if($error_msg <> "")
		{
			echo $error_msg;
		}
		else
		{	
			while($row = mysql_fetch_object($result))
			{
				$tmp_name = $uploaddir.$row->file_name;
				//unset($tmp_name);
				@unlink($tmp_name);
				$qry_delete_page = "delete from mag_pages where id='".$PageID."' ";
				$db->execute_sql($qry_delete_page,$result_delete_page,$error_msg);
				$qry_delete_page = "delete from page_markers where mag_no='".$row->mag_no_id."' and page_no='".$PageID."' ";
				$db->execute_sql($qry_delete_page,$result_delete_page,$error_msg);
				$qry_delete_page = "delete from page_notes where mag_no='".$row->mag_no_id."' and page_no='".$PageID."' ";
				$db->execute_sql($qry_delete_page,$result_delete_page,$error_msg);

			}
			
			if($error_msg <> "")
			{
				echo $error_msg;
			}
			else
			{
				?>
				<script language="javascript" type="text/javascript">
				document.location.href = "EditSubCat.php?SubCatID=<?php echo $SubCatID; ?>&deleted=<?php echo $PageID ?>";
				</script>
				<?php
			}

		}
	}
Ez a feltöltés kódja:

<form name="EditSubCat" id="EditSubCat" method="post" action="?Process=Update&SubCatID=<?php echo $CatID; 
  if (isset($_GET['deleted'])) {
  	$last = $_GET['deleted'];
  	echo "&del=".$last;
  } ?>" enctype="multipart/form-data">
ez pedig a mysql:

if (isset($_GET['del'])) { 
$last = $_GET['del'];
$qry = "insert into mag_pages(id,mag_no_id,file_name)
values('".$last."','".$CatID."','".$uploadFileName."')";
}
else {
$qry = "insert into mag_pages(mag_no_id,file_name)
values('".$CatID."','".$uploadFileName."')";
}		
4

REPLACE()

janoszen · 2010. Ápr. 22. (Cs), 19.17
Az SQL parancs amit keresel: REPLACE. Ettől függetlenül elég rossz tervezésre utal ha ilyeneket kényszerülsz használni.
5

Nem én csináltam a progit igy

csman007 · 2010. Ápr. 22. (Cs), 21.49
Nem én csináltam a progit igy lett véve ez egy php mysql flash lapozó, szóval én csak javítgatni tudom a php, mysql részét de ennyi.
6

Nem állított

janoszen · 2010. Ápr. 22. (Cs), 23.13
Senki nem állította hogy Te vagy a hibás. Csupán a tényt konstatáltam. :)
7

nem is

csman007 · 2010. Ápr. 23. (P), 19.50
Nem is azért mondtam :).