Witam! Mam pewien haczyk którego nie mogę rozgryźć ;) Jestem tu nowy więc proszę o wyrozumiałość...
Mam tabelę gdzie zaznaczam chceckboxy a następnie klikam submita zmien kolor...
<form method="POST" action="mod_box.php" class="form-inline" role="form">
<span style="font-size:14px;">Zmień status: </span>
</div>
<select class="form-control" name="statusall_ex2" data-toggle="tooltip" data-placement="bottom" title="Wybierz status!" data-trigger="hover">
<option value="st1">Wpuszczony</option>
<option value="st2">Bez rampy</option>
<option value="st3">Nie wjechał</option>
<option value="st4">Odesłana</option>
</select>
</div>
<div class="form-group">
<input name="statusall_ex" type="submit" value="Zmień" class="btn btn-warning">
</div>
<input name="idc[]" value="$idc" type="checkbox" style="width: 20px; height: 20px;">
</form>
Przechodzi do strony mod_box.php gdzie znajduje się kod:
require_once "connect.php";
if (!$polaczenie = mysql_connect($host,$db_login,$db_pass,$db_name)) {
echo 'Nie można nawiązać połączenia z bazą danych';
exit;
}else
{
if (!mysql_select_db('awizacja', $polaczenie)) {
echo 'Nie można wybrać bazy danych';
exit;
}
$idc=$_POST['idc'];
$idsSql = implode(', ', $idc);
if($result = mysql_query("SELECT * FROM appt WHERE id IN ($idsSql)", $polaczenie))
{
$ilu_userow=mysql_num_rows ($result);
if($ilu_userow>0)
{
switch($_POST['statusall_ex2'])
{
// Wpuszczony
case "st1":
{
$kodowanie=mysql_query('SET NAMES \'utf8\'');
while($wiersz=mysql_fetch_assoc($result))
{
$idc=$_POST['idc'];
$idsSql = implode(', ', $idc);
$id=$wiersz['id'];
$awizacja=$wiersz['awizacja'];
$data_awizacja=$wiersz['data_awizacja'];
$godz_awiz=$wiersz['godz_awiz'];
$godz_pod=$wiersz['godz_pod'];
$zamowienie=$wiersz['zamowienie'];
$nazwa=$wiersz['nazwa'];
$kanal=$wiersz['kanal'];
$spedycja=$wiersz['spedycja'];
$linii=$wiersz['linii'];
$palety=$wiersz['palety'];
$kartony=$wiersz['kartony'];
$rampa=$wiersz['rampa'];
$komentarz=$wiersz['komentarz'];
$artykul=$wiersz['artykul'];
$il_zamowien=$wiersz['il_zamowien'];
$nr_naczepy=$wiersz['nr_naczepy'];
$tel_kierowcy=$wiersz['tel_kierowcy'];
$status='Wpuszczony';
$color='#0099FF';
$color2='#0099FF';
$kod=$wiersz['kod'];
$login=$_SESSION['login'];
$data_mod=date("d-m-Y H:i:s");
$zadanie='Change';
}
foreach($idc as $result)
{
if($result = mysql_query("INSERT INTO appt_mod VALUES(NULL,'$id','$awizacja','$data_awizacja','$godz_awiz','$godz_pod','$zamowienie','$nazwa','$kanal','$spedycja','$linii','$palety','$kartony','$rampa','$komentarz','$artykul','$il_zamowien','$nr_naczepy','$tel_kierowcy','$status','$color','$color2','$kod','$login','$data_mod','$zadanie')", $polaczenie))
{
}else
{
echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
echo 'Błąd MySQL: ' . mysql_error();
exit;
}
}
} break;
}
}
}else
{
echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
echo 'Błąd MySQL: ' . mysql_error();
exit;
}
mysql_close($polaczenie);
}
Chodzi oto żeby dodać rekordy zaznaczone poprzez chceckboxy do innej tabeli, po uprzednim wyciągnięciu ich z bazy.. Zaznaczam 4 chceckboxy i te 4 zaznaczone wiersze chcę dodać do do innej tabeli appt_mod. Wiersze się dodają 4 ale te same, tzn. jeden wiersz dodaje się 4 razy z tymi samymi wartościami ;) Jak zmienię kod z wersją pętle foreach umieszczę wewnątrz pętli while kod poniżej:
require_once "connect.php";
if (!$polaczenie = mysql_connect($host,$db_login,$db_pass,$db_name)) {
echo 'Nie można nawiązać połączenia z bazą danych';
exit;
}else
{
if (!mysql_select_db('awizacja', $polaczenie)) {
echo 'Nie można wybrać bazy danych';
exit;
}
$idc=$_POST['idc'];
$idsSql = implode(', ', $idc);
if($result = mysql_query("SELECT * FROM appt WHERE id IN ($idsSql)", $polaczenie))
{
$ilu_userow=mysql_num_rows ($result);
if($ilu_userow>0)
{
switch($_POST['statusall_ex2'])
{
// Wpuszczony
case "st1":
{
$kodowanie=mysql_query('SET NAMES \'utf8\'');
while($wiersz=mysql_fetch_assoc($result))
{
$idc=$_POST['idc'];
$idsSql = implode(', ', $idc);
$id=$wiersz['id'];
$awizacja=$wiersz['awizacja'];
$data_awizacja=$wiersz['data_awizacja'];
$godz_awiz=$wiersz['godz_awiz'];
$godz_pod=$wiersz['godz_pod'];
$zamowienie=$wiersz['zamowienie'];
$nazwa=$wiersz['nazwa'];
$kanal=$wiersz['kanal'];
$spedycja=$wiersz['spedycja'];
$linii=$wiersz['linii'];
$palety=$wiersz['palety'];
$kartony=$wiersz['kartony'];
$rampa=$wiersz['rampa'];
$komentarz=$wiersz['komentarz'];
$artykul=$wiersz['artykul'];
$il_zamowien=$wiersz['il_zamowien'];
$nr_naczepy=$wiersz['nr_naczepy'];
$tel_kierowcy=$wiersz['tel_kierowcy'];
$status='Wpuszczony';
$color='#0099FF';
$color2='#0099FF';
$kod=$wiersz['kod'];
$login=$_SESSION['login'];
$data_mod=date("d-m-Y H:i:s");
$zadanie='Change';
foreach($idc as $result)
{
if($result = mysql_query("INSERT INTO appt_mod VALUES(NULL,'$id','$awizacja','$data_awizacja','$godz_awiz','$godz_pod','$zamowienie','$nazwa','$kanal','$spedycja','$linii','$palety','$kartony','$rampa','$komentarz','$artykul','$il_zamowien','$nr_naczepy','$tel_kierowcy','$status','$color','$color2','$kod','$login','$data_mod','$zadanie')", $polaczenie))
{
}else
{
echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
echo 'Błąd MySQL: ' . mysql_error();
exit;
}
}
}
} break;
}
}
}else
{
echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
echo 'Błąd MySQL: ' . mysql_error();
exit;
}
mysql_close($polaczenie);
}
To jest ta sama sytuacja dodają się 4 te same wiersze przy czym wyskakuje błąd : Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\WebServ\httpd\mod_box.php on line 50
Już nie wiem gdzie może być problem. Dane przesyłane do tablicy $idc zaczytują się prawidłowo po zaznaczeniu chceckboxów bo sprawdziłem print_r($_POST[idc]);
Jak na razie nikt nie umiał pomóc mi rozwiązać tego problemu... Więc uśmiecham się do Was forowicze.