Deusald (Adamentium) Opublikowano 9 Października 2010 Udostępnij Opublikowano 9 Października 2010 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 Więcej opcji udostępniania...
Markuz Opublikowano 9 Października 2010 Udostępnij Opublikowano 9 Października 2010 Po co tak robić? Nie ma potrzeby aby po usunięciu ID innych rekordów się zmieniało. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Deusald (Adamentium) Opublikowano 9 Października 2010 Autor Udostępnij Opublikowano 9 Października 2010 Chcę tak zrobić ponieważ mam skrypt, który tworzy komentarze na podstawie tego numeru. I gdy jest luka to tworzy się puste pole. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 9 Października 2010 Filar Społeczności Udostępnij Opublikowano 9 Października 2010 To popraw skrypt, a nie id w bazie danych, bo to co chcesz osiągnąć jest nielogiczne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Października 2010 Udostępnij Opublikowano 9 Października 2010 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 Więcej opcji udostępniania...
Deusald (Adamentium) Opublikowano 9 Października 2010 Autor Udostępnij Opublikowano 9 Października 2010 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 Więcej opcji udostępniania...
PsichiX Opublikowano 9 Października 2010 Udostępnij Opublikowano 9 Października 2010 $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 Więcej opcji udostępniania...
Deusald (Adamentium) Opublikowano 9 Października 2010 Autor Udostępnij Opublikowano 9 Października 2010 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę