ugrás a tartalomhoz

MYSQL rendezési probléma

cszlak · 2011. Jún. 16. (Cs), 15.20
  1. foreach($_POST['torles'as $kepnev_torles) { //ha kiválasztotta  
  2.   
  3.             $nevtorles = $filedir."/".$kepnev_torles;  
  4.               
  5.                        
  6.              if(unlink($nevtorles) )     {// fájl törlés  
  7.                
  8.              /******Adatbázis törlés*********/  
  9.                               
  10.    $configurl = "config.php";  
  11.     require($configurl);      
  12.           
  13.      mysql_select_db($mysql["database"]);  
  14.        
  15.      $sql = "DELETE FROM kep WHERE kepnev = '$kepnev_torles' ORDER BY id ASC";   
  16.        
  17.      $sql2 = "ALTER TABLE kep ORDER BY ID";  
  18.                                                           
  19.      if(@mysql_query($sqland @mysql_query($sql2)){  
  20.                                                       
  21.         $uzenet = "Adat törlés, és rendezés megtörtént. ";  
  22.                   
  23.      }  
  24.       else{  mysql_query($sqlor $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:
  1. $ablak_szam = 0;  
  2.  $ablakok = mysql_query("SELECT * FROM kep");  
  3.   while($ablak = mysql_fetch_array( $ablakok  )) {  
  4.    $kepid = $ablak['ID'];  
  5.   $title = $ablak['keptitle'];  
  6.   $kepurl = $ablak['kepurl'];  
  7.   $felirat = $ablak['kepfelirat'];  
  8.   $ablak_szam++;  
  9.   
  10. .....  
  11.   
  12. <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
  1. $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:
  1. $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
  1. <input type="submit" value="<?php echo $ablak_szam; ?>" name="ablak_szam" style="height:25px;float:right;width:150px;">  
  2.   
  3. 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
  1. if($_POST['1']){$ablakid = 1 ;}  
  2. 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
  1. <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.
  1. $ablakid = NULL;  
  2. if (isset($_POST['ablak_szam']) && is_array($_POST['ablak_szam'])) {  
  3.   reset($_POST['ablak_szam'])  
  4.   $ablakid = key($_POST['ablak_szam']);  
  5. }  
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. :)