Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Undefined index
Bager
post 14.03.2009, 23:13:24
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 2.12.2004

Ostrzeżenie: (0%)
-----


Witam,
Po załadowaniu strony pojawia się następująca informacja
Notice: Undefined index: akcja in C:\wamp\www\newsy\edytuj.php on line 6

Notice: Undefined index: zmien in C:\wamp\www\newsy\edytuj.php on line 27


  1. <?php include ('polaczenie.php'); ?>
  2. <a href="dodaj.php">Dodaj newsa</a> || <a href="wyswietl.php">Wyswietl</a><br>
  3.  
  4. <?php
  5.  
  6. if ($_GET['akcja'] == 'edytuj') {
  7.  
  8.    $zapytanie = "SELECT * FROM news WHERE id=".$_GET['id'];
  9.    $newsdb = mysql_query($zapytanie);
  10.    $rekord = mysql_fetch_assoc($newsdb);
  11. ?>
  12.    <p><b>Edytuj Newsa</b></p>
  13.  
  14.    <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
  15.  
  16.    Tytuł: <input name="title" value="<?php echo $rekord['title'] ?>" size="25" /><br />
  17.    Treść: <textarea cols="50" rows="10" name="text" size="55" /><?php echo $rekord['text'] ?></textarea><br />
  18.    Data: <input name="data" value="<?php echo $rekord['data'] ?>" size="25" /><br />    
  19.        <input type="submit" name="zmien" value="Zmień" />
  20.        <input type="reset" value="Resetuj" />
  21.  
  22.    </form><br />
  23.    
  24. <?php
  25. }
  26.  
  27. if ($_POST['zmien']) {
  28.  
  29.    $zapytanie = "UPDATE news SET 'title'='".$_POST['title']."', 'text'='". $_POST['text']."' WHERE 'id'='".$_POST['id']."'";
  30.  
  31.    $newsdb = mysql_query($zapytanie);
  32.  
  33.    if ($newsdb)
  34.        echo "<p>Aktualizacja powiodła się</p>";
  35.    else
  36.        echo "<p>Aktualizacja nie powiodła się!</p>"; echo mysql_error();
  37. }
  38.  
  39.  
  40. ?>
  41.  
  42.  
  43. <?php
  44. $zapytanie = "SELECT * FROM news ORDER BY data DESC";
  45. $newsdb = mysql_query($zapytanie) or die ('Błąd: ' . mysql_error());
  46. ?>
  47. <hr />
  48. <table>
  49. <?php
  50. while ($rekord = mysql_fetch_assoc($newsdb)) {
  51. ?>
  52.    <tr>
  53.            <td><a href="<?php echo $_SERVER['PHP_SELF'];?>?akcja=edytuj&id=<?php echo $rekord['id'];?>">
  54.            EDYTUJ --></a></td>
  55.            <td><?php echo $rekord['data']; ?></td>
  56.            <td><?php echo $rekord['title'];?></td>
  57.            <td><?php echo $rekord['text'];?></td>
  58.    </tr>
  59. <?php
  60.  
  61.  
  62. }
  63. ?>
  64. </table>


Zapewne rozwiązanie tego jest bardzo proste, ale ja niestety nie umiem sobie z tym poradzić : / Z góry dziękuję za pomoc!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wookieb
post 14.03.2009, 23:20:29
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tzn ze w tablicy nie ma klucza ktorego uzywasz np w tablicy $_GET nie ma aktualnie klucza 'akcja', wiec najpierw dajesz
Kod
if(isset($_GET['akcja']) && dalsze warunki)


--------------------
Go to the top of the page
+Quote Post
Bager
post 14.03.2009, 23:50:02
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 2.12.2004

Ostrzeżenie: (0%)
-----


Ok, wprowadziłem stosowne zmiany:
  1. <?php
  2. if (isset($_GET['akcja']) == 'edytuj') {
  3. ?>

  1. <?php
  2. if (isset($_POST['zmien'])) {
  3. ?>


Przy okazji zauważyłem, że ta informacja pojawia się tylko wtedy gdy mam włączone PHP 5.2.8, natomiast przy PHP 4.4.9 wszystko jest ok. Czy to normalne zachowanie?

Tak czy siak, po dodaniu 'isset' informacja już się nie pojawia. Jednak gdy wybiorę dany news do edycji, wprowadzę stosowne zmiany i kliknę 'Zmień' dostaje:
Notice: Undefined index: id in C:\wamp\www\newsy\edytuj.php on line 29
Aktualizacja nie powiodła się!

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''title'='Tytul zmieniony', 'text'='Tresc newsa XYZ ' WHERE 'id'=''' at line 1


Co tym razem jest źle? : /

Nie wiem czy to potrzebne: MySQL wersja 5.1.30

Ten post edytował Bager 14.03.2009, 23:50:26
Go to the top of the page
+Quote Post
bełdzio
post 15.03.2009, 00:30:50
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Kod
'UPDATE news SET title="'.$_POST['title'].'", text="'. $_POST['text'].'" WHERE id='.$_POST['id'];
+ jakas filtracja

Ten post edytował bełdzio 15.03.2009, 00:31:50


--------------------
Go to the top of the page
+Quote Post
decha-design
post 15.03.2009, 00:56:43
Post #5





Grupa: Zarejestrowani
Postów: 415
Pomógł: 46
Dołączył: 26.05.2007
Skąd: Sandomierz

Ostrzeżenie: (0%)
-----


isset()" title="Zobacz w manualu PHP" target="_manual zwraca true lub false w przypadku niepowodzenia ... więc nie wiem jak chcesz porównać wartość 1 lub 0 z tekstem 'akcja' ... raczej nielogiczne, poczytaj manual

Cytat
Notice: Undefined index: id in C:\wamp\www\newsy\edytuj.php on line 29
to samo co wyżej, zastosuj isset, lub gdzies przed sprawdzaniem przypisz jej wartosc jakąś ... chociażby null ...

Cytat
Przy okazji zauważyłem, że ta informacja pojawia się tylko wtedy gdy mam włączone PHP 5.2.8, natomiast przy PHP 4.4.9 wszystko jest ok.
Bo tak to już jest =) PHP 5.x jest bardziej wrażliwe (?) ... poczytaj o error_reporting()" title="Zobacz w manualu PHP" target="_manual


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:00