Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja isset zle dzialanie
trylas
post 20.09.2008, 13:50:13
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 7.09.2008

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


CODE

<?php

// artykul_wyslij.php
// dodanie / modyfikacja rekordu artyku&sup3;u

include('funkcje_dolacz.php');

$lacz = lacz_bd();

$naglowek = $HTTP_POST_VARS['naglowek'];
$strona = $HTTP_POST_VARS['strona'];
$czas = time();

if ( (isset($HTTP_POST_FILES['html']['name']) &&
(dirname($HTTP_POST_FILES['html']['type']) == 'text')
&& is_uploaded_file($HTTP_POST_FILES['html']['tmp_name'])))
{
$wp = fopen($HTTP_POST_FILES['html']['tmp_name'], 'r');
$tekst_artykulu = addslashes(fread($wp, filesize($HTTP_POST_FILES['html']['tmp_name'])));
fclose($wp);
}
else
$tekst_artykulu = $HTTP_POST_VARS['tekst_artykulu'];



if (isset($HTTP_POST_VARS['artyklu']) && $HTTP_POST_VARS['artykul']!='')
{ // uaktualnienie
$artykul = $HTTP_POST_VARS['artykul'];

$sql = "update artykuly
set naglowek = '$naglowek',
tekst_artykulu = '$tekst_artykulu',
strona = '$strona',
zmodyfikowany = $czas
where id = $artykul";
}
else { // nowy artyku&sup3;
$sql = "insert into artykuly
(naglowek, tekst_artykulu, strona, autor, utworzony, zmodyfikowany)
values
('$naglowek', '$tekst_artykulu', '$strona', '"
.$HTTP_SESSION_VARS['uwierz_uzyt']."', $czas, $czas)";
}

$wynik = mysql_query($sql, $lacz);

if (!$wynik) {
print " Wyst&sup1;pi&sup3; b&sup3;&sup1;d bazy danych podczas wykonywania <pre>$sql</pre>";
print mysql_error();
exit;
}



if ( (isset($HTTP_POST_FILES['image']['name']) &&
is_uploaded_file($HTTP_POST_FILES['image']['tmp_name'])))
{

if (!isset($artykul))
$artykul = mysql_insert_id();

$typ = basename($HTTP_POST_FILES['image']['type']);

switch ($typ) {
case 'jpeg':
case 'pjpeg': $nazwapliku = "obrazki/$artykul.jpg";
move_uploaded_file($HTTP_POST_FILES['image']['tmp_name'],
$nazwapliku);
$sql = "update artykuly
set obrazek = '$nazwapliku'
where id = $artykul";
$wynik = mysql_query($sql, $lacz);
break;
default: print 'Nieprawid&sup3;owy format obrazka: '.
$HTTP_POST_FILES['image']['type'];
}
}

header('Location: '.$HTTP_POST_VARS['przeznaczenie']);

?>


mam taki problem podczas dodawania nowego newsa do systemu funkcja isset sprawdza czy wartosc jest zerowa i przechodzi do instrukcji else tym samym dodajac nowy artykul(jak dotad wszystko jest oks)problem zaczyna sie jak chcemy edytowac dodany artykul po dodaniu tresci wywolujemy powyzszy skrypt i on zamiast "update'owac" dodaje nam znowu nowy artykul! mam nadzieje ze wyrazilem sie jasno.... prosze pomoc!
Go to the top of the page
+Quote Post
delfinium
post 20.09.2008, 16:29:10
Post #2





Grupa: Zarejestrowani
Postów: 90
Pomógł: 6
Dołączył: 30.06.2007
Skąd: Zielona Góra

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


A problem czasem nie leży w literówce?

  1. <?php
  2. if (isset($HTTP_POST_VARS['artyklu']) && $HTTP_POST_VARS['artykul']!='')
  3. ?>


nie powinno być

  1. <?php
  2. if (isset($HTTP_POST_VARS['artykul']) && $HTTP_POST_VARS['artykul']!='')
  3. ?>



BTW tablice $HTTP_POST_VARS są "wycofane", zaleca się korzystanie z $_POST, $_GET itd.
Go to the top of the page
+Quote Post
trylas
post 20.09.2008, 16:36:53
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 7.09.2008

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


wlasnie nie bo isset($zmienna) - daje TRUE gdy $zmienna jest pusta (także równa się zero) lub ma jakąś wartość, FALSE gdy nie istnieje.

<?php

$var
= $_GET['test'];

if (isset(
$var)){
echo
"Zmienna ustawiona";
}
else {
echo
"Zmienna NIE ustawiona";
}

?>

i tym samym isset daje poprawne wykonanie skryptu dodajac nowy artykul a zmieniajac ten paramtr na wlasciwy tzn bez literowki daj nam edycje poprawna bez mozliwosci dodania nowego artykulu i nie mam pojecia jak to rozwiazac moze trzeba napisac zupelnie inna instrukcje zamiast if ..... pomocy please
Go to the top of the page
+Quote Post
delfinium
post 20.09.2008, 16:41:55
Post #4





Grupa: Zarejestrowani
Postów: 90
Pomógł: 6
Dołączył: 30.06.2007
Skąd: Zielona Góra

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


Wiem do czego służy instrukcja isset ale tak czy siak tam była literówka.

Rozwiązać możesz to inaczej, jeśli artykuł jest edytowany (NIE NOWY) to ustaw dodatkowe pole typ HIDDEN z wartością 1. Jeśli jest nowy to pole ma wartość zero. Przy zapisie sprawdź jaką wartość ma zmienna i odpowiednio zmodyfikuj albo dodaj artykuł do bazy.
Go to the top of the page
+Quote Post
trylas
post 20.09.2008, 16:56:06
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 7.09.2008

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


a poratujesz mnie kodem? ...
Go to the top of the page
+Quote Post
delfinium
post 20.09.2008, 17:36:06
Post #6





Grupa: Zarejestrowani
Postów: 90
Pomógł: 6
Dołączył: 30.06.2007
Skąd: Zielona Góra

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


Nie widzę Twojego kodu więc napiszę coś w pseudokodzie. Nie wiem jak masz skonstruowane strony dodawania/edycji napiszę więc ogólnie.
Zazwyczaj jest tak, że przy edycji jakiegoś wpisu w adresie podaje się jakieś ID lub coś w tym stylu, bo skądś trzeba wiedzieć co pobrać z bazy i tak news.php oznacza że jest to nowy wpis a news.php?id=10 że to edycja newsa z ID 10. Różnie ludzie robią a jak Ty to masz to tego nie wiem. W każdym razie chyba wiesz czy formularz jest dla nowego wpisu czy do edycji.

i wtedy wstawiasz do formularza:
  1. <?php
  2.  $value = isset( $_REQUEST['id'] ) ? 1 0;
  3. ?>
  4. <form method="post" action="...">
  5. <input type="hidden" name="istnieje" value="<?php echo $value; ?>" />
  6. pozostała część formularza
  7. </form>


Tylko jak tak patrzę na to, to wychodzi to trochę głupio bo jeśli masz id w URLu to nie potrzebujesz tworzyć dodatkowego pola żeby określić czy coś jest nowe czy do edycji bo samo ID o tym mówi i wtedy dodajesz linię
<input type="hidden" name="id" value="<?php echo $value; ?>" />

Potem w tym pliku, którego kod zamieściłeś sprawdzasz czy istnieje zmienna id i czy jej wartość = 0. Jeśli tak to dodajesz wpis jeśli różne to modyfikujesz.

Jeśli to Ci nie rozjaśniło sprawy to prześlij mi na priva opis jak masz rozwiązane dodawanie/edycję + kod strony to może pomogę coś więcej.
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: 13.06.2025 - 09:47