[php/mysql] dane z formularza jak wyciagnac

0

nauczylam sie wyciagac dane z listy rozwijalnej formularza tak zeby to co zostalo wybrane zapiosac w bazie.

Tylko ze wtedy zczytuje sobie id wybranej opcji. JKest to tylko jedna dana. Natomiast teraz potrzebuje pobrac dane z pol wyboru, gdzie uzytkownik moze kilka opcji zaznaczyc no i nie wiem jak to zrobic.

Mam tak:

 echo '<form method="post" action="index.php?modul=edytuj_produkt&akcja=edytuj_akcja_formularz&id_p='.$_GET['id_p'].'&id_k='.
                                                                        $_GET['id_k'].'&id_r='.$_GET['id_r'].'&id_pr='.$_GET['id_pr'].'" enctype="multipart/form-data">
 <b class="black">Wybierz atrybuty tego produktu</b><br><br>';

$query3 = "select * from `atrybut`";
$result3 = mysql_query($query3);
while($row3 = mysql_fetch_array($result3))
{
	
		echo  '<input type="checkbox" name="atrybut" value="'.$row3['id_a'].'">'.$row3['nazwa_a']  ;
	
}
echo  '<br /><br /><input type="submit" value="Dalej" class="ban"><br><br></form>';

a pozniej tak:

if($_GET['akcja']=="edytuj_akcja_formularz")
{
$query_a = "select * from `atrybut` where `id_a`='".$_POST['atrybut']."'";
$result_a = mysql_query($query_a);
//$row_a = mysql_fetch_array($result_a);
while($row_a = mysql_fetch_array($result_a))
{
$query_a = "insert into `a_p` values ('', '".$row_a['id_a']."', '".$_GET['id_p']."')";
$result_a = mysql_query($query_a);
echo 'atrybut dodany'

no i to mi nie dziala. Prosze o pomoc

0

echo '<input type="checkbox" name="atrybut" value="'.$row3['id_a'].'">'.$row3['nazwa_a'] ;

Pole typu checkbox musi mieć unikatową nazwę.
Załóżmy że masz takie pola:

<input type="checkbox" name="atrybut1" />
<input type="checkbox" name="atrybut2" />
<input type="checkbox" name="atrybut3" />

po wysłaniu formularza odwołujesz się do nich tak: $_POST['atrybut1'], $_POST['atrybut2'], $_POST['atrybut3']

0

może mieć też nazwe "tablicowa" - atrybut[]. W $_POST['atrybut'] masz tablice

0

zrobilam tak:

echo  '<input type="checkbox" name="atrybut[]" value="'.$row3['id_a'].'">'.$row3['nazwa_a']  ;

a pozniej:

$result_atrybut = mysql_query($_POST['atrybut']);
$atrybut = mysql_fetch_array($result_atrybut);

while ($atrybut = mysql_fetch_array($result_atrybut)){

      $query_a = "select * from `atrybut` where `id_a`='".$atrybut."'";
      $result_a = mysql_query($query_a);
      $row_a = mysql_fetch_array($result_a);
      echo $row_a;
}

i chyba cos pochrzanilam., bo nie dziala.

0

$_POST['atrybut'] to tablica. W niej masz wartości z zaznaczonych checkboxów. Czemus takiemu daleko jest do zapytania które można wyslac do mysql.

0

aha, no to jak to zrobic?
musialabym z tej tablicy wyciagac po kolei te dane i pytac mysql by znajdowal dla kazdego elementu z tej tablicy interesujace mnie dane. Czy tak??

tylko jak to napisac za pomoca jezyka PHP. Myslalam ze to wlasnie zrobilam ale jednak nie i nie mam pomyslu :(

0
$res = mysql_query("select * from `atrybut` where `id_a`IN(" . implode(',', $_POST['atrybut']) . ")");
while ( $row_a = mysql_fetch_array($result_a) )
{
      echo $row_a;
}

Ważne tylko, żeby zabezpieczyć $_POST['atrybut'] przed innymi wartościami niż liczby.

0

jejku:) DZIALA dziekuje Ci bardzo !!!!

no to znowu czegos nowego sie dowiedzialam DZIEKI DZIEKI

zabezpiecze POST'a ;) - dzieki za wskazowke

0

isset to dziala tylko z $_GET? bo w takiej wersji mi dziala tylko ze zmienna jest podana w pasku adresu a chcialm teraz zastosowac taki warunek if isset $_POST i nie dziala.

mam tak:

	echo  '<input type="checkbox" name="atrybut[]" value="'.$row3['id_a'].'">'.$row3['nazwa_a']  ;

a pozniej:

if(isset($_POST['atrybut']){...instrukcje...}

i nie dziala wywala blad:

Parse error: syntax error, unexpected '{'

i nie wiem co jest nawias { mam bankowo otwarty i zamkniety do tego warunku wiec... moze zle ta skladnie napisalam

0

Blad nie oznacza, ze masz zle otwarty {, tylko ze byl niespodziewany. Spodziewane natomiast jest zamkniecie drugiego ) ;)

0

aha nooo taaak :) dzieki

0

chcialam teraz zastosowac to implode do textarea. Na zdrowy rozsadek to powinno dzialac bo zasada jest ta sama co w checkbox -> kilka wartosci tekstowych wstawione w tablice a pozniej przeszukiwanie bazy pod wzgledem kazdej z tych wartosci ktore wpisal uzytkownik.

Zatem mam tak:

echo '<textarea cols="30" rows="1" class="ban" name="wartosc[]">'.$row_w['nazwa_w'].'';

a pozniej tak:

$queryJacek = "select count(*) from `wartosc` where `nazwa_w`  IN(" . implode(',', $_POST['wartosc']) . ")";
$resultJacek = mysql_query($queryJacek);
while($rowJacek = mysql_fetch_array($resultJacek)) {
                  if ($rowJacek['count(*)']>0)
                  {
	           echo '<b><br>Wartosc "'.$rowJacek[nazwa_w].'" już istnieje! nie dodalem.</b><br>';
                  }

i to nie dziala wywala mi blad:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
czyli cos w tym zapytaniu jest chyba nie tak, tylko co??

a poza tym, po implode jest nawias i poj.cudzyslow, przecinek, poj.cudzyslow, przecinek i dopiero POST a dlaczego tak jest? patrzalam na php.net manual ale nie bardzo to rozumiem. Gdyby ktos moglby mi to wyjasnic.

i jeszcze mam takie pytanie -> jak sie stopuje dalsze dzialanie porogramu?
co wpisac w or die(); lub po nim, chce zeby przestal dzialac jesli blad zapytania sie pojawi a jesli nie to chce zeby dalej szedl

0

or die(mysql_error()) - i znasz treść błędu. A zapytanie jest błędne, bo dla pól tekstowych IN chyba nie działa. A nawet jeśli, to nie obejmujesz tekstu w "".

0

ok poradzilam sobie :)
mozna ten temat skasowac

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