2009-05-20 2 views
0

Привет всем, я хочу изменить значение в таблице (в базе данных mysql) с помощью PHP-кода. У меня есть строка в таблице, называемая «одобренная», и есть два варианта: «0» (не одобрен) и «1» (одобрено). Я создаю сценарий, который изменит человека, одобренного от «0» до «1».Изменить значение в базе данных Mysql через PHP

Например, существует другое значение, называемое «позиция», а «утвержденное» устанавливает «положение» как утвержденное или не утвержденное (если оно установлено 1 или 0). Если это неправильно сформулировано, я постараюсь сделать это более ясным.

Я думаю, мой вопрос: могу ли я сделать индивидуальное значение «позиции», чтобы его «утвержденные» данные переключались с 0 на 1 и наоборот.

Спасибо!

EDIT/UPDATE:

вот информация от свалки для этой конкретной таблицы:

CREATE TABLE `positions` (
    `posID` int(10) unsigned NOT NULL auto_increment, 
    `postitle` varchar(500) NOT NULL default '', 
    `addtitletext` varchar(35) default NULL, 
    `description` text NOT NULL, 
    `print_website` enum('1','2') NOT NULL default '1', 
    `userID` tinyint(4) unsigned NOT NULL default '0', 
    `submitted_on` datetime NOT NULL default '0000-00-00 00:00:00', 
    `approved_date` date NOT NULL default '0000-00-00', 
    `approved` enum('0','1') NOT NULL default '0', 
    PRIMARY KEY (`posID`) 
) ENGINE=MyISAM AUTO_INCREMENT=464 DEFAULT CHARSET=latin1; 

LOCK TABLES `positions` WRITE; 
/*!40000 ALTER TABLE `positions` DISABLE KEYS */; 
INSERT INTO `positions` (`posID`,`postitle`,`addtitletext`,`description`,`print_website`,`userID`,`submitted_on`,`approved_date`,`approved`) 
VALUES 

и я пытался изменить этот код здесь, чтобы сделать его изменить с не утвержден Одобрено (или наоборот)

<? 
include('secure.php'); 
include('config.php'); 

if (isset($_POST['submitted'])) { 
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 
$sql = "UPDATE `positions` SET `approved` = '{$_POST['approved']}'"; 
mysql_query($sql) or die(mysql_error()); 
echo (mysql_affected_rows()) ? "Edited row.<br />" : "Nothing changed. <br />"; 
echo "<a href='list.php'>Back To Listing</a>"; 
} 
$row = mysql_fetch_array (mysql_query("SELECT * FROM `positions` WHERE `posID` = '$posID' ")); 




?> 

<form action='' method='POST'> 
<p><b>Approved:</b><br /><input type='text' name='approved' value='<?= stripslashes($row['approved']) ?>' /> 
<p><input type='submit' value='Edit Row' /><input type='hidden' value='1' name='submitted' /> 
</form> 

Если это помогает, удивительным, но жаль, если это более запутанной ха-ха.

EDIT: Вот что у меня есть, но получаю пустую страницу (ошибки я знаю)

<? 
include('secure.php'); 
include('config.php'); 
if (isset($_GET['posID'])) { 
$posID = (int) $_GET['posID']; 
if (isset($_POST['submitted'])) { 
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 
$sql = "UPDATE `positions` SET `approved` = '{$_POST['approved']}' WHERE `posID` = '$posID'"; 
mysql_query($sql) or die(mysql_error()); 
echo (mysql_affected_rows()) ? "Edited row.<br />" : "Nothing changed. <br />"; 
echo "<a href='list.php'>Back To Listing</a>"; 
} 

<form action='' method='POST'> 
<p><b>Approved:</b><br /><input type='text' name='approved' value='<?= stripslashes($row['approved']) ?>' /> 
<p><input type='submit' value='Edit Row' /><input type='hidden' value='1' name='submitted' /> 
</form> 
<? } ?> 
+0

Не описывайте свою таблицу, просто покажите ее определение. – Gleb

+0

blank page = источник полностью пуст или ничего не отображается? –

+0

Просто ничего не отображается, бывает, когда я забываю точки с запятой и т. Д. –

ответ

4

Я не совсем уверен, что вы пытаетесь сделать, потому что это звучит, как утвержден столбец, а не строки, в таблице. Если вы хотите сделать что-то вроде следующего:

function toggle_approved($position_id) { 
$query = "UPDATE positions SET approved = !approved WHERE posID = '$position_id'"; 
// execute the query here with your mysql_query() call 
} 

Я предполагаю, что у вас есть какой-то способ выполнения MySQL запросов, если не видите this link. Также убедитесь, что вы используете имена таблиц и имена полей.

+1

использовать одиночный знак равенства '=' для сравнения, а не '==' – duckyflip

+0

oops, typo. Спасибо, что поймал это. –

1

Да. вы могли бы сделать что-то вроде:

UPDATE table_name 
SET approved=value 
WHERE position=some_value 

Хорошее место для изучения SQL и PHP является w3schools: http://www.w3schools.com/sql/default.asp

+0

Я бы сказал, что ваш упомянутый сайт является одним из худших сайтов для изучения PHP и других. Если что-нибудь, см. W3fools.com – Lucio

0

Фигурные, что я делаю неправильно! Вот мой код, на самом деле это было что-то на предыдущей странице, которое я забыл исправить (глупая небольшая ошибка).

<? 
include('secure.php'); 
include('config.php'); 

if (isset($_GET['posID'])) { 
$posID = (int) $_GET['posID']; 
if (isset($_POST['submitted'])) { 
$sql = "UPDATE `positions` SET `approved` = '{$_POST['approved']}' WHERE `posID` = '$posID'"; 
mysql_query($sql) or die(mysql_error()); 
echo (mysql_affected_rows()) ? "Edited row.<br />" : "Nothing changed. <br />"; 
echo "<a href='list.php'>Back To Listing</a>"; 
} 
$row = mysql_fetch_array (mysql_query("SELECT `approve` FROM `positions` WHERE `posID` = '$posID' ")); 
//echo "<p><b>Department</p></b>"; 
//$query="SELECT deptname,deptID FROM depts"; 

//$result = mysql_query ($query); 
//echo "<select name=depts value=''>Department</option>"; 

//while($nt=mysql_fetch_array($result)){ 
//echo "<option value=$nt[deptID]>$nt[deptname]</option>"; 
/* Option values are added by looping through the array */ 
//} 
//echo "</select>"; 
//`department` = '{$_POST['department']}' 

?> 

<form action='' method='POST'> 
<p><b>Approved:</b><br /><input type='text' name='approved' value='<?= stripslashes($row['approved']) ?>' /> 
<p><input type='submit' value='Edit Row' /><input type='hidden' value='1' name='submitted' /> 
</form> 

<? } ?> 
Смежные вопросы