Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP SQL] problem z zapisem danych do tabeli
Forum PHP.pl > Forum > Przedszkole
mattii
mam takie oto tabele:




taki kod który działa dobrze.

  1. [PHP]
  2.  
  3. $query3 = $DBcon->query("SELECT idTrener FROM Trener WHERE User_idUser=".$_SESSION['userSession']."");
  4. $userRow3=$query3->fetch_array();
  5. $idrodzica=$userRow3['idTrener'];
  6.  
  7. $querydd = "INSERT INTO Team (idTeam, nazwa,rocznik, Trener_idTrener) VALUES ('','$nazwa','$rocznik','$idrodzica')";
  8.  
  9. pobierz, plaintext


poniżej taki który nie funkcjonuje

  1. [PHP]
  2.  
  3. $query4 = $DBcon->query("SELECT idTeam, Trener_idTrener FROM Team WHERE Trener_idTrener='$idrodzica'");
  4. $userRow4=$query4->fetch_array();
  5. $idTeam4=$userRow4['idTeam'];
  6. $idTrenerTeam=$userRow4['Trener_idTrener'];
  7. $querydd4 = "INSERT INTO Trener_has_Team (Team_idTeam, Trener_idTrener, Team_Trener_idTrener) VALUES ('','$idrodzica','$idTrenerTeam')";
  8.  
pobierz, plaintext

pierwszy kod dodaje drużynę wpisaną w formularzu - działa ok

drugi ma za zadanie uzupełnić tabele Trener_has_Team...ale jej nie uzupełnia...chociaż wartości dostaje -

tylko, że w przypadku gdy jeden trener doda kilka drużyn - ten kod dostaje zawsze te same wartości - pierwsze z wyników.

jak to poprawić mogę?
nospor
Cytat
drugi ma za zadanie uzupełnić tabele Trener_has_Team...ale jej nie uzupełnia...chociaż wartości dostaje -
Czyli co? nie dodaje sei zaden rekord do bazy? No to wyswietl blad zapytania (zakladam ze w ogole zapyutanie wykonujesz... bo w kodzie tego nie widac)

Cytat
tylko, że w przypadku gdy jeden trener doda kilka drużyn - ten kod dostaje zawsze te same wartości - pierwsze z wyników.
Oczekujesz, ze wywrozymy sobie kod, ktory pobiera dane z formularza? O samym formularzu juz nie wspominajac...
mattii
tak wyglada kod, ktory dotyczy mojego zapytania razem z formularzem.

drużynę do bazy dodaje jak najbardziej.

ale nie uzupełnia tabeli Trener_has_Team....


  1. <?php
  2. require_once 'dbconnect.php';
  3. .
  4. .
  5. .
  6. .
  7. .
  8. .
  9.  
  10.  
  11. $query = $DBcon->query("SELECT * FROM User WHERE idUser=".$_SESSION['userSession']."");
  12. $userRow=$query->fetch_array();
  13.  
  14.  
  15.  
  16. if(isset($_POST['btn-dodajdruzyne'])) {
  17.  
  18.  
  19. $nazwa = strip_tags($_POST['nazwa']);
  20. $rocznik = strip_tags($_POST['rocznik']);
  21.  
  22.  
  23.  
  24. $nazwa = $DBcon->real_escape_string($nazwa);
  25. $rocznik = $DBcon->real_escape_string($rocznik);
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34. if (($nazwa)&&($rocznik) ){
  35.  
  36. $query3 = $DBcon->query("SELECT idTrener FROM Trener WHERE User_idUser=".$_SESSION['userSession']."");
  37. $userRow3=$query3->fetch_array();
  38. $idrodzica=$userRow3['idTrener'];
  39.  
  40. $querydd = "INSERT INTO Team (idTeam, nazwa,rocznik, Trener_idTrener) VALUES ('','$nazwa','$rocznik','$idrodzica')";
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. if ($DBcon->query($querydd))
  49. {
  50. $query4 = $DBcon->query("SELECT * FROM Team WHERE idTeam=(SELECT MAX(`idTeam`) FROM `Team`) && Trener_idTrener='$idrodzica'");
  51. $userRow4=$query4->fetch_array();
  52. $idTeam4=$userRow4['idTeam'];
  53. $idTrenerTeam=$userRow4['Trener_idTrener'];
  54. $querydd4 = "INSERT INTO Trener_has_Team (Team_idTeam, Trener_idTrener, Team_Trener_idTrener) VALUES ('$idTeam4','$idrodzica','$idTrenerTeam')";
  55.  
  56.  
  57.  
  58.  
  59. $msg = "<div class='alert alert-success'>
  60. <span class='glyphicon glyphicon-info-sign'></span> &nbsp; Uzupełniono dane !
  61.  
  62.  
  63. </div>";
  64.  
  65.  
  66.  
  67. }
  68.  
  69.  
  70. else {
  71.  
  72. $blad= mysqli_error($querydd4);
  73.  
  74. $msg = "<div class='alert alert-danger'>
  75. <span class='glyphicon glyphicon-info-sign'></span> &nbsp; Wystąpił błąd podczas uzupełniania danych
  76.  
  77. --$blad
  78. </div>" ;
  79.  
  80.  
  81.  
  82.  
  83.  
  84. }
  85.  
  86.  
  87. }
  88.  
  89. if ((!$nazwa)&&(!$rocznik)){
  90.  
  91. $msg = "<div class='alert alert-danger'>
  92. <span class='glyphicon glyphicon-info-sign'></span> &nbsp; Pola Nazwa i Rocznik są obowiązkowe.
  93. </div>" ;
  94.  
  95. }
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. $DBcon->close();
  106.  
  107. ?>
  108.  
  109. .
  110. .
  111. .
  112. .
  113. .
  114.  
  115.  
  116.  
  117. <div id="login-form">
  118. <form autocomplete="off" method="post">
  119. <div class="col-md-12">
  120. <div class="form-group">
  121. <h2 class="">Uzupełnij dane Drużyny</h2>
  122.  
  123. <?php
  124. if (isset($msg)) {
  125. echo $msg;
  126. }
  127. ?>
  128. </div>
  129. <div class="form-group">
  130. <hr>
  131. </div>
  132. <div class="form-group">
  133.  
  134. <h5>Dane Podstawowe
  135. <p>
  136. <div class="input-group">
  137. <span class="input-group-addon">
  138. <span class="glyphicon glyphicon-user"></span>
  139. </span>
  140. <input class="form-control" type="text" required="" placeholder="Nazwa Drużyny" maxlength="30" name="nazwa">
  141. </div>
  142. </div>
  143. <div class="form-group">
  144. <div class="input-group">
  145. <span class="input-group-addon">
  146. <span class="glyphicon glyphicon-user"></span>
  147.  
  148. </span>
  149. <input class="form-control" type="text" required="" placeholder="Rocznik Drużyny" maxlength="40" name="rocznik">
  150. </div>
  151.  
  152.  
  153. </div>
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168. <div class="form-group">
  169. <hr>
  170. </div>
  171. <div class="form-group">
  172. <button class="btn btn-block btn-primary" name="btn-dodajdruzyne" type="submit">Dodaj Drużynę</button>
  173. </div>
  174. <div class="form-group">
  175.  
  176. </div>
  177.  
  178. </div>
  179. </form>
  180. </div>
  181.  
  182. .
  183. .
  184. .
  185. .
  186. .
  187.  



nospor
Cytat
ale nie uzupełnia tabeli Trener_has_Team....
Przeciez ci napisalem co masz zrobic... jestem swiecie przekonany ze pisalem po polsku

ps: wspomnialem tez, ze zapytanie nalezy WYKONAC a ty jak go nie wykonywales tak nadal nie wykonujesz....
mattii

ok, dodałem

$result4=$DBcon->query($$querydd4);

i teraz zwraca $result4 i insert zaczął dodawać dane do tabeli - ale nie do końca wiem dlaczego ?

czyli teraz fragment, ktory nie działał mam tak, bo w zapytaniu select dodałem aby wybierało max id - czyli ostatnie dodane-bo trener może mieć teoretycznie kilka drużyn:

  1. $query4 = $DBcon->query("SELECT * FROM Team WHERE idTeam=(SELECT MAX(`idTeam`) FROM `Team`) && Trener_idTrener='$idrodzica'");
  2. $userRow4=$query4->fetch_array();
  3. $idTeam4=$userRow4['idTeam'];
  4. $idTrenerTeam=$userRow4['Trener_idTrener'];
  5. $querydd4 = "INSERT INTO Trener_has_Team (Team_idTeam, Trener_idTrener, Team_Trener_idTrener) VALUES ('$idTeam4','$idrodzica','$idTrenerTeam')";
  6.  
  7.  
  8. $result4=$DBcon->query($querydd4);
  9.  
nospor
zglupialem. to co teraz nei dziala?
mattii
działa wszystko jak trzeba

tylko myślałem, że:

$result4=$DBcon->query($querydd4);

zwróci true jeśli zapytanie $querydd4 się wykona a false jeśli nie

ale to nie jest tylko informacja o błędzie w takim razie..bo bez tego ten insert nie działa - dobrze mysle ?
nospor
$DBcon->query()
wykonuje zapytanie
Funkcja ta zwraca true albo false w zaleznosci czy sie powiodlo czy nie.
Czego nie rozumiesz? Tak, jesli nie wywolasz $DBcon->query() to zapytanie nie zostanie wykonane. To tak samo jak z lista zakupow. Co z tego ze napiszesz na kartce. Sama sie nie zrobi. Musisz isc do sklepu i kupic to co jest na kartce. Nie pojdziesz, to lodowka nadal bedzie pusta.
mattii
ok, już jasniej.

czyli skoro mam:

  1. $querydd = "INSERT INTO Team (idTeam, nazwa,rocznik, Trener_idTrener) VALUES ('','$nazwa','$rocznik','$idrodzica')";
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. if ($DBcon->query($querydd))
  10. {
  11. $query4 = $DBcon->query("SELECT * FROM Team WHERE idTeam=(SELECT MAX(`idTeam`) FROM `Team`) && Trener_idTrener='$idrodzica'");
  12. $userRow4=$query4->fetch_array();
  13. $idTeam4=$userRow4['idTeam'];
  14. $idTrenerTeam=$userRow4['Trener_idTrener'];
  15. $querydd4 = "INSERT INTO Trener_has_Team (Team_idTeam, Trener_idTrener, Team_Trener_idTrener) VALUES ('$idTeam4','$idrodzica','$idTrenerTeam')";
  16.  
  17.  



to ten if tak na prawdę za jednym razem wykonuje Inserta i sprawdza czy się wykonał, tak ?
nospor
tak
viking
Podstawy opanowane. Teraz możesz poczytać o wyjątkach i transakcjach. Raczej nie chcesz robić inserta jeśli poprzedni zawiódł.
nospor
Cytat
Raczej nie chcesz robić inserta jeśli poprzedni zawiódł.
No i na chwile obecna przeciez nie robi. Spojrz na zagniezdzenie IFow.
viking
Tak, ale taka forma jest nieczytelna i dobrze żeby powoli wszedł w temat transakcji skoro ma tabele zależne.
nospor
Ja nie mowie ze nie. Mowie tylko, ze twoje zdanie, ktore zacytowalem, jest nieprawdziwe w tej sytuacji i moze wprowadzac matiego w blad.
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.