После того, как вы пытаетесь понять, как это работает, я решил попросить несколько советов, как я могу это сделать.Проблема с обновлением таблицы с массивами
Позвольте мне начать с того, что у меня нет опыта в этом. Я только что собрал некоторую логику, посмотрев на код, и я почти закончил с моим проектом, за исключением этой проблемы, с которой я пришел.
Это оригинальный код (который я все еще использую другое место в коде, кажется, он работает отлично).
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<form action="kurv.php?action=update" method="post" id="cart">';
$output[] = '<table>';
foreach ($contents as $id=>$qty) {
$sql = 'SELECT * FROM varetabel WHERE varenr = '.$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td><a href="kurv.php?action=delete&varenr='.$id.'" class="r">Slet</a></td>';
$output[] = '<td>'.$varenavn.'</td>';
$output[] = '<td>DKK '.$pris.'</td>';
$output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$output[] = '<td>DKK '.($pris * $qty).'</td>';
$total += $pris * $qty;
$output[] = '</tr>';
$_SESSION['items'] = $contents; // Antal forskellige varer.
$_SESSION['qty'] = $qty;
}
$output[] = '</table>';
$output[] = '<p>Pris total: <strong>DKK '.$total.'</strong></p>';
$output[] = '<div><button type="submit">Opdatér kurv</button></div>';
$output[] = '</form>';
} else {
$output[] = '<p>Kurven er tom.</p>';
}
return join('',$output);
}
глобальный $ дб подключается к БД и такой, не Бигги, и тогда эта функция от включаемого:
function fetch() {
if ($row=mysql_fetch_array($this->query,MYSQL_ASSOC)) {
return $row;
} else if ($this->size() > 0) {
mysql_data_seek($this->query,0);
return false;
} else {
return false;
}
}
Теперь им пытаются использовать тот же метод, чтобы взять массивы из этого кода и поместить их в мою базу данных с этим кодом:
session_start();
global $db;
$items = $_SESSION['items'];
$cart = $_SESSION['cart'];
$qty = $_SESSION['qty'];
if(isset($_SESSION['email'])) { // IF LOGGED IN
$sql = mysql_query("SELECT * FROM antalstabel ORDER BY ordrenr DESC LIMIT 1") or die(mysql_error());
$row = mysql_fetch_assoc($sql);
$maxordrenr = $row['ordrenr'];
$nextnumber = $maxordrenr + 1;
$antal = count($items); // COUNTS DIFFERENT ITEMS IN CART.
$maxplusantal = $maxordrenr + $antal;
$varenrplaceholder = 0;
for ($i = $maxordrenr; $i <= $maxplusantal; $i++) {
$sql = mysql_query("INSERT INTO antalstabel (ordrenr, varenr) VALUES ('$nextnumber','$varenrplaceholder')") or die(mysql_error());
$nextnumber--;
$varenrplaceholder++;
}
$varenrplaceholder = 0;
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
foreach ($contents as $id=>$qty) {
$sql = 'UPDATE antalstabel SET varenr = '.$id.' and antal = '.$qty.' WHERE ordrenr = '.$nextnumber.' and varenr = '.$varenrplaceholder.'';
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$varenrplaceholder++;
}
}
Но это d oes, похоже, не работает должным образом, код действительно работает, но он не обновляет таблицу со значениями массивов.
Я совершенно не прав или могу помочь мне с этой проблемой, я знаю, что много спросить.
мой собственный код создает X строк с одинаковым идентификатором в зависимости от того, сколько разных элементов в корзине, я пытаюсь обновить те существующие строки, которые я только что создал, со значениями, которые, как я полагаю, все еще находятся в массивах функции showCart()
.
Спасибо заранее
который ошибкой вы получаете? –
Предупреждение: mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean задан в /mysql.class.php в строке 151 Предупреждение: mysql_num_rows() ожидает, что параметр 1 будет ресурсом, логическим значением в /mysql.class.php on line 167 Предупреждение: extract() ожидает, что параметр 1 является массивом, логическим значением которого является /bestil.php в строке 48 –
то, что вы хотите извлечь из запроса $ $ result = $ db-> ($ sql); $ row = $ result-> fetch(); 'вы обновляете поле, которое не извлекает записи –