Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: artykuly... problem z if
Forum PHP.pl > Forum > Przedszkole
Pele
Witam, piszę scrypt artykułów na strone, ale mam problem (zresztą w większości przypadków jest on taki sam biggrin.gif) A więc mam kod:
[php:1:38408a2303]<?php
if ($action == add_art) {

add_art();

}

elseif ($action == pokaz) {

pokaz();

}

elseif ($action == edytuj_art) {

edytuj();

}

elseif ($action == edit_art) {

edit_art();

}
//itd...
else {
echo "ble!";
}
?>[/php:1:38408a2303]
a pod spodem mam zbiór funkcji:
[php:1:38408a2303]<?php
function add_art() {
//tutaj wszytsko to co dodaje artykuł
}

function edytuj_art()
{
echo("<div align='center'>
<form action='admin.php?action=edit_art&id=$id method='POST'>");

$zapytanie = "SELECT * FROM art WHERE id='$id'";
$result = mysql_query($zapytanie);
while($row = mysql_fetch_array($result)) {
echo("<input type='hidden' name='id' value='".$row['id']."'>
Temat: <input type='text' name='temat' value='".$row['temat']."'><BR>
Data dodania: <input type='text' name='add_data' value='".$row['add_data']."'><BR>
Treść: <textarea type='text' cols='40' rows='10' name='artykul' value='".$row['opis']."'>".$row['opis']."</textarea><BR>
<input type='submit' name='send' value='OK'>");
}
}
//--------------> Koniec funkcji edytującej (formularza)

function edit_art()
{
if($send=="OK") {
$zapytanie = "UPDATE art SET temat='$temat', add_data='$add_data', artykul='$artykul' WHERE id='$id'";
$wynik = mysql_query($zapytanie);
}
}

function pokaz()
{
$query = "SELECT * FROM art ORDER BY id";
$wynik = mysql_query($query);


while($row = mysql_fetch_array($wynik)) {

$row = str_replace("n", "n<br />", $row);

echo "<TR>n"
."<TD align=center class="pole"><B>".$row['id']."</B></TD><BR>"
."<TD align=center class="pole">".$row['temat']."</TD><BR>"
."<TD align=center class="pole">".$row['add_data']."</TD><BR>"
."<TD align=center class="pole">".$row['artykul']."</TD><BR>"
."<TD align=center class="pole">
<a href=admin.php?action=edytuj_art&id=".$row['id'].">Edytuj</a></TD><BR>"
."</TR>n";

}
echo "</TABLE>";
}
?>[/php:1:38408a2303]
I tu jest rpoblem gdy wpisze w przeglądarce:
http://adres.pl/artykuly/admin.php?action=pokaz
Wyświetla mi liste tych artykułów, ale gdy nacisne Edytuj to pojawia się biała strona. Przypuszczam że błąd jest gdzieś w konstrukcji linku lub gdzieś błąd jest przy if'ie ... Niestety nie mogę sobie poradzić...
Prosze o pomoc.
Pozdro.
kszychu
Do funkcji edytuj_art() nie przekazujesz id artykulu. Musisz albo przekazac go jako parametr do funkcji: edytuj_art($id) albo ustawic globalną zmienna $id w ciele funkcji: global $id;
cichy
[php:1:be02ca75f9]<?php
if ($_GET['action'] == 'add_art') {
add_art();
}
elseif ($_GET['action'] == 'pokaz') {
pokaz();
}
elseif ($_GET['action'] == 'edytuj_art') {
edytuj();
}
elseif ($_GET['action'] == 'edit_art') {
edit_art();
}
//itd...
else {
echo "ble!";
}
?>[/php:1:be02ca75f9]

Może teraz zadziała.
Pozdro
mike
  1. <?php
  2. //..
  3. elseif ($_GET['action'] == 'edytuj_art') { 
  4. edytuj(); // nie masz takiej metody !!!
  5. }
  6. //..
  7. ?>

Mie masz metody edytuj() tylko edytuj_art() dlatego nic się nie wyświetla.
Pele
Dzięki kszychu!
Zadziałało! smile.gif
Teraz kolejny problem .. :/
Wyświetla się formularz a wnim informacj do edycji, ale gdy klikam "OK" to dokleja mi całą treśc z pół formularza i nic się nie dzieje :/
kszychu
Sorry, weź no jaśniej.
Pele
Ok, no wiec.
Klikam edytuj, pojawia się formularz edycyjny z treścią do edycji, gdy zmienie ją (lub nie) to całą treść z formularza mi dokleja do paska adresu, a przecież metoda jest POST a nie GET :/
I w bazie nic się nie zmienia, text jest dalej ten sam co był ...
Blaster
<form action="<? $PHP_SELF ?>" ............
Spróbuj tego, zamiast index.php?balbla=asd&costa=as.
Pele
Blaster nic to nie dało.
Ale za to znalazłem błąd i wiem dlaczego mi doklejało to do paska adresu smile.gif
[php:1:a60dbe260e]<?php
<form action='admin.php?action=edit_art&id=$id method='POST'>"
?>[/php:1:a60dbe260e]
w action zapomniałem domknąć ' <- tego cudzysłowia.
No ale dalej mi nie modyfikuje wpisu sad.gif
HELP!
Liko
Bo musisz się odwoływać do tablic SuperGlobalnych czyli $_POST i $_GET Wtedy będzie działać napweno. Funkcja:
[php:1:3ff96f1978]<?php
function edit_art()
{
if($_POST['send']=="OK") {
$zapytanie = "UPDATE art SET temat='".$_POST['temat']."', add_data='".$_POST['add_data']."', artykul='".$_POST['artykul']."' WHERE id='".$_POST['id']."'";
$wynik = mysql_query($zapytanie);
}
}
?>[/php:1:3ff96f1978]
Pele
No tak ... Dzięki laugh.gif
Temat zamknięty
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.