Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Insert select values i php. [php] [mysql]
Muadib
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 9.11.2005

Ostrzeżenie: (0%)
-----


Mam właściwe problem logiczny i co sie z tym wiąże problem z konstrukcja zapytania mysql do inserta :<

Mam 3 tabelki o kolumnach klucze są nadto wyraźne tongue.gif

1 id_stopien stopien
1 marynarz
2 oficer

2 id_data data
1 data
2 data

3 id_stanowisko id_stopien id_data stanowisko

kod do radio:

  1. <?php
  2. $drop = 'SELECT stopien.stopien FROM stopien';
  3. $wyn_drop= mysql_query($drop) or die ('Zapytanie zakończone niepowodzeniem: ' . mysql_error());
  4.  
  5. while ($lineDrop = mysql_fetch_array($wyn_drop, MYSQL_ASSOC))
  6. {
  7.  foreach ($lineDrop as $col_value_drop)
  8.  {
  9.  switch($col_value_drop)
  10.  {
  11.  case '!Inne':
  12.  echo "  <input type='radio' name=".$checked." value=".$col_value_drop." />"." ".$col_value_drop;
  13.  default:
  14.  echo "  <input type='radio' name=".$checked." value=".$col_value_drop." onchange='return znik(this)' />"." ".$col_value_drop;
  15.  }
  16.  }
  17. }
  18. ?>


formularz
  1. <?php
  2. echo '<p>'."<input type='text' name='stanowisko' value='' />".' '."Stanowisko"."</p>";
  3. echo '<p>'."<input type='text' name='data' value='' />".' '."Data"."</p>";
  4. echo "<input type='submit' name='potwierdz' value='Zatwierdź' />";
  5. ?>


wiem ze najpierw wysyłam date do swojej tabelki z formularza ale jak skonstruować inserta

Więc tak tabelka nr 1 ma dane które sie nie zmieniają nie usuwaj i nie dodaje sie do nich nic
tabelka nr 2 poprzez formularz i insert dodaje datę
i tabelka nr 3 wszystkie te elementy prezentuje, i tu tkwi problem formularz prezentuje sie następująco

tabelka 1 jest elementem formularza i za pomocą php wyciągam go z bazy i robie na radio

Chodzi mi o to jak zrobić insert do tabelki 3 skoro $_post z radio oraz text boxa dodającego jest przesyłany w formie wartości tekstowej nie wartości id_stopien a to muszę umieścić



Wychędożyłem takie zapytanie:

  1. $ins_stanowisko = 'INSERT INTO stanowisko(id_data, id_pozycja, id_stopien, id_nazwa_jednostki, referencja, specyfikacja)
  2. VALUES
  3. (SELECT id_data FROM data_ogl WHERE data_ogl.data_ogl ='.$_POST['pozycja'].',
  4. SELECT id_stopien FROM stopien WHERE stopien.stopien = '.$_POST['checked'].', '.$referencje.$opis.')';
  5. $wyn_stanowisko= mysql_query($ins_stanowisko) OR die ('Zapytanie zakończone niepowodzeniem: ' . mysql_error());
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
PawelC
post
Post #2





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Przykładowo masz formularz:
  1. <form method="POST" action="costam.php">
  2. Przykładowy nick:
  3. <input type="text" name="nick">
  4. <input type="submit" value="dodaj">
  5. </form>

to zapytanie dodające nick do bazy powinno tak wyglądać:
  1. <?php
  2. $nick=$_POST['nick'];
  3. $dodaj="insert into nazwa_tabeli(`id`,`nick`) values('','$nick');
  4. if(mysql_query($dodaj))
  5. {print "Dodano nick do bazy";
  6. }
  7. else
  8. {print "B&#322;ąd podczas dodawania";
  9. }
  10. ?>

A ty masz jakoś pomieszane tam, poza tym po co walisz select w values? Tam powinny być wartości a nie wybieranie czegoś z bazy
Wklej kod całego formularza z którego chcesz dodać dane do bazy, oraz cały kod który jest odpowiedzialny za dodanie danych do bazy, bo jak na razie u Ciebie wychodzi jakaś mieszanina.

Ten post edytował ExPlOiT 10.03.2008, 12:26:53
Go to the top of the page
+Quote Post
Muadib
post
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 9.11.2005

Ostrzeżenie: (0%)
-----


hmm Może za dużo na raz biggrin.gif po koleji jeszcze raz:

ograniczę sie do prostej rzeczy

Powiedzmy 3 tabelki InnoDB

id_stopien | stopien
1 | stopien
2 | stopien

id_data | data
1 | data
2 | data

id_stanowisko | id_stopien | id_data|opis

Relacje cascade OnUpdate i On delete

formularz:

  1. <form action = 'form_op.php' method = 'post'>
  2. <p><input type='text' name='stopien' value=''" />Stopien</p>
  3. <p><input type='text' name='data' value=''" />Data</p>
  4. <p><textarea name='opis'></textarea>Opis</p>
  5. <input type='submit' name='potwierdz' value='Zatwierdź' />
  6. </form>


plik form_op.php dodaje do bazy dane

najpierw do tablki datowej:

  1. <?php
  2. $ins_data = "INSERT INTO data(data) VALUES('".$_POST['data']."')";
  3. $wyn_data= mysql_query($ins_data) or die ('Zapytanie zakończone niepowodzeniem: ' . mysql_error());
  4. ?>


potem do tableki stopnia

  1. <?php
  2. $ins_stopien = "INSERT INTO stopien(stopien) VALUES('".$_POST['stopien']."')";
  3. $wyn_stopien = mysql_query($ins_pozycja) or die ('Zapytanie zakończone niepowodzeniem: ' . mysql_error());
  4. ?>


teraz chodzi o to jak dodać dane do tabeli numer 3

i jeszcze wartości kluczy obcych w tabelce 3 są ustawione na not null i sie zastanawiam czy powinno być na null.

chodzi o przydział kluczy z dwóch powyższych tabelek to znaczy ze za pomoca klucza ktory jest insertowany do tabelki nr 3 pobierana jest z niej odpowiednia wartosc dla klucza numer 3 biggrin.gif

hmm moje próby kończą sie zawsze błedem

Cannot add or update a child row: a foreign key constraint fails

Ten post edytował Muadib 11.03.2008, 11:37:00
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 19:59