[PHP][MySQL]Bardziej zaawansowana edycja rekordów

0

Witam wszystkich użytkowników tego forum.
Mam problem ze skryptem. W sumie gdybym nie miał to nie zakładałbym tego tematu. No ale cóż. Przejdę do rzeczy.

Napisałem skrypt edycji rekordów, ale nie działa tak jakbym chciał. Mianowicie. Na samym początku wybieram kategorie rekordów. Dajmy na to, że w tym przypadku będzie to kategoria "TESTY". Klikam przycisk Wybierz. W tym momencie formularz przenosi mnie do następnego kroku, gdzie do wybrania mam newsy z kategorii TESTY. Więc wybieram teraz rekord, który chcę edytować klikam edytuj i tutaj zaczyna się problem. Zamiast wyświetlić zawartość tego rekordu to otrzymuje informacje, że nie zdeklarowałem wcześniej zmiennych(a są zdeklarowane) oraz komunikat, że notka została zedytowana, a wcale skrypt nie przeszedł do formularz, gdzie mogę edytować rekord. Proszę o pomoc. Nie mogę sobie dać rady z tym skryptem od miesięcy.

edytuj.php

<?php
if(!$_SESSION['access'] || !$_SESSION['login'])
{
	header('Location: index.php');
}
include('include/db.php');
if(isset($_POST['select']))
{
	$wyb = $_POST['select'];
}
if(isset($_POST['nazwa']))
{
	$nazwa = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['nazwa'])));
	$tresc = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['tresc'])));
	if(isset($_POST['plik']))
	{
		$plik = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['plik'])));
	}
}
if(!isset($_POST['select']) && empty($_POST['select']))
{
	echo '<form action="index.php?page=edytuj&wpis=1" method="post">
	<br />Wybierz kategorię:<br /><br /><select name="select">
	<option value="Testy">Testy</option>
	<option value="Arkusz kalkulacyjny">Arkusz kalkulacyjny</option>
	<option value="Bazy danych">Bazy danych</option>
	</select>
	<input name="wybierz" type="submit" value="Wybierz" />
	<br /><br />
	</form><a style="text-decoration: none;" href="index.php?page=paneladmina">Wróć do Panelu Administratora</a><br /><br />';
}
else
{
	if($wyb=='Testy')
	{
		echo '<form action="index.php?page=edytuj&wpis=2" method="post">
		<input type="hidden" name="send" value="2">
		<input type="hidden" name="select" value="'.$wyb.'" /><br />
		Aktualna kategoria to: <strong>'.$wyb.'</strong><br /><br />
		<select name="edycja"> ';
		$zapytanie = "SELECT * FROM `testy` ORDER BY `id` DESC";
		$zapytanie = stripslashes($zapytanie);
		$idzapytania = mysql_query($zapytanie);
		while ($wiersz = mysql_fetch_array($idzapytania))
		echo '<option value="'.$wiersz['id'].'">('.$wiersz['id'].') '.$wiersz['nazwa'].'</option>';
		echo '</select>
		<input name="edytuj" type="submit" value="Edytuj" />';
		echo '<br /><br />
		</form><a style="text-decoration: none;" href="index.php?page=paneladmina">Wróć do Panelu Administratora</a><br /><br />';
	}
	elseif($wyb=='Arkusz kalkulacyjny')
	{
		echo '<form action="index.php?page=edytuj&wpis=2" method="post">
		<input type="hidden" name="send" value="2">
		<input type="hidden" name="select" value="'.$wyb.'" /><br />
		Aktualna kategoria to: <strong>'.$wyb.'</strong><br /><br />
		<select name="edycja"> ';
		$zapytanie = "SELECT * FROM `arkusz_kalkulacyjny` ORDER BY `id` DESC";
		$zapytanie = stripslashes($zapytanie);
		$idzapytania = mysql_query($zapytanie);
		while ($wiersz = mysql_fetch_array($idzapytania))
		echo '<option value="'.$wiersz['id'].'">('.$wiersz['id'].') '.$wiersz['nazwa'].'</option>';
		echo '</select>
		<input name="edytuj" type="submit" value="Edytuj" />';
		echo '<br /><br />
		</form><a style="text-decoration: none;" href="index.php?page=paneladmina">Wróć do Panelu Administratora</a><br /><br />';
	}
	elseif($wyb=='Bazy danych')
	{
		echo '<form action="index.php?page=edytuj&wpis=2" method="post">
		<input type="hidden" name="send" value="2">
		<input type="hidden" name="select" value="'.$wyb.'" /><br />
		Aktualna kategoria to: <strong>'.$wyb.'</strong><br /><br />
		<select name="edycja"> ';
		$zapytanie = "SELECT * FROM `bazy_danych` ORDER BY `id` DESC";
		$zapytanie = stripslashes($zapytanie);
		$idzapytania = mysql_query($zapytanie);
		while ($wiersz = mysql_fetch_array($idzapytania))
		echo '<option value="'.$wiersz['id'].'">('.$wiersz['id'].') '.$wiersz['nazwa'].'</option>';
		echo '</select>
		<input name="edytuj" type="submit" value="Edytuj" />
		<br /><br />';
		echo '</form><a style="text-decoration: none;" href="index.php?page=paneladmina">Wróć do Panelu Administratora</a><br /><br />';
	}
}
if(isset($_POST['edytuj']))
{
	if(!isset($_POST['edycja']) && empty($_POST['edycja']))
	{
		if($wyb=='Testy')
		{
			echo '<div style="text-align:center;"><form action="index.php?page=edytuj&wpis=3" method="post">';
			$zapytanie2 = 'SELECT * FROM `testy` WHERE `id`="'.$_POST['id'].'"';
			$idzapytania2 = mysql_query($zapytanie2);
			while ($wiersz = mysql_fetch_array($idzapytania2))
			echo '<input type="hidden" name="id" value="'.$wiersz['id'].'" />
			<input type="hidden" name="send" value="1">
			<input type="hidden" name="edycja" value="wartość" /><br /> Nazwa<br />
			<input type="text" name="tytul" value="'.stripslashes($wiersz['tytul']).'" size="26" /><br />Treść
			<br /><textarea name="tresc" cols="50" rows="10" id="textarea">'.stripslashes($wiersz['tresc']).'</textarea><br />
			<br />Autor:<br><input type="text" name="autor" value="'.$_SESSION['login'].'" /><br /><br />
			<input name="zapisz" type="submit" value="Zapisz" /><br /> 
			</form><br <br /><br /></div>';
		}
		elseif($wyb=='Arkusz kalkulacyjny')
		{
			echo '<div style="text-align:center;"><form action="index.php?page=edytuj&wpis=3" method="post">';
			$zapytanie2 = 'SELECT * FROM `arkusz_kalkulacyjny` WHERE `id`="'.$_POST['id'].'"';
			$idzapytania2 = mysql_query($zapytanie2);
			while ($wiersz = mysql_fetch_array($idzapytania2))
			echo '<input type="hidden" name="id" value="'.$wiersz['id'].'" />
			<input type="hidden" name="send" value="1">
			<input type="hidden" name="edycja" value="wartość" /><br /> Nazwa<br />
			<input type="text" name="tytul" value="'.stripslashes($wiersz['tytul']).'" size="26" /><br />Treść
			<br /><textarea name="tresc" cols="50" rows="10" id="textarea">'.stripslashes($wiersz['tresc']).'</textarea><br />
			<br />Autor:<br><input type="text" name="autor" value="'.$_SESSION['login'].'" /><br /><br />
			<input name="zapisz" type="submit" value="Zapisz" /><br /> 
			</form><br <br /><br /></div>';
		}
		elseif($wyb=='Bazy danych')
		{
			echo '<div style="text-align:center;"><form action="index.php?page=edytuj&wpis=3" method="post">';
			$zapytanie2 = 'SELECT * FROM `bazy_danych` WHERE `id`="'.$_POST['id'].'"';
			$idzapytania2 = mysql_query($zapytanie2);
			while ($wiersz = mysql_fetch_array($idzapytania2))
			echo '<input type="hidden" name="id" value="'.$wiersz['id'].'" />
			<input type="hidden" name="send" value="1">
			<input type="hidden" name="edycja" value="wartość" /><br /> Nazwa<br />
			<input type="text" name="tytul" value="'.stripslashes($wiersz['tytul']).'" size="26" /><br />Treść
			<br /><textarea name="tresc" cols="50" rows="10" id="textarea">'.stripslashes($wiersz['tresc']).'</textarea><br />
			<br />Autor:<br><input type="text" name="autor" value="'.$_SESSION['login'].'" /><br /><br />
			<input name="zapisz" type="submit" value="Zapisz" /><br /> 
			</form><br <br /><br /></div>';
		}
	}
	else
	{
		if($_POST['edycja'])
		{
			if($wyb=='Testy')
			{
				$zapytanie1 = 'UPDATE `testy` SET `nazwa`= "'.$nazwa.'", `tresc`= "'.$tresc.'", `plik`= "upload/testy/'.$plik_nazwa.'", `adres`= "/testy" WHERE `id`="'.$_POST['id'].'"';
				$idzapytania1 = mysql_query($zapytanie1) or die(mysql_error());
			}
			elseif($wyb=='Arkusz kalkulacyjny')
			{
				$zapytanie1 = 'UPDATE `arkusz_kalkulacyjny` SET `nazwa`= "'.$nazwa.'", `tresc`= "'.$tresc.'", `plik`= "upload/arkusz_kalkulacyjny/'.$plik_nazwa.'", `adres`= "/arkusz_kalkulacyjny" WHERE `id`="'.$_POST['id'].'"';
				$idzapytania1 = mysql_query($zapytanie1) or die(mysql_error());			
			}
			elseif($wyb=='Bazy danych')
			{
				$zapytanie1 = 'UPDATE `bazy_danych` SET `nazwa`= "'.$nazwa.'", `tresc`= "'.$tresc.'", `plik`= "upload/bazy_danych/'.$plik_nazwa.'", `adres`= "/bazy_danych" WHERE `id`="'.$_POST['id'].'"';
				$idzapytania1 = mysql_query($zapytanie1) or die(mysql_error());			
			}
		}
		
	}
}
if(isset($_POST['send']))
{
	if($_POST['send'])
	{
		if(isset($idzapytania1))
		{
			if($idzapytania1 === TRUE)
			{
				echo '<div align="center"><font color="green"><b>Notka została zedytowana.</b></font</div><br />';
			}
			else
			{
				echo '<div style="text-align:center;"><font color="red"><b>Nie udało się zedytować notki. Proszę spróbować za jakiś czas!</b></font</div><br />';
			}
		}
	}
}
mysql_close($connect);
?>

Z góry dziękuje za pomoc ;)
Pozdrawiam :)</span></span>

0

masz lekki bałagan w tym kodzie,
po co używasz różnych nazw submitów, skoro masz różne action w każdym formie? lub na odwrót jeśli wolisz?

Jeżeli dobrze rozumiem ten kod (trochę komentarzy w kodzie by się przydało), to
w linii:

   $zapytanie2 = 'SELECT * FROM `testy` WHERE `id`="'.$_POST['id'].'"';

skąd się wzięło post['id'] ??
w poprzednim formularzu nie ma pola o nazwie id.
chyba chodziło o selecta, który ma nazwę edycja.
więc może ta linia powinna wyglądać tak:

   $zapytanie2 = 'SELECT * FROM `testy` WHERE `id`="'.$_POST['edycja'].'"';

wtedy zapytanie2 będzie zawierać id wiersza wybranego w poprzednim formie.

0

Niestety nie działa

0

D E B U G U J zamiast zadawać głupie pytania na forum...

0

Też kiedyś tak robiłem. Dopóki nie poznałem potęgi wzorca projektowego o nazwie MVC ( Model View Controller ). Do zaawansowanej edycji rekordów jak znalazł :)
W skrócie: całkowite odseparowanie wyglądu od logiki. Masz klasę odpowiedzialną tylko za wygląd, która wyświetla i renderuje wyjście. Może być to HTML, może być to RSS, cokolwiek. Masz także klasę odpowiedzialną tylko za pobieranie/zapis danych do bazy. Wszelkie funkcje w tej klasie nic nie wyświetlają ( żadnych echo ). Połączeniem tych dwóch klas zajmuje się kontroler.
Najlepiej opanujesz podstawy przy pomocy frameworka Kohana, spróbuj :)

0

A nie wystarczą smarty? Masz widok, masz kontroler. Do nauki starczy, ewentualnie coś mądrzejszego do obsługi MySQLa niż gołe mysql_connect. PDO, czy własna klasa.

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