Dodawanie do bazy z listy

0

Witam.

Mam pewną listę wielokrotnego wyboru (korzystam z select2) i chciałbym, aby po zaznaczeniu dane z tej listy umieścić w bazie danych, dodatkowo jeszcze tylko dla użytkownika, który jest zalogowany. Udało mi się w pewnym sensie, ale jak wybiorę sobie 3 rzeczy z listy, to i tak w bazie mam tylko jedną.

0

No to musisz zmodyfikować to pewne zapytanie w taki pewien sposób, żeby zapisywało więcej niż jedną pozycję. Zamieść kod bo bez tego to wróżenie z fusów

0

Formularz:

Dane z bazy pobiera tutaj:

$res=mysql_query("SELECT * FROM pieczywo");
while ($row=mysql_fetch_array($res)) {
echo '<option value="'.$row['Rodzaj'].'">'.$row['Rodzaj'].'</option>';
<form method="post">
		<label for="id_label_multiple">
			<select name="select1[]" class="js-example-basic-multiple js-example-responsive" multiple="multiple" style="width:75%">
				<optgroup class="op1" label="Pieczywo">
				<?php pieczywo();?>
				</optgroup>
				<optgroup class="op2" label="Nabiał">
				<?php nabial();?>
				</optgroup>
				<optgroup class="op2" label="Mięso">
				<?php mieso();?>
				</optgroup>
				<optgroup class="op2" label="Grzyby">
				<?php grzyby();?>
				</optgroup>
			</select>
		</label>
		</div><!--end content-->
	</div><!--span9-->
	<input type="submit" name="submit" value="Dodaj" id="submit" tabindex="5"/>
</form> 

Na razie mam zrobione zapytanie z update, ale chciałbym wrzucało do bazy własnie wybrane opcje, bo później jeszcze chcę do tego dorobić datę.

<?php
if(isset($_POST['select1'])) {
header("Content-Type: text/plain");
$select = trim(mysql_real_escape_string(htmlspecialchars($_POST['select1'])));
$select2 = trim(mysql_real_escape_string(htmlspecialchars($_POST['select2'])));
$select3 = trim(mysql_real_escape_string(htmlspecialchars($_POST['select3'])));
foreach ($_POST['select1'] as $selectedOption)
	$res = mysql_query("UPDATE `users` SET `breakfast` = '$selectedOption' WHERE user_id='{$_SESSION['user']}'");
}
?>
0

W pętli nadpisujesz wartość w tym samym polu. Jakiego wyniku oczekiwałeś? Jaką wartość powinno mieć pole breakfast?

0

W polu breakfast mają być przechowywane dane, które użytkownik sobie wybierzę z listy, czyli jakieś tam produkty na śniadanie. Najlepiej żeby przechowywało same id produktów, chociaż na razie przechowuje tekst. Jak to rozwiązać, żeby dodatkowo jeszcze dodawało tylko do zalogowanego użytkownika?

0

W polu breakfast mają być przechowywane dane, które użytkownik sobie wybierzę z listy, czyli jakieś tam produkty na śniadanie.

No dobrze, ale w jaki sposób? Masz jedną wartość i chcesz tam wcisnąć kilka. Możesz to zrobić np. tak:

$breakfast = implode(',', $_POST['select1']);
$res = mysql_query("UPDATE `users` SET `breakfast` = '$breakfast' WHERE user_id='{$_SESSION['user']}'");

Będziesz miał wartości po przecinku.

Najlepiej żeby przechowywało same id produktów, chociaż na razie przechowuje tekst.

No to musisz podać id produktu jako atrybut value w <option>

Jak to rozwiązać, żeby dodatkowo jeszcze dodawało tylko do zalogowanego użytkownika?

Nie rozumiem pytania. Masz w zapytaniu: WHERE user_id='{$_SESSION['user']}. To ci tego nie załatwia?

1 użytkowników online, w tym zalogowanych: 0, gości: 1