ugrás a tartalomhoz

MYSQL rendezési probléma

cszlak · 2011. Jún. 16. (Cs), 15.20

foreach($_POST['torles'] as $kepnev_torles) { //ha kiválasztotta

			$nevtorles = $filedir."/".$kepnev_torles;
			
					 
			 if(unlink($nevtorles) )	 {// fájl törlés
			 
			 /******Adatbázis törlés*********/
			 				
   $configurl = "config.php";
    require($configurl);	
		
	 mysql_select_db($mysql["database"]);
	 
	 $sql = "DELETE FROM kep WHERE kepnev = '$kepnev_torles' ORDER BY id ASC"; 
	 
	 $sql2 = "ALTER TABLE kep ORDER BY ID";
														
     if(@mysql_query($sql) and @mysql_query($sql2)){
	 	 											
		$uzenet = "Adat törlés, és rendezés megtörtént. ";
				
	 }
	  else{  mysql_query($sql) or $uzenet="SQL: ".$sql." ,<br /> Hibaüzenet: '.mysql_error()"; }


A problémám az hogy a törlés megtörténik de szeretném sorba is rendezni őket.
Így:
0 kép.jpg
1 kep1.jpg
2 kép2.jpg
(törlés 1 kep1.jpg)

Utána így kellene:
0 kép.jpg
1 kép2.jpg

Előre is köszönöm a segítséget.
 
1

ORDER BY

Poetro · 2011. Jún. 16. (Cs), 16.20
Az ORDER BY a SELECT típusú lekérdezéseknél hasznos. A többinél leginkább felesleges, vagy haszontalan. Nem teljesen mindegy, hogy milyen sorrendben törlöd ki a táblából a sorokat, ha mindet kitörlöd? Az ALTER TABLE meg nem erre való. Legjobb, ha raksz egy valamilyen index-et az id meződre, majd a lekérdezések alkalmával rendezel. Maximum ha saját fájl alapú adatbázismotort fejlesztenél lenne szükséged rendezésre, de a MySQL ezt alapból megoldja neked.
Az így kellene dolgot pedig nem értem, mivel semmi utalás nincs arra, hogy hogyan van most megvalósítva.
2

Bocsánat ha félreértehtő voltam.

cszlak · 2011. Jún. 16. (Cs), 21.14
Bocsánat ha félreértehtő voltam.

Az ALTER TABLE -t megoldást gondoltam a rendezésre, ami NEM a törlést, hanem a törlés után ott maradt adatokat rendezné.
Legalábis ezt olvastam róla, de ha ez nem erre való akkor hogyan lehet ezt megoldani?

Ahogy írtam.

Így:
id név
0 kép.jpg
1 kep1.jpg
2 kép2.jpg

(törlés 1 kep1.jpg) itt van a törlés.

Utána így kellene rendezni a megmaradt adatokat:
id név
0 kép.jpg
1 kép2.jpg
3

SELECT * FROM table ORDER BY

Poetro · 2011. Jún. 16. (Cs), 22.52
SELECT * FROM table ORDER BY id
4

Ez csak sorrendben olvas be.

cszlak · 2011. Jún. 17. (P), 12.11
Értelek, hogy sorrendben olvas be de ettől nem változik meg az id értéke.

Írtál előtte valami indexeléses megoldást.
Azt ki tudnád fejteni bőveben?
5

mindegy

Poetro · 2011. Jún. 17. (P), 12.13
Nem teljesen mindegy neked, hogy mi az id értéke? Ha megváltoztatod, azzal az adatbázisod konzisztenciája változik meg, ezért nem ajánlom annak piszkálását. Egyáltalán miért szeretnéd módosítani az id-t?
7

Igazad van, másfelől próbálkozok.

cszlak · 2011. Jún. 17. (P), 14.29
Van egy dinamikusan létrejövő form ablakokat tartalmazó rész, aminek a sorszámozását, akartam ID-val meghatározni, de inkább létrehoztam az adatbázisban egy új mezőt, aminek ablak nevet adtam.
A dinamikusan létrejövő form ablakok mindegyike tartalmaz egy feliratot, egy kép SELECT-et, egy title cimkét, és egy mentés gombot.
Hogyan tudom megkapni, hogy melyik gombot nyomták meg?

A gomb próbálkozásom:

$ablak_szam = 0;
 $ablakok = mysql_query("SELECT * FROM kep");
  while($ablak = mysql_fetch_array( $ablakok  )) {
   $kepid = $ablak['ID'];
  $title = $ablak['keptitle'];
  $kepurl = $ablak['kepurl'];
  $felirat = $ablak['kepfelirat'];
  $ablak_szam++;

.....

<input type="submit" value="Mentés <?php echo $ablak_szam; ?>" name="<?php echo $ablak_szam; ?>" style="height:25px;float:right;width:150px;">
A gomb adatának átvétele

$ablakid = $_POST[$ablak_szam]; // mentés gomb
Ami tudom, hogy nem jó, mert a folyamat végén lévő értéket kapja így meg nem az aktuális gombét. Kipróbáltam így is:

$ablakid = $_POST['$ablak_szam']; // mentés gomb
Így viszont semmit nem kapot értékül a $ablakid.
8

Így megkapom...de

cszlak · 2011. Jún. 17. (P), 14.33

	<input type="submit" value="<?php echo $ablak_szam; ?>" name="ablak_szam" style="height:25px;float:right;width:150px;">

$ablakid = $_POST['ablak_szam']; // mentés gomb

De a gombra a számot írja, nem hogy mentés.
Ez meg lehet valahogy oldani?
9

Esetleg ha megcserélnéd a

H.Z. v2 · 2011. Jún. 17. (P), 16.46
Esetleg ha megcserélnéd a submit gombnál a value és a name értékét...
Ugyanis a value értéke kerül a gombra. A name-hez írt string alapján tudsz hivatkozni rá a $_GET, $_POST, $_REQUEST tömbökben.

Ajánlom olvasnivalónak a www.w3schools.com oldalt!
10

Értelek, de..

cszlak · 2011. Jún. 17. (P), 17.48
Értelek, és működik is, de hogyan tudnám meg valami dinamikus megoldással, mert ez

 if($_POST['1']){$ablakid = 1 ;}
 if($_POST['2']){$ablakid = 2 ;}
nem lenne valami célszerű.
Van erre valami megoldás?
11

<input type="submit"

Poetro · 2011. Jún. 17. (P), 19.15
<input type="submit" value="Mentés <?php echo $ablak_szam; ?>" name="ablak_szam[<?php echo $ablak_szam; ?>]" style="height:25px;float:right;width:150px;" />
Ekkor már csak a $_POST['ablak_szam'] változót kell figyelni.
$ablakid = NULL;
if (isset($_POST['ablak_szam']) && is_array($_POST['ablak_szam'])) {
  reset($_POST['ablak_szam'])
  $ablakid = key($_POST['ablak_szam']);
}
12

Szuper

cszlak · 2011. Jún. 17. (P), 19.41
Köszönöm szépen a segítséget.
6

Nem is fog megváltozni, ha az

H.Z. v2 · 2011. Jún. 17. (P), 12.22
Nem is fog megváltozni, ha az id egy oszlop az adatbázisodból.
Esetleg így:

set @i=0;
select @i:=@i+1 as id,kepnev from kep;

Igaz, ez 1-től kezdi a sorszámozást és az adatbázisban tárolt értékeket nem módosítja. :)