Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Insert select values i php. [php] [mysql]
Forum PHP.pl > Forum > PHP
Muadib
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());
PawelC
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.
Muadib
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.