Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja isset zle dzialanie
Forum PHP.pl > Forum > PHP
trylas
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!
delfinium
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.
trylas
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
delfinium
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.
trylas
a poratujesz mnie kodem? ...
delfinium
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.
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.