[php] jak wyciągnąć dane z tablicy

0

Witam,
Mam problem otóż w formularzu mam wybór select multiple, do którego dane są pobierane z bazy danych po id i następnie jeśli użytkownik wybierze kilka opcji zapisuje mi sie w bazie danych jako ARRAY. Chciałbym zrobić tak iż id które jest pobierane z bazy do formularza też będzie wstawiane w inna tabele w tej samej baze jako pobierane id a nie tablica. Bardzo bym prosił o pomoc.

<select name="powiadomic[]" multiple>
<?


$conn = mysql_connect($host, $user, $password);
$wp= mysql_select_db($dbName, $conn) or die("Nie znaleziono bazy danych");

       
       $query = "SELECT * FROM zagrozenia ORDER BY nazwa";
       $result = mysql_query($query)
              or die ("Zapytanie nieudane!");


       while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) 
       {
              echo "<option value=". $line["id"] .">". $line["nazwa"] ."</option>\n";
       }

?>
</select>
0

Skoro przesyłasz jako tablicę to się odwołuj jak do tablicy - $_POST/GET['powiadomic'][numer]

0
nav napisał(a)

Skoro przesyłasz jako tablicę to się odwołuj jak do tablicy - $_POST/GET['powiadomic'][numer]

Możesz mi powiedzieć jak mam to zrobić bo mi coś nie wychodzi. Wpisuję zapytanie tam gdzie ma pobierać id, żeby przypisywalo do uzytkownika to co zaznaczyl jadnak mi nic nie wychodzi :/

0
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
       {
              echo "<option value="id['.$line["id"].']. ">". $line["nazwa"] ."</option>\n";
       }

I potem kiedy wyciągasz to z np. POST'a

$id = $_POST['id'];

foreach($id as $klucz){
$ins_id = mysql_query("insert into tabela (id) values ('$id[$klucz]')");
}
0
Wykrywacz napisał(a)
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
       {
              echo "<option value="id['.$line["id"].']. ">". $line["nazwa"] ."</option>\n";
       }

I potem kiedy wyciągasz to z np. POST'a

$id = $_POST['id'];

foreach($id as $klucz){
$ins_id = mysql_query("insert into tabela (id) values ('$id[$klucz]')");
}

Nie wiem co jest grane. pisze tak jak ty mi podpowiedziales i nie wiem jak to zrobic. Dane z formularza przesyła mi jako:

Array ( [nazwa] => hhh [email] => hhhhh [powiadomic] => Array ( [0] => 18 [1] => 25 [2] => 5 [3] => 24 [4] => 11 ) [tel_praca] => 789789784564 [tel_priv] => 456456456 )

Załączam poniżej plik, gdzie dane z formularza są przesyłane za pomocą metody POST:

<?

include "config.inc.php"; /* odczyt kofiguracji bazy danych */

  $polacz = mysql_connect($host, $user, $password) or die(mysql_error());
  $db = mysql_select_db($dbName, $polacz) or die(mysql_error());

$query = "SELECT COUNT(*) FROM dane WHERE nazwa='$nazwa' && tel_priv='$tel_priv' && email='$email'";
$result = mysql_query($query);
$isUser = mysql_fetch_row($result);
if ($isUser[0] == 1) {
    print($nazwa. ' istnieje w bazie<br />');
} else {
    $query= "INSERT INTO dane(nazwa, email, powiadomic, tel_praca, tel_priv) VALUES('$_POST[nazwa]','$_POST[email]', '$_POST[tel_praca]','$_POST[tel_priv]');";


print_r($_POST);
$result = mysql_query($query);
if($result) { echo "Osoba została pomyślnie zapisana do bazy danych"; }
}
$id = $_POST['powiadomic'];
foreach($id as $klucz){
$ins_id = mysql_query("INSERT INTO powiadomic VALUES ('$id[$klucz]')");
?>

Poniżej struktura Mysql:

TABELA DANE DO KTOREJ MAJA SIE ZAPISYWAC ID Z TABELI ZAGROZENIA, a dokladnie do kolumny POWIADOMIC:

CREATE TABLE `dane` (
  `id` int(5) NOT NULL auto_increment,
  `nazwa` varchar(80) NOT NULL default '',
  `email` varchar(80) NOT NULL default '',
  `powiadomic` int(255) NOT NULL default '0',
  `tel_praca` int(10) NOT NULL default '0',
  `tel_priv` int(10) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=47 ;


TABELA ZAGROZENIA Z KTOREJ DANE SA POBIERANE DO FORMULARZA:

CREATE TABLE `zagrozenia` (
  `id` int(5) NOT NULL auto_increment,
  `nazwa` varchar(80) NOT NULL default '',
  `opis` varchar(80) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=38 ;
0

Nie rozumiem co miałaby robić linia

$id = $_POST['powiadomic'];
foreach($id as $klucz){
$ins_id = mysql_query("INSERT INTO powiadomic VALUES ('$id[$klucz]')");
?>

Rozumiem, że pętla przyjmuje tablicę

$_POST['powiadomic'];
, ale przy zapisywaniu do tableli powiadomic wpisuje kolejne wartosci, ale jak wyglada ta tabela. Jeśli to ma działać to należy do tablicy zapisać id takie jakie będize przy tej wiadomości w tablicy dane do tablicy powiadomic oraz kolejne wartości z tablicy. Czyli w tabeli będziesz miał kilka wierszy o tym samym id, ale różnych wartościach.

$id = $_POST['id_z_tabeli_data'];
foreach($_POST['powiadomic'] as $klucz){
$ins_id = mysql_query("INSERT INTO powiadomic VALUES ('$id','$id[$klucz]')");
?>

Nie wiem jak dokładnie ma wyglądać tabela powiadomic, ale w tym wypadku mialaby dwa pola id, które jest identyczne jak id przy odpowiednim wierszy z tabeli dane oraz kolejne wartodsci z tablicy $_POST['powiadomic']

Inna propozycja to użycie funkcji

serialize
która serialuje tablicę i zapisujesz ja wtedy do bazy, a po odczytaniu danych używasz
unserialize
i z powrotem masz tablicę do której zwyczajnie możesz się odwoływać, lub przetwarzać w pętli foreach();

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