Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Notice - występuje tylko na jednym z dwóch serwerów, dlaczego?
Forum PHP.pl > Forum > Przedszkole
gogomania
Mam informację, która występuje na jednym z dwóch o identycznej zawartości serwerów. Innymi słowy:
Mam dwa serwery
1) jest zainstalowany XAMPP v3.2.1
2) jest zainstalowany xampp-win32-1.8.2-1-VC9

W przypadku otwarcia/wejścia na stronę localhost/a/wybierz.php przez serwer 2) wywala mi informację:
Notice: Undefined index: trasa in C:\xampp\htdocs\a\wybierz.php on line 69
Notice: Undefined index: rodzaj in C:\xampp\htdocs\a\wybierz.php on line 70

Natomiast gdy otwieram tą samą stronę z takimi samymi danymi (baza mysql też jest identyczna) na serwerze 1) normalnie pokazuje całą zawartość strony.
Ktoś wie dlaczego?

  1. <?php
  2. include 'rdzen/init.php';
  3. protect_page();
  4. include 'zawartosc/ogolne/header.php';
  5. ?>
  6.  
  7. <table>
  8. <tr>
  9. <form action="" method="post">
  10. <select name="trasa" selected="selected" onchange="this.form.submit()">
  11. <option value="">Wybierz trasę</option>
  12. <option value="1">1</option>
  13. <option value="2">2</option>
  14. <option value="3">3</option>
  15. <option value="4">4</option>
  16. <option value="5">5</option>
  17. <option value="6">6</option>
  18. <option value="7">7</option>
  19. <option value="8">8</option>
  20. <option value="9">9</option>
  21. </select>
  22. </form>
  23. </tr>
  24. <tr>
  25. <form action="" method="post">
  26. <select name="rodzaj" selected="selected" onchange="this.form.submit()">
  27. <option value="">Rodzaj</option>
  28. <option value="wewnętrzny">Wewnętrzny</option>
  29. <option value="zewnętrzny">Zewnętrzny</option>
  30. </select>
  31. </form>
  32. </tr>
  33. <tr>
  34. <?php
  35. include 'rdzen/database/www_connect.php';
  36. $wynik_trasa = "SELECT * FROM `ik_olsztyn` ";
  37.  
  38. if (isset($_POST['szukaj'])) {
  39. $szukaj_warunkow = mysql_real_escape_string($_POST['search_box']);
  40.  
  41. $wynik_trasa .= "WHERE trasa = '{$szukaj_warunkow}' ";
  42. $wynik_trasa .= "OR miasto = '{$szukaj_warunkow}'";
  43. $wynik_trasa .= "OR ulica = '{$szukaj_warunkow}'";
  44. $wynik_trasa .= "OR rodzaj = '{$szukaj_warunkow}'";
  45. }
  46. $zapytanie = mysql_query($wynik_trasa) or die("Błąd w zapytaniu!");
  47. ?>
  48. <form name="szukaj" method="post" action="wybierz.php">
  49. Szukaj: <input type="text" name="search_box" value="" />
  50. <input type="submit" name="szukaj" value="Szukaj" />
  51. </form>
  52. </tr>
  53. <?php while ($row = mysql_fetch_array($zapytanie)) { ?>
  54. <tr>
  55. <td><?php echo $row ['kod_pocztowy']; ?></td>
  56. <td><?php echo $row ['ulica']; ?></td>
  57. <td><?php echo $row ['miasto']; ?></td>
  58. <td><?php echo $row ['trasa']; ?></td>
  59. <td><?php echo $row ['rodzaj']; ?></td>
  60. </tr>
  61. <?php } ?>
  62. </table>
  63.  
  64. <?php
  65. // parametry serwera
  66. include 'rdzen/database/www_connect.php';
  67. $tabela = "ik_olsztyn"; // nazwa tabeli
  68.  
  69. $trasa = $_POST['trasa'];
  70. $rodzaj = $_POST['rodzaj'];
  71.  
  72. if($trasa) {
  73. // łączymy się z bazą danych
  74. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  75. // zapytanie do bazy danych
  76. $wynik_trasa = mysql_query("SELECT * FROM `ik_olsztyn` WHERE `trasa` = '$trasa'") or die("Błąd w zapytaniu!");
  77. }
  78. else
  79. echo "Nie mogę połączyć się z bazą danych!";
  80. echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">";
  81. echo "<tr>";
  82. echo "<td bgcolor=\"d8e2f1\"><strong>LP.</strong></td>";
  83. echo "<td bgcolor=\"c4d4ea\"><strong>LOK_ID</strong></td>";
  84. echo "<td bgcolor=\"d8e2f1\"><strong>Przetarg</strong></td>";
  85. echo "<td bgcolor=\"c4d4ea\"><strong>NR Seryjny</strong></td>";
  86. echo "<td bgcolor=\"d8e2f1\"><strong>IP Komputera</strong></td>";
  87. echo "<td bgcolor=\"c4d4ea\"><strong>Instytucja</strong></td>";
  88. echo "<td bgcolor=\"d8e2f1\"><strong>Kontakt</strong></td>";
  89. echo "<td bgcolor=\"c4d4ea\"><strong>Kod Pocztowy</strong></td>";
  90. echo "<td bgcolor=\"d8e2f1\"><strong>Miasto</strong></td>";
  91. echo "<td bgcolor=\"c4d4ea\"><strong>Ulica</strong></td>";
  92. echo "<td bgcolor=\"d8e2f1\"><strong>Trasa</strong></td>";
  93. echo "</tr>";
  94. while ($row = mysql_fetch_array($wynik_trasa)) {
  95. echo "<tr>";
  96. echo "<td bgcolor=\"d8e2f1\">" . $row['kiosk_id'] . "</td>";
  97. echo "<td bgcolor=\"c4d4ea\">" . $row['lok_id'] . "</td>";
  98. echo "<td bgcolor=\"d8e2f1\">" . $row['przetarg'] . "</td>";
  99. echo "<td bgcolor=\"c4d4ea\">" . $row['sn'] . "</td>";
  100. echo "<td bgcolor=\"d8e2f1\">" . $row['ip_komputer'] . "</td>";
  101. echo "<td bgcolor=\"c4d4ea\">" . $row['instytucja'] . "</td>";
  102. echo "<td bgcolor=\"d8e2f1\">" . $row['kontakt1'] . "</td>";
  103. echo "<td bgcolor=\"c4d4ea\">" . $row['kod_pocztowy'] . "</td>";
  104. echo "<td bgcolor=\"d8e2f1\">" . $row['miasto'] . "</td>";
  105. echo "<td bgcolor=\"c4d4ea\">" . $row['ulica'] . "</td>";
  106. echo "<td bgcolor=\"d8e2f1\">" . $row['trasa'] . "</td>";
  107. echo "</tr>";
  108. }
  109. echo "</table>";
  110. }
  111.  
  112. if($rodzaj) {
  113. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  114. $wynik_rodzaj = mysql_query("SELECT * FROM `ik_olsztyn` WHERE `rodzaj` = '$rodzaj'") or die("Błąd w zapytaniu!");
  115. }
  116. else
  117. echo "Nie mogę połączyć się z bazą danych!";
  118. echo "<table boder=\"1\"><tr>";
  119. echo "<td bgcolor=\"d8e2f1\"><strong>LP.</strong></td>"; // 0
  120. echo "<td bgcolor=\"c4d4ea\"><strong>LOK_ID</strong></td>"; // 1
  121. echo "<td bgcolor=\"d8e2f1\"><strong>NR Seryjny</strong></td>"; // 2
  122. echo "<td bgcolor=\"c4d4ea\"><strong>IP Komputera</strong></td>"; // 3
  123. echo "<td bgcolor=\"d8e2f1\"><strong>Instytucja</strong></td>"; // 4
  124. echo "<td bgcolor=\"c4d4ea\"><strong>Kontakt</strong></td>"; // 5
  125. echo "<td bgcolor=\"d8e2f1\"><strong>Kod Pocztowy</strong></td>"; // 6
  126. echo "<td bgcolor=\"c4d4ea\"><strong>Miasto</strong></td>"; // 7
  127. echo "<td bgcolor=\"d8e2f1\"><strong>Ulica</strong></td>"; // 8
  128. echo "<td bgcolor=\"c4d4ea\"><strong>Trasa</strong></td>"; // 9
  129. echo "<td bgcolor=\"d8e2f1\"><strong>Zliwidowany</strong></td>"; // 10
  130. echo "</tr>";
  131.  
  132. while ($row = mysql_fetch_array($wynik_rodzaj)) {
  133. echo "<tr>";
  134. echo "<td bgcolor=\"d8e2f1 \">" . $row['kiosk_id'] . "</td>"; // 0
  135. echo "<td bgcolor=\"c4d4ea\">" . $row['lok_id'] . "</td>"; // 1
  136. echo "<td bgcolor=\"d8e2f1\">" . $row['sn'] . "</td>"; // 2
  137. echo "<td bgcolor=\"c4d4ea \">" . $row['ip_komputer'] . "</td>"; // 3
  138. echo "<td bgcolor=\"d8e2f1\">" . $row['instytucja'] . "</td>"; // 4
  139. echo "<td bgcolor=\"c4d4ea \">" . $row['kontakt1'] . "</td>"; // 5
  140. echo "<td bgcolor=\"d8e2f1\">" . $row['kod_pocztowy'] . "</td>"; // 6
  141. echo "<td bgcolor=\"c4d4ea \">" . $row['miasto'] . "</td>"; // 7
  142. echo "<td bgcolor=\"d8e2f1\">" . $row['ulica'] . "</td>"; // 8
  143. echo "<td bgcolor=\"c4d4ea\">" . $row['trasa'] . "</td>"; // 9
  144. echo "<td bgcolor=\"d8e2f1\">" . $row['rodzaj'] . "</td>"; // 10
  145. echo "</tr>";
  146. }
  147. echo "</table>";
  148. }
  149. ?>
  150.  
  151. <?php
  152. include 'zawartosc/ogolne/footer.php';
  153. ?>
lobopol
Różne ustawienia wyświetlania błędów na serwerach i tyle.
  1. $trasa = $_POST['trasa'];
  2. $rodzaj = $_POST['rodzaj'];

to generuje noticy bo nie sprawdzasz czy te posty są ustawione, a jeżeli nie są to masz notice-a
gogomania
mogę je wyłączyć:

Ale czy mam się obawiać, że w miarę dopisywania kodu coś się pochrzani? Tzn ta informacja przeobrazi sięw błąd? Czy moge zostawić tak jak jest i dac raportowanie na 0?
lobopol
środowisko developerskie = wszystkie błędy wyświetlane i poprawiane
środowisko produkcyjne wszystkie błędy logowane i ukryte
r4xz
Cytat(gogomania @ 7.08.2013, 18:01:07 ) *
mogę je wyłączyć:

Ale czy mam się obawiać, że w miarę dopisywania kodu coś się pochrzani? Tzn ta informacja przeobrazi sięw błąd? Czy moge zostawić tak jak jest i dac raportowanie na 0?


najgorsze co mógłbyś zrobić to właśnie wyłączyć błędy i pomyśleć "działa"

sprawdzaj wszystkie dane wejściowe - podstawy: isset, empty + if/else
gogomania
ok, spróbuję. Biorę się za robotę, dziękuje!


Zamiast:
  1. $trasa = $_POST['trasa'];
  2. $rodzaj = $_POST['rodzaj'];


Dałem:
  1. $trasa = isset($_POST['trasa'])?$_POST['trasa']:null;
  2. $rodzaj = isset($_POST['rodzaj'])?$_POST['rodzaj']:null;


Znalazłem taką podpowiedź na tym forum, czy to jest poprawny kod?

Działa niby elegancko, nie mam już notice'a.
piotr.pasich
Krócej, acz dostępne dopiero w wersji PHP 5.3.x

  1. $trasa = isset($_POST['trasa']) ?: null;
  2. $rodzaj = isset($_POST['rodzaj']) ?: null;


Zapraszam też do zagłosowania na agendę PHPCon Poland 2013 http://www.phpcon.pl/2013/pl/agenda

Piotr Pasich
lobopol
@piotr.pasich to co podałeś jest błędnym kodem bo gdy post trasa jest ustawiony to do $trasa przypisze true, a nie jej wartość
piotr.pasich
Prawda , zgadzam się
r4xz
Cytat(gogomania @ 7.08.2013, 18:11:32 ) *
czy to jest poprawny kod?

Jakby patrzeć tylko na urywek - tak, jeśli zaś na całokształt z pierwszego postu to już niestety nie - poczytaj o np. SQL Injection oraz o tym jak się przed nim chronić mysql_real_escape_string

PS Mocno wskazane jest jednak korzystanie z bazą przy pomocy PDO (Pod warunkiem, że znasz podstawy OOP tongue.gif)
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.