[PHP] Usuwanie newsow

0

Mam napisany prosty CMS, na localhost wszystko działa ale jak wrzuce na yoyo, zmienie dane do bazy na wszystkich podstronach, to wszystko działa (rejestracja, dodawanie newsów) tylko nie usuwanie newsow :\ Newsy z bazy pobiera i wyświetla mi je w formie listy. Oto dwa pliki:
Na pierwszym wybieram news do usunięcia a drugi plik ma go usunąć i przekierować na stronę główną
usuwanie.php

<?php
mysql_connect('mysql1.yoyo.pl', 'db842367' , 'xxx');
mysql_select_db("db842367");
$query = mysql_query("select * from newsy");
while($rekord = mysql_fetch_array($query))
{
$tekst .=  '<option value="'.$rekord[0].'">ID: '.$rekord[0].'  '.'Skrot: '.$rekord[1].'<br>';
}
echo '<form action="delete.php" method="post"';
echo '<select name="id">';
echo $tekst;
echo '</select>';
echo '<input type="submit" value="USUŃ"';
echo '</form>';
?>

delete.php

<?php
session_start();
mysql_connect('mysql1.yoyo.pl', 'db842367' , 'xxx');
mysql_select_db("db842367");
$query = mysql_query("DELETE FROM `newsy` WHERE `id` = '".$id."' LIMIT 1");
header("Location: index.php");
?>

Jestem początkującym w php. więc może układ kodu nie jest idealny... w każdym razie na localhoscie działał

0

Na pierwszy rzut oka brakuje ">" przy form i "/>" przy inpucie, zaraz mogę to sprawdzić dokładniej

echo '<form action="delete.php" method="post">';
...
echo '<input type="submit" value="USUŃ" />';

i tak przy okazji troszkę pracochłonne jest pisanie na każdej podstronie danych dot. połączenia z bazą danych. O wiele lepiej stworzyc sobie jeden plik np. connect.php i w nim zawrzeć np. funkcje connect, tzn:

function connect(){
	$link = mysql_connect('host', 'user', 'pass');
	mysql_select_db('baza');
	mysql_query("SET NAMES 'utf8'");
	mysql_query("SET CHARACTER SET 'utf8_general_ci'");
}

Ten plik potem sobie includujesz i tyle.
Edycja parametrów połączenia odbywa się tylko w jednym pliku, nie w np. 50.

0

Zamknąłem tagi, dodałem to do połączenia z bazą ale nadal usuwanie nie działa :\

0
Markness napisał(a)

Zamknąłem tagi, dodałem to do połączenia z bazą ale nadal usuwanie nie działa :\

zobacz co chcesz usunąć:

$query = mysql_query("DELETE FROM `newsy` WHERE `id` = '".$id."' LIMIT 1");

Czy w jakiś sposób wczytujesz dane do zmiennej $id? Nie zauważyłem wcześniej.
Są dwa rozwiązania:

$id = $_POST['id'];
$query = mysql_query("DELETE FROM `newsy` WHERE `id` = '".$id."' LIMIT 1");

lub

$query = mysql_query("DELETE FROM `newsy` WHERE `id` = '".$_POST['id']."' LIMIT 1");
0

ok dzięki wielkie, działa. Ale wytłumacz mi proszę, jak działałem na localhoscie to od razu zmiennej $id przypisywało mi dane z <select name="id">, więc czemu ten patent nie działał na serwerze yoyo?

0

Wydaję mi się, że zmienna $id miała losową wartość i miałeś akurat 'szczęście', że trafiłeś na pożądaną wartość, która istniała w bazie.
Niestety pewien nie jestem. Może ktoś inny będzie wiedział coś na ten temat.

0

miałeś register_globals włączone, a tego się w praktyce unika i dlatego przestało działać

1 użytkowników online, w tym zalogowanych: 0, gości: 1