Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z implode
Forum PHP.pl > Forum > Przedszkole
ryba303
Mam tabelkę "Wykładowcy" w niej:
wykladowca_id PK
Imie,
Nazwisko,
Hasło,
przedmiot_id FK

Wykładowca może uczyć kilka przedmiotów, ale nie chciałem tworzyć kilka,kilkunastu rekordów praktycznie z tymi samymi danymi tylko tak żeby pole przedmiot_id przechowywało id przedmiotów, który obecnie uczy wykładowca.


  1. <?php
  2. // po wybraniu wykładowcy i kliknieciu Dodaj_2 wyświetla wykładowca i lista id przedmiotów których uczy, przynajmniej powinna  
  3. if(isset($_POST['Dodaj_2'])){
  4.    if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  5.        $wynik = mysql_query("SELECT * FROM wykladowcy where wykladowca_id=$wyk")
  6.        or die("Błąd w zapytaniu!");
  7.        mysql_close();
  8.    }
  9.    else echo "Nie mogę połączyć się z bazą danych!";
  10.    while($rekord = mysql_fetch_array($wynik)) {
  11.        echo "
  12.        <table border=\"2\" align=\"left\"  cfont-size=\"1px\" width=\"200\">
  13.      <tr>
  14.      <td><b>".stripslashes($rekord['imie'])."</b></td>
  15.      <td><b>".stripslashes($rekord['nazwisko'])."</b></td>
  16.      <td><b>".stripslashes($rekord['przedmiot_id'])."</b></td>
  17.      <td><a href=\"?co=edytuj&id=$wykladowca_id\" >edytuj</a></td>
  18.      </table>";
  19.    }
  20. }
  21.  
  22. //po kliknieciu 'edytuj' powinna wyswietlic sie lista przedmiotów a po kliknieciu popraw powinno dodac do bazy id przedmiotów
  23. // ktore  zostaly wybrane
  24. if ($_POST['co'] == 'popraw') {
  25.    $query = "UPDATE wykladowcy SET przedmiot_id= '".implode(", ", $_POST['przedmiot_id'])."' WHERE wykladowca_id = '".$_POST['id']."';";
  26.    $wynik = mysql_query($query);
  27.  
  28.    } elseif  ($_GET['co'] == 'edytuj') {
  29.    $query = "SELECT * FROM wykladowcy WHERE wykladowca_id = '".$_GET['id']."';";
  30.    $wynik = mysql_query($query);
  31.    $rekord = mysql_fetch_assoc($wynik);
  32.    $wykladowca_id = $rekord['wykladowca_id'];
  33.  
  34. <form action=\"wykladowca.php\"  method=\"POST\">
  35. <table border=\"1\" align=\"center\">
  36. <tr>
  37. <td>
  38. <b>Wybierz Wykładowce:</b><br>
  39. <input type=\"hidden\" name=\"co\" value=\"popraw\">
  40. <input type=\"hidden\" name=\"id\" value=\"".$wykladowca_id."\">
  41. <select  name=\"przedmiot_id[]\" size=\"30\" multiple>
  42. ";
  43. $wynik = mysql_query ("SELECT  przedmiot_id, nazwa_p FROM przedmioty ");
  44. while ($rekord = mysql_fetch_assoc($wynik)) {
  45.   echo '<option value="'.$rekord['przedmiot_id'].'"';
  46.    if (in_array($rekord['przedmiot_id'], $przedmiot_id))
  47.  echo'>'.$rekord['nazwa_p'].'</option>';
  48.    }
  49. echo "</select>
  50. </td>
  51. </td>
  52. </tr>
  53. <tr><td align=\"center\" colspan=\"2\">
  54. <input type=\"submit\"  value=\"Popraw\">
  55. </tr></td>
  56. </table>
  57. </form>";
  58. ?>


Problem w tym, że gdy klikam 'edytuj' zamiast listy przedmiotów pojawia sie:

Warning: in_array()[function.in_array]: Wrong datatype for second argument in ..\wykladowca.php on line 48

Chodzi o drugi argument z
  1. <?php
  2. if (in_array($rekord['przedmiot_id'], $przedmiot_id))
  3. ?>


a mi skończyły sie już pomysły co tym zrobić sadsmiley02.gif
pgrzelka
$przedmiot_id - gdzie jest tworzenie tej zmiennej? to na pewno jest tablica?
ryba303
Dodałem

  1. <?php
  2. przedmiot_id= explode(",",$rekord['przedmiot_id']);
  3. ?>


Błędy zniknęły ale po kliknięciu edytuj nie wyświetlają mi się przedmioty, znaczy wyświetla mi się tylko 1 ten który mam dodany, mogę też po omacku wybrać jakiś inny i zmienić ale nadal może być tylko jedno id przedmiotu worriedsmiley.gif

  1. <?php
  2. if ($_POST['co'] == 'popraw') {
  3.    $query = "UPDATE wykladowcy SET przedmiot_id= '".implode(", ", $_POST['przedmiot_id'])."' WHERE wykladowca_id = '".$_POST['id']."';";
  4.    $wynik = mysql_query($query);
  5.    } elseif  ($_GET['co'] == 'edytuj') {
  6.    $query = "SELECT * FROM wykladowcy WHERE wykladowca_id = '".$_GET['id']."';";
  7.    $wynik = mysql_query($query);
  8.    $rekord = mysql_fetch_assoc($wynik);
  9.    $wykladowca_id = $rekord['wykladowca_id'];
  10. // dodana zmienna $przedmiot_id //
  11.    $przedmiot_id= explode(",",$rekord['przedmiot_id']);
  12. <form action=\"wykladowca.php\"  method=\"POST\">
  13. <table border=\"1\" align=\"center\">
  14. <tr>
  15. <td>
  16. <b>Wybierz przedmiot/y:</b><br>
  17. <input type=\"hidden\" name=\"co\" value=\"popraw\">
  18. <input type=\"hidden\" name=\"id\" value=\"".$wykladowca_id."\">
  19. <select  name=\"przedmiot_id[]\" size=\"30\" multiple>
  20. ";
  21. $wynik = mysql_query ("SELECT  przedmiot_id, nazwa_p FROM przedmioty ");
  22. while ($rekord = mysql_fetch_assoc($wynik)) {
  23.  echo '<option value="'.$rekord['przedmiot_id'].'"';
  24.      if (in_array($rekord['przedmiot_id'], $przedmiot_id))
  25.  echo'>'.$rekord['nazwa_p'].'</option>';
  26.    }
  27. echo "</select>
  28. </td>
  29. </td>
  30. </tr>
  31. <tr><td align=\"center\" colspan=\"2\">
  32. <input type=\"submit\"  value=\"Popraw\">
  33. </tr></td>
  34. </table>
  35. </form>";
  36. ?>
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.