Въпрос за база данни !

morkov4o

Registered
Здравейте ! Мисля над един въпрос и нещо не ми се отдава да го измисля .. Моля за помощ от вас.Та такам ,проблема е следния :
да кайем имам една формичка от която пращам към ДБ-то и нали записвам и в ДБ-то . Там имам колонка id нали номерата
1
2
3
4
..
и тн. Искам при записване в базата данни когато стигне до 10 .. примерно да се трие :) Или да се слага инфо на тва място ... Малко не мога да го обясня но ето пример да кажем имаме в базата:
1. Иван
2. Христо
3. Владо
4. Николай
И като ги изкарвам да кажем с desc нали ми ги изкарва наобратно :) искам като добавя нови редове да трие от старите смисъл винаги да си седят 4 ... ох дано да сте ме разбрали :С
 
morkov4o каза:
Здравейте ! Мисля над един въпрос и нещо не ми се отдава да го измисля .. Моля за помощ от вас.Та такам ,проблема е следния :
да кайем имам една формичка от която пращам към ДБ-то и нали записвам и в ДБ-то . Там имам колонка id нали номерата
1
2
3
4
..
и тн. Искам при записване в базата данни когато стигне до 10 .. примерно да се трие :) Или да се слага инфо на тва място ... Малко не мога да го обясня но ето пример да кажем имаме в базата:
1. Иван
2. Христо
3. Владо
4. Николай
И като ги изкарвам да кажем с desc нали ми ги изкарва наобратно :) искам като добавя нови редове да трие от старите смисъл винаги да си седят 4 ... ох дано да сте ме разбрали :С

искаш да се показват последните 4 без значение от ИД-то?
или искаш ИД-тата да са винаги от 1 до 4?
 
Ами пак ще обясня:) Да кажем имам форма ,която праща имена към ДБ-то.
В ДБ-то имам колонка с ID и Imena: и там са ми да кажем записани:

1. Иван
2. Жоро
3. Владо
4. Тишо

Като ги изкарвам с desc и limit 4 да кажем ми изкарва Тишо Владо Жоро Иван . Искам когато Id-то в ДБ-то е стигнало до 4 ,при следващо пращане от формата : да кажем пращам Ицо и става:

4. Ицо
3. Тишо
2. Владо
1. Жоро

Дано си ме разбрал :)
 
morkov4o каза:
Ами пак ще обясня:) Да кажем имам форма ,която праща имена към ДБ-то.
В ДБ-то имам колонка с ID и Imena: и там са ми да кажем записани:

1. Иван
2. Жоро
3. Владо
4. Тишо

Като ги изкарвам с desc и limit 4 да кажем ми изкарва Тишо Владо Жоро Иван . Искам когато Id-то в ДБ-то е стигнало до 4 ,при следващо пращане от формата : да кажем пращам Ицо и става:

4. Ицо
3. Тишо
2. Владо
1. Жоро

Дано си ме разбрал :)

Май не те разбрах. Пак питам трябва ли ИД-тата да са винаги от 1 до 4?!!
Ако отговора е да, по-добре кажи какво искаш да направиш, защото съм сигурен, че има по-лесен вариант ;)
 
Иска да записва от 1 до 4 и като се запише 4 да започне да ъпдейтва 1 като 2,3,4 си стоят, а не да продължава с 5,6 и т.н. След това ъпдейтва пак като 1 си стои, но се презаписва 2, а 3 и 4 си стоят. После пак ъпдейтва, този път се записва върху 3, а 1,2 и 4 си стоят. И като презапише и 4 пак започва от начало.

1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
...
 
Да! Можеш ли да ми кажеш как ще стане ?
 
база данни ти е:
id
ime
chislo

да знаеш, че не е тестван.

Код:
<form action="" method="post" name="form">
<input name="ime" type="text" size="20"><br>
<input type="submit" name="Submit" value="Добави">
</form>
<?php
if($_POST['Submit']){
//server connfigure 
$server = "localhost"; 
$dbusername = "ime"; 
$dbpassword = "parola"; 
$db_name = "db"; 
$table = "testova";
//server connfigure 

mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни"); 
@mysql_select_db($db_name) or die("Грешна база данни"); 
$query="SELECT * FROM '$table' ORDER BY `chislo` ASC"; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 

mysql_close(); 

$i=0; 
while ($i < $num) { 

$id=mysql_result($result,$i,"id"); 
 
$i++; 
}

if($num < "4")
{
$ime = $_POST['ime'];  

mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни"); 
@mysql_select_db($db_name) or die("Грешна база данни"); 
$query = "INSERT INTO '$table' ( `id` , `ime` , `chislo`) 
VALUES ( 
'NULL', '$ime', '1' 
)"; 
$ok = mysql_query($query); 
if($ok){ 
echo "Записано"; 
}else{ 
echo "Възникна грешка"; 
} 
}
else
{
$ime = $_POST['ime'];

mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни"); 
@mysql_select_db($db_name) or die("Грешна база данни"); 
mysql_query ("UPDATE '$table' SET ime='$ime', chislo=chislo+1 WHERE id='$id'"); 
$ok = mysql_query($query); 
if(!$ok){ 
echo "Обновено"; 
}else{ 
echo "Възникна грешка"; 
} 
}}
?>

Значи първо се прави заявка към базата, да се броят редовете. ако са по малко от 4, ще направи нов запис. ако са повече ще обнови вече съществуващ, които е с наи малко chislo, което се променя, нараства с 1 след всяка промяна.
 
Супер ! Точка от мен 8)
 
баси, всяка тема завърша с пост от рода на "дадох ти точка" :lol: :lol:

@jooorooo мисля, че той не иска точно това, което си му дал... Погледни му втория пост...

Трябва и полето `chislo` на старите записи да се упдейтне с `1`
И понеже трябва да се барат няколко реда, първия въпрос, който си зададох е колко хора ще го ползват този файл? Ако са повече от един е хубаво да се ползват транзакции. Затова и по-горе го питах за какво ще се ползва. Макар, че в случая може да се мине и без транзакции...


баси колко сложно го мислех...
преработих твоя код до това:

Код:
<form action="" method="post" name="form"> 
<input name="ime" type="text" size="20"><br> 
<input type="submit" name="Submit" value="Добави"> 
</form> 
<?php 
if($_POST['Submit']){ 
//server connfigure 
$server = "localhost"; 
$dbusername = "ime"; 
$dbpassword = "parola"; 
$db_name = "db"; 
$table = "testova"; 
//end server connfigure 

	mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни"); 
	mysql_select_db($db_name) or die("Грешна база данни"); 
	//броим редовете
	$query="SELECT count(id) as `num_rows` FROM '$table'"; 
	$result = mysql_query($query);
	$row = mysql_fetch_array($result);
	$num_rows = $row['num_rows'];
	//ако имаме по-малко от 4 реда, добавяме нов ред....
	if($num_rows < 4){
		$num_rows = $num_rows+1;
		$query = "INSERT INTO '$table' (`ime` , `chislo`) VALUES ('$ime', '$num_rows')"; 
		$ok = mysql_query($query); 
	}
	else {
	//ако num_rows не е по-малко от 4, то значи редовете са 4 :)
		//упдейтваме всички полета `chislo`, като има намаляме стойността с еденица
		$query="UPDATE '$table' set chislo=chislo-1";
		$ok = mysql_query($query); 
		//в единия ред `chislo` ще е равно на нула. Той не ни трябва и вместо да го трием и добавяме нов ред, направо го ъпдейтваме с нужните ни данни - иметото и `chislo` = 4
		$query="UPDATE '$table' set ime = '$ime', chislo='4' where chislo = '0'";
		$ok = mysql_query($query); 
	}
}
?>

само не съм сложил проверките за изпълнените заявки и не съм го тествал!
 
Ще го ползвам за чат бокс.
 

Back
Горе