Skocz do zawartości

auto_increment


Rekomendowane odpowiedzi

Witam. Mam pewien problem związany z auto_increment. Mam tabelę w mysql z komentarzami. Liczba rekordów jest zapisywana w zmiennej $ilosc. W tabeli są dwie kolumny: id oraz komentarz. Komentarzy jest 5 i są ponumerowane od 1 do 5. Kasuję jeden komentarz. I tu jest mój problem. Ponieważ zostaje luka. Próbowałem to zrobić dzisiaj przez cały dzień. Chodzi mi o to, że gdy kasuje rekord to wykonać ma się kod:

rekord 1 id=1

rekord 2 id=2

rekord 3 id=3

rekord 4 id=4

Próbowałem to zrobić pętlą for ale nie wiem jak odwołać się do danego rekordu. Proszę o pomoc :crying:

Odnośnik do komentarza
Udostępnij na innych stronach

wyślij zapytanie by zwrócił Ci tablicę dajmy na to 10 komentarzy sortowanych po tym ID i po problemie

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobiłem taki skrypt. Powinien chyba działać ale tak nie jest.

 <?php

$mysql_host = "mysql.cba.pl";
    $mysql_login = "Adamentium";
    $mysql_haslo = "*********";
    $mysql_baza = "thespiderstudio_cba_pl";
    $mysql = mysql_connect($mysql_host, $mysql_login, $mysql_haslo);
    if(!$mysql)
    {
      echo 'Brak połączenia z bazą danych.';
      exit;
    }
    // wybierz właściwą bazę danych
    $mysql = mysql_select_db($mysql_baza);
    if(!$mysql)
    {
      echo 'Błąd wyboru bazy danych.';
      exit;
    }




$zapytanie = mysql_query("SELECT * FROM News");
$ilosc = mysql_num_rows($zapytanie);




$zapytanie = mysql_query("SELECT id FROM News ORDER BY id DESC LIMIT 1");
$rekord = mysql_fetch_array($zapytanie);
$last_id = $rekord['id'];



for($i=$last_id; $i>0; $i-=1)
{
$wynik = mysql_query("SELECT * FROM News WHERE id=$i")
or die('B³±d zapytania');

if(mysql_num_rows($wynik) > 0) {
    while($r = mysql_fetch_assoc($wynik)) {
       $tablica[] = $r['temat'];
    }

}
}

for ($i=0; $i<$last_id; $i++)
{
echo "$tablica[$i]</br>";
}

$tablica2 = array_reverse($tablica);

echo $tablica2[0];
echo $ilosc;
mysql_query("ALTER TABLE News AUTO_INCREMENT = 0;");

for ($i=1; $i>$ilosc; $i+=1)
{
mysql_query("UPDATE News SET id=$i WHERE temat='$tablica2[$i]");     
}



?>

Odnośnik do komentarza
Udostępnij na innych stronach

$zapytanie = mysql_query("SELECT id FROM News ORDER BY id DESC LIMIT 1");

$rekord = mysql_fetch_array($zapytanie);

$last_id = $rekord['id'];

1. nie pobieraj tylkoiwyłącznie kolumny id ale też i treść komentarza, to niepotrzebna będzie źle napisana pętla po tym.

2. czemu limit jest do jednego wiersza? daj tu 10 jeśli chcesz ograniczyć lub bez limitu.

3. ogranicz zapytania do bazy do koniecznego minimum wyłącznie.

Odnośnik do komentarza
Udostępnij na innych stronach

Problem rozwiązałem. Udało mi się zrobić skrypt, który mi resetuje numerację:)

Edit:

Kod wygląda tak:

 <?php

$mysql_host = "mysql.cba.pl";
    $mysql_login = "Adamentium";
    $mysql_haslo = "**********";
    $mysql_baza = "thespiderstudio_cba_pl";
    $mysql = mysql_connect($mysql_host, $mysql_login, $mysql_haslo);
    if(!$mysql)
    {
      echo 'Brak połączenia z bazą danych.';
      exit;
    }
    // wybierz właściwą bazę danych
    $mysql = mysql_select_db($mysql_baza);
    if(!$mysql)
    {
      echo 'Błąd wyboru bazy danych.';
      exit;
    }






$liczbopyt = mysql_query("SELECT * FROM News");
$ilosc = mysql_num_rows($liczbopyt);




$zapytanie = mysql_query("SELECT id FROM News ORDER BY id DESC LIMIT 1");
$rekord = mysql_fetch_array($zapytanie);
$last_id = $rekord['id'];



for($i=$last_id; $i>0; $i-=1)
{
$wynik = mysql_query("SELECT * FROM News WHERE id=$i")
or die('B³±d zapytania');

if(mysql_num_rows($wynik) > 0) {
    while($r = mysql_fetch_assoc($wynik)) {
       $tablica[] = $r['temat'];
    }

}
}

$tablica[]='nic';


$tablica2 = array_reverse($tablica);

$dodaj = $last_id+1;


for ($i=0; $i<$dodaj; $i+=1)
{
mysql_query("UPDATE News SET id='$i' WHERE temat='$tablica2[$i]'");     
}

mysql_query("ALTER TABLE News AUTO_INCREMENT = 0;");


?>

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...