RQ: скрипт за ъпдейт на цял ред в таблица

bizarre

Registered
Мъчех се преди време да пиша един скрипт но все не става точно както го искам.
Става въпрос за футболно класиране, т. ест колоните в таблицата са следните:
id - ясно какво е (int2)
team - име на отбора(varchar30)
shortname -кратко име на отбора(varchar15)
gamesplayed - изиграните мачове (int2)
wins - победи (int2)
draws - равенства (int2)
loses - загуби (int2)
goalsfor - вкарани голове (int3)
goalsagainst допуснати голове (int3)
points - точки (int3)

за самата форма:
Вариант 1:
В конкретния случай имаме 16 записа (отбора).
Формата се повтаря 16 пъти, като във всяка една в инпутовете излизат текущите стойности на съответните колони, като от team и shortname едното е достатъчно да присъства. изиграните мачове не не нужно да се извеждат, тъй като сбора на загуби, победи и равенства е същия, точките и те, победите*3 + равните ги докарва колкото са.
получава се следното:
id team wins draws loses goalsfor goalsagainst са видни инпутове във формата, като без първите две, другите ще се редактират.

Вариант 2:
ъпдейта да се извършва на 2 стъпки:
1. Избор на отбор за редактиране.
2. Само 1 форма за редактиране, в която след стъпка 1 се извличат текущите данни за съответния отбор.

Това, което имам в момента като вариант не иска да ъпдейтва нищо, а и не дава никаква грешка, за това май е ненужно да го показвам.

Нямате си и представа колко ще съм благодарен ако някой може да ми помогне или още повече - да напише такъв скрипт.
 

mute

Registered
И аз съм мислил да пиша такова класиране и точно по твоя първи метод но ме мързеше ( и измислих един глупав скрипт) невиждам пречина да не става , по късно ще се пробвам и аз да го напиша.
 

bizarre

Registered
mute каза:
И аз съм мислил да пиша такова класиране и точно по твоя първи метод но ме мързеше ( и измислих един глупав скрипт) невиждам пречина да не става , по късно ще се пробвам и аз да го напиша.

Много ги обърквам къде са скрити полета, къде гет, къде пост и накрая... :cry:
Иначе заявката само за извеждането от самите посетители на класирането с всичките му начини и правила на сортиране съм ги направил. Тоя ъпдейт обаче ми изяде здравето. :roll:
 

Admin

Registered
bizarre каза:
id - ясно какво е (int2)
team - име на отбора(varchar30)
shortname -кратко име на отбора(varchar15)
gamesplayed - изиграните мачове (int2)
wins - победи (int2)
draws - равенства (int2)
loses - загуби (int2)
goalsfor - вкарани голове (int3)
goalsagainst допуснати голове (int3)
points - точки (int3)

Код:
1. Избор на отбор за редактиране.
2. Само 1 форма за редактиране, в която след стъпка 1 се извличат текущите данни за съответния отбор.

Горното е практично.
Избираш си отбора който ще редактираш и неговите данни се
появят във формуляр.
След като ги промениш ги пращаш на скрипт който ще промени данните
в таблицата.


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





<?
$id=$_POST['id'];
$wins=$_POST['wins'];
$team=$_POST['team'];
$loses=$_POST['loses'];
$goalsfor=$_POST['goalsfor'];
$goalsagainst=$_POST['goalsagainst'];

$query =
"UPDATE sql_table SET
team='$team', wins='$wins' , draws='$draws',loses='$loses',goalsfor='$goalsfor',
goalsagainst='$goalsagainst'
where id= '$id' ";

?>

 

mute

Registered
според мен ще е по добре всички отбори да се променят с една форма
нещо подобно http://koroliov.ms-dev.com/admin/addots.php?klas=11&vid=a
 

Admin

Registered
mute каза:
според мен ще е по добре всички отбори да се променят с една форма
нещо подобно http://koroliov.ms-dev.com/admin/addots.php?klas=11&vid=a

Може.
Зависи как му е удобно.
 

bizarre

Registered
И двата начина имат предимства и недостатъци, но мисля за сега да е поединично.

admin, можеш ли да ми дадеш малко по-подробен пример когато имаш време кое къде по-точно да сложа.

Имам предвид от скритите полета, през събмитването на формата и самото обновяване. Преди това е ясно кое как и къде. :roll:
 

Admin

Registered
Сетих се, че вече съм го правил.
Едно момче искаше да му напиша скрипт който да му листва таблицата
и да може да редактира всеки ред с някакъв контрол панел:

http://web-tourist.net/forum/viewtopic.php?t=2922

Прочети внимателно темата и ако не може да се справиш сам ми даваш снимка на таблицата (както е направил той) и кои полета искаш
да редактираш.

Трябва да се получи следното.
В една таблица се листват всички редове от таблицата и има бутон "Едит"
срещу всеки ред.
Натискаш го и се отваря съдържанието на всяка клетка в различен
<input> или <textarea> .
Променяш го и натискаш "редактирай".
Следващия скрипт ъпдейтва информацията и готово.
Нали това искаш?
 

bizarre

Registered
admin, във въпросната тема, от файла opennews.php:
Код:
<?php
require ("config.php");
$id= $_GET['id'] ;

mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * from komentari where id like '$id' ";
$result=mysql_query($query);
mysql_close();

$text=mysql_result($result,0,"text");
?>

<html >
 <head>
 <title>Open news</title>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</head>
<body>
<form method="post" action="editnews.php">
<INPUT TYPE="hidden" SELECT NAME="id" VALUE="<?echo $id?>" >
TEXT<br/>
<TEXTAREA name="editnews" COLS=90 ROWS=40>
 <? echo $text?>
</TEXTAREA>
<INPUT TYPE=SUBMIT VALUE="Edit!">
</FORM>
</body>

Каква е задачата на този ред: $text=mysql_result($result,0,"text");?

Останалото кажи речи го пригодих, но тук ми дава грешка:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 4

То няма как да е иначе, след като не знам за какво е и с какво да го заменя?

П.П
ЧНГ :)


П.П.2
Махнал съм скрипта за разделяне на резултатите на страници, но там няма нещо, което да касае редатирането, нали?
 

Admin

Registered
<?php
require ("config.php");
$id= $_GET['id'] ;
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * from komentari where id='$id' ";
$result=mysql_query($query);
mysql_close();

$text=mysql_result($result,0,"text");
?>


<html >
<head>
<title>Open news</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</head>
<body>
<form method="post" action="editnews.php">
<INPUT TYPE="hidden" SELECT NAME="id" VALUE="<?echo $id?>" >
TEXT<br/>
<TEXTAREA name="editnews" COLS=90 ROWS=40>
<? echo $text?>
</TEXTAREA>
<INPUT TYPE=SUBMIT VALUE="Edit!">
</FORM>
</body>



Заявката трябва да върне масив.
В случая един ред.

"SELECT * from komentari where id='$id' "; в случая трябва да върне реда с id = $id .

Щом ти дава грешка значи, че такъв ред не съществува .
Провери $_GET['id'] каква стойност има.
 

bizarre

Registered
Ами в грешката нали пише, че е 0 - ...Unable to jump to row 0... т. ест не взима стойност от listnews.php :?

Също така, в моя случай трябва да се изведат няколко колони, не в масив а поотделно.

ЕДИТ
В url-a ид си взима стойността, но по-нататък изчезва някъде безследно

ЕДИТ2:

Оправих го.
В предната рдакция на поста, като написах за url-a и се усетих :)
При мен не е id а teamid, което обаче не го бях сменил в url-a като го оправих и работи :)

Сега остава да изкарам всички необходими редове и ако има нещо ще пиша (дано не се наложи) :) :?:
 

bizarre

Registered
admin, поредния проблем (последен):
Листването на отборите работи,
При отваряне на някой за редактиране, стойностите на променливите се предават, но като променя някоя, новата не се записва в бд.
Т. ест не предавам новата стойност.
Ето ги двата файла:
формата (opennews.php):
Код:
<?php
require ("config.php");
$teamid= $_GET['teamid'];
$eng_team = $GET_['eng_team'];
$wins=$_GET['wins'];
$draws=$_GET['draws'];
$loses=$_GET['loses'];
$goalsfor=$_GET['goalsfor'];
$goalsagainst=$_GET['goalsagainst'];

$gamesplayed=$wins+$draws+$loses;
$points=$wins*3+$draws;

mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * from $table where teamid like '$teamid' ";
$result=mysql_query($query);
mysql_close();

$eng_team=mysql_result($result,0,"eng_team");
$wins=mysql_result($result,0,"wins");
$draws=mysql_result($result,0,"draws");
$loses=mysql_result($result,0,"loses");
$goalsfor=mysql_result($result,0,"goalsfor");

?>

<html >
 <head>
 <title>Open team</title>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</head>
<body>
<form method="post" action="editnews.php">
<INPUT TYPE="hidden" NAME="teamid" VALUE="<?echo $teamid ?>" >
Eng_team: <INPUT name="eng_team" value="<? echo $eng_team ?>" /><br />
Wins: <INPUT name="wins" value="<? echo $wins ?>" /><br />
Draws: <INPUT name="draws" value="<? echo $draws ?>" /><br />
Loses: <INPUT name="loses" value="<? echo $loses ?>" /><br />
Goals for: <INPUT name="goalsfor" value="<? echo $goalsfor ?>" /><br />
Goals against: <INPUT name="goalsagainst" value="<? echo $goalsagainst ?>" /><br />
Points: <INPUT name="points" value="<? echo $points ?>" /><br />
Games played: <INPUT name="gamesplayed" value="<? echo $gamesplayed ?>" /><br />
<INPUT TYPE=SUBMIT VALUE="обнови">
</FORM>
</body>

и заявката към БД (editnews.php):
Код:
<?

require ("config.php");

$teamid=$_POST['teamid'];
$eng_team=$_POST['eng_team'];
$wins=$_POST['wins'];
$draws=$_POST['draws'];
$loses=$_POST['loses'];
$goalsfor=$_POST['goalsfor'];
$goalsagainst=$_POST['goalsagainst'];
$gamesplayed=$wins + $draws + $loses;
$points=$win * 3 + $draws;

mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");

$query="UPDATE $table SET  gamesplayed='$gamesplayed' , wins='$wins' , draws='$draws' , loses='$loses' , points='$points' , goalsfor='$goalsfor' , goalsagainst='$goalsagainst' , where teamid='$teamid' ";

mysql_query($query);
mysql_close();

?>

<html >
 <head>
 <title>Edit team</title>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</head>
<body>
Отборът е редактиран.<br/>
<a href="listnews.php">Обратно</a>

<?
echo $teamid; $eng_team; $wins; $draws; $loses; $goalsfor; $goalsagainst; $gamesplayed; $points;
?>

</body>

Ехото накрая вади само $teamid; :(
 

Admin

Registered
Код:
 echo $teamid; $eng_team; $wins; $draws; $loses; $goalsfor; $goalsagainst; $gamesplayed; $points;

Пробвай така:
Код:
echo $teamid.$eng_team.$wins.$draws.$loses.$goalsfor.$goalsagainst.
$gamesplayed.$points;

Провери ли дали записва в базата данни?
 

Admin

Registered
$query="UPDATE $table SET gamesplayed='$gamesplayed' , wins='$wins' , draws='$draws' , loses='$loses' , points='$points' , goalsfor='$goalsfor' , goalsagainst='$goalsagainst' , where teamid='$teamid' ";

Махни тази , запетайка да видя какво ще стане.
 

bizarre

Registered
Лелеееее :D махнах я и работи! :)
Само сбора на изиграните мачове - $gamesplayed=$wins+$draws+$loses; и смятането на точките - $points = $wins * 3 + $draws; не са както трябва. И двете взимат само стойността на $wins :shock:

ЕДИТ:
Оправих го :)
Не стига, че съм го сложил на сто места това събиране, а и няма кой да вземе стойностите от предната форма :)
 

Горе