Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Errory i generowanie strony.
Forum PHP.pl > Forum > Przedszkole
Durkane
Witam.
Może temat niezbyt jasno wyjaśnia o co mi chodzi, ale zaraz to wyjaśnię.
Chodzi mi o to, że mam taki kod :

  1. <?php
  2. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  3. $Number = (string)$_POST["text"];
  4.  
  5. if(isset($_POST["submit"]))
  6. {
  7. if ($Number == null)
  8. {
  9. $Num3 = "Wprowadz liczbe! ";
  10. }
  11. else
  12. {
  13. if(isset($_SESSION["Trials"]))
  14. {
  15. $_SESSION["Trials"]+=1;
  16. }
  17. else
  18. {
  19. $_SESSION["Trials"] = 1;
  20. }
  21. }
  22. }
  23.  
  24.  
  25. $number = (string)$_POST["text"];
  26. if(isset($_COOKIE["Random"]))
  27. {
  28. if(isset($_POST["submit"]))
  29. {
  30. if ($_COOKIE["Random"] > $Number)
  31. {
  32. $Kom1 = "Podana liczba jest za mala. Sprobuj jeszcze raz!";
  33. $Ses1 = "Liczba, ktora podales :".$Number;
  34. $Ses2 = "Proby : ".$_SESSION["Trials"];
  35. }
  36. elseif ($_COOKIE["Random"] < $Number)
  37. {
  38. $Kom1 = "Podana liczba jest za duza. Sprobuj jeszcze raz!";
  39. $Ses1 = "Liczba, ktora podales :".$Number;
  40. $Ses2 = "Proby : ".$_SESSION["Trials"];
  41. }
  42. elseif ($_COOKIE["Random"] == $Number)
  43. {
  44. $Kom1 = " Gratulacje odgadles liczbe ! ";
  45. $Kom1 .= " Zagraj jeszcze raz ! ";
  46. $Ses2 = "Proby : ".$_SESSION["Trials"];
  47. setcookie("Random","");
  48. $Guess = 1;
  49. }
  50. }
  51. }
  52. else
  53. {
  54. $Draw= rand(1,100);
  55. setcookie("Random",$Draw);
  56. }
  57.  
  58. ?>
  59. <html>
  60. <head></head>
  61. <body>
  62. <div style="text-align:center; width:100%; border: 2px black solid">
  63. <h3>Odgadnij Liczbe od 1 do 100</h3>
  64. <form action ="gra.php" method ="POST">
  65.  
  66. <div style ="color:green">
  67. <p><?= $Ses1; ?></p>
  68. <p><?= $Ses2; ?></p>
  69. <p><?= $Kom1; ?></p>
  70. </div>
  71. <p style ="color:red;"><?= $Num3; ?></p>
  72.  
  73. <br>
  74. <input type="text" name="text">
  75. <br><br>
  76. <?php if ($Guess == 0): ?>
  77. <input type="submit" value="Wyslij" id="submit" name="submit">
  78. <?php else: ?>
  79. <input type="submit" action ="gra.php" value="Zagraj jeszcze raz!" id="submit" name="submit"
  80. <?php endif ?>
  81. <br><br>
  82. </form>
  83. </div>
  84. </body>
  85. </html>


I wyskakuje mi przy nim błąd Notice: Undefined variable: Num3 in C:\WebServ\httpd-users\cos\gra.php on line 73. Wiem, że chodzi tutaj o to, że wykonywana jest zmienna num3 wcześniej niż jest zdefiniowana w kodzie. Dlatego moje pytanie jest jak zrobić by uniknąć takiego błędu?

A druga sprawa jest taka, że mam zapamiętywaną liczbę w cookies i chciałbym żeby po wyłączeniu strony i włączeniu cookies były na nowo generowane, a nie trzymało wcześniejszych (tak samo sesja). Wiem tyle, że muszę zrobić takie przekierowanie w stronie np "http://localhost/~cos/gra.php?=1321310" i żeby za każdym razem generowało nowe przejście na stronę.
Tuminure
Sprawdzać czy zmienna istnieje np. przez empty() lub isset().
Durkane
Ok udało mi się naprawić z tymi błędami tylko teraz wyskakuje mi inny błąd... Tutaj cały kod :
  1. <?php
  2. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  3.  
  4. $Number = (string)$_POST["text"];
  5.  
  6. if(isset($_POST["submit"]))
  7. {
  8. if ($Number == null)
  9. {
  10. $Num3 = "Wprowadz liczbe! ";
  11. }
  12. else
  13. {
  14. if(isset($_SESSION["Trials"]))
  15. {
  16. $_SESSION["Trials"]+=1;
  17. }
  18. else
  19. {
  20. $_SESSION["Trials"] = 1;
  21. }
  22. }
  23. }
  24.  
  25.  
  26. $number = (string)$_POST["text"];
  27. if(isset($_COOKIE["Random"]))
  28. {
  29. if(isset($_POST["submit"]))
  30. {
  31. if ($_COOKIE["Random"] > $Number)
  32. {
  33. $Kom1 = "Podana liczba jest za mala. Sprobuj jeszcze raz!";
  34. $Ses1 = "Liczba, ktora podales :".$Number;
  35. $Ses2 = "Proby : ".$_SESSION["Trials"];
  36. }
  37. elseif ($_COOKIE["Random"] < $Number)
  38. {
  39. $Kom1 = "Podana liczba jest za duza. Sprobuj jeszcze raz!";
  40. $Ses1 = "Liczba, ktora podales :".$Number;
  41. $Ses2 = "Proby : ".$_SESSION["Trials"];
  42. }
  43. elseif ($_COOKIE["Random"] == $Number)
  44. {
  45. $Kom1 = " Gratulacje odgadles liczbe ! ";
  46. $Kom1 .= " Zagraj jeszcze raz ! ";
  47. $Ses2 = "Proby : ".$_SESSION["Trials"];
  48. setcookie("Random","");
  49. $Guess = 1;
  50. }
  51. }
  52. }
  53. else
  54. {
  55. $Draw= rand(1,100);
  56. setcookie("Random",$Draw);
  57. }
  58.  
  59. ?>
  60. <html>
  61. <head></head>
  62. <body>
  63. <div style="text-align:center; width:100%; border: 2px black solid">
  64. <h3>Odgadnij Liczbe od 1 do 100</h3>
  65. <form action ="gra.php" method ="POST">
  66.  
  67. <div style ="color:green">
  68. <?php if(isset($Ses1)): ?>
  69. <p><?= $Ses1; ?></p>
  70. <?php endif ?>
  71. <?php if(isset($Ses2)): ?>
  72. <p><?= $Ses2; ?></p>
  73. <?php endif ?>
  74. <?php if(isset($Kom1)): ?>
  75. <p><?= $Kom1; ?></p>
  76. <?php endif ?>
  77. </div>
  78.  
  79. <?php if(isset($Num3)): ?>
  80. <p style ="color:red;"><?= $Num3; ?></p>
  81. <?php endif ?>
  82.  
  83. <br>
  84. <input type="text" name="text">
  85. <br><br>
  86. <?php if (!isset($Guess)): ?>
  87. <input type="submit" value="Wyslij" id="submit" name="submit">
  88. <?php else: ?>
  89. <input type="submit" action ="gra.php" value="Zagraj jeszcze raz!" id="submit" name="submit"
  90. <?php endif ?>
  91. <br><br>
  92. </form>
  93. </div>
  94. </body>
  95. </html>


A błąd to Notice: Undefined index: Trials in C:\WebServ\httpd-users\cos\gra.php on line 35.
Tutaj jest cała instrukcja do tego błędu :

  1. if(isset($_POST["submit"]))
  2. {
  3. if ($Number == null)
  4. {
  5. $Num3 = "Wprowadz liczbe! ";
  6. }
  7. else
  8. {
  9. if(isset($_SESSION["Trials"]))
  10. {
  11. $_SESSION["Trials"]+=1;
  12. }
  13. else
  14. {
  15. $_SESSION["Trials"] = 1;
  16. }
  17. }
  18. }
  19.  
  20.  
  21. $number = (string)$_POST["text"];
  22. if(isset($_COOKIE["Random"]))
  23. {
  24. if(isset($_POST["submit"]))
  25. {
  26. if ($_COOKIE["Random"] > $Number)
  27. {
  28. $Kom1 = "Podana liczba jest za mala. Sprobuj jeszcze raz!";
  29. $Ses1 = "Liczba, ktora podales :".$Number; //Tutaj jest 35 linia.
  30. $Ses2 = "Proby : ".$_SESSION["Trials"];
  31. }
  32. elseif ($_COOKIE["Random"] < $Number)
  33. {
  34. $Kom1 = "Podana liczba jest za duza. Sprobuj jeszcze raz!";
  35. $Ses1 = "Liczba, ktora podales :".$Number;
  36. $Ses2 = "Proby : ".$_SESSION["Trials"];
  37. }
  38. elseif ($_COOKIE["Random"] == $Number)
  39. {
  40. $Kom1 = " Gratulacje odgadles liczbe ! ";
  41. $Kom1 .= " Zagraj jeszcze raz ! ";
  42. $Ses2 = "Proby : ".$_SESSION["Trials"];
  43. setcookie("Random","");
  44. $Guess = 1;
  45. }
  46. }
  47. }
Daimos
Czy tak ciężko zapoznać się z podstawami i sprawdzić w google co znaczy komunikat błędu " Notice: Undefined index: " ?
Nie ma takiego indeksu w tablicy, masz nawet napisane jaki to indeks dla ułatwienia. Pobierasz zmienną $_SESSION['Trials'] a klucza Trials nie ma. Musisz sprawdzić najpierw czy istnieje.

W linijce:
  1. $Ses2 = "Proby : ".$_SESSION["Trials"];

Posługujesz się tą zmienną. Wyżej ją sprawdzasz i podstawiasz, ale tylko i wyłącznie wtedy, kiedy istnieje zmienna POST.
bobek358
Nie przypisałeś wartości do zmiennej sesyjnej przed jej użyciem.
Dodaj przed

  1. $number = (string)$_POST["text"];


to

  1. if(!isset($_SESSION["Trials"])) $_SESSION["Trials"] = 0;
Durkane
O widzisz zapomniałem o tym dzięki wielkie biggrin.gif To teraz zostaje mi tylko problem z tym tak jakby generowanie strony za każdym wejściem w nią. Jestem można powiedzieć zielony w php i jeszcze niestety tego nie wiem, nie widziałem nigdzie w kursie(który robiłem) zmianki o tym.

Pomoże ktoś jakąś wskazówką czego szukać, żeby po każdym wejściu na stronę robiło się np. www.localhost/gra.php?id=192932 i za każdym kolejnym razem żeby robiło się coś innego. czyli tak
1 raz wchodzisz masz www.localhost/gra.php?id=192932
2 raz wchodzisz masz www.localhost/gra.php?id=192asf213 itd itd.
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.