Internetowa książka adresowa

0

Jeśli chodzi o dodawanie i usuwanie rekordow, to spox...nie mam z tym problemów. Caly dzien dzisiejszy się jednak morduję z kodem podręcznikowym (i tak już poprawiłem mase błędów) ...kodem dotyczącym uzupełniania rekordów, czyli mam jakiś rekord i chcę dopisać do niego jakieś dane.
Cały czas mi wywala, że jest niezidentyfikowany index id_glowny oraz index notatka i jeszcze jakieś inne Dzisiaj po prostu już nikt mi nie powie, że czekam na gotowca,bo nie czekam. Tylko po prostu mnie wpienia do czerwoności pozbawione produktywności "odbłędzanie" podręcznikowego kodu, który powinien być napisany w tym podręczniku jasno i bez błędów. Ludzie, mowie wam co za koszmar, cały piep... dzień i nic już nie wiem...

Pliki są dwa: dodajwpis.php oraz wybierzwpis.php i są ze sobą zlinkowane metodami post i get.

Kody są duże i sory za to, ale co zrobić...taki life...
To jest: dodajwpis...

<?php
$mysqli=mysqli_connect("localhost","root","jakieshaslo","nauka");
if (!$_POST)
	{
$Wyswietl="<h1>Wybierz wpis</h1>";
 $pobieranie_listy_sql="SELECT id, CONCAT_WS(', ',nazwisko,imie) AS
 personalia FROM glowna_nazwiska ORDER BY nazwisko,imie";
 $wykon_pobieranie=mysqli_query($mysqli,$pobieranie_listy_sql) 
 or die (mysqli_error($mysqli));
 if (mysqli_num_rows($wykon_pobieranie)<1)
 {
 $Wyswietl="<p>Niestety baza jest pusta</p>";
 }
 else
 {
 $Wyswietl .="
 <form method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">
 <p><strong>Wybierz rekord: </strong><br>
 <select name=\"wybrany_id\">
 <option value=\"\">Wybierz jeden</option>";
	 
while ($rek=mysqli_fetch_array($wykon_pobieranie))
{
$id=$rek["id"];
$personalia=$rek["personalia"];
$Wyswietl.="<option value=\"".$id."\">".$personalia."</option>";
}
$Wyswietl .="
</select>
<p><input type=\"submit\" name=\"submit\" value=\"zobacz wpis\"></p>
</form>";
 }
 mysqli_free_result($wykon_pobieranie);
}
else if ($_POST)
{
if ($_POST["wybrany_id"]=="")
{
header("Location: wybierzwpis.php");
exit;
}
else
{
$pobierz_glowna_sql="SELECT CONCAT_WS(', ',nazwisko,imie) AS 
personalia FROM glowna_nazwiska WHERE id='".$_POST["wybrany_id"]."'";
$wykonaj_glowna_sql=mysqli_query($mysqli,$pobierz_glowna_sql)
or die(mysqli_error($mysqli));
while ($personalia_info=mysqli_fetch_array($wykonaj_glowna_sql))
{
$personalia=$personalia_info["personalia"];
}
$Wyswietl="<h1>Ukazywany wpis: ".$personalia."</h1>";
mysqli_free_result($wykonaj_glowna_sql);
/* granica miedzy tabela glowna_nazwa a adres */
$pobierz_adresy_sql="SELECT adres, miasto, wojewodztwo, kod,
typ FROM adres WHERE id_glowny='".$_POST["wybrany_id"]."'";
$wykon_sql=mysqli_query($mysqli,$pobierz_adresy_sql)
or die(mysqli_error($mysqli));
if (mysqli_num_rows($wykon_sql)>0)
{
	$Wyswietl .="<p><strong>Adresy: </strong><br>
<ul>";
while ($add_info = mysqli_fetch_array($wykon_sql))
{
	$adres=$add_info["adres"];
	$miasto=$add_info["miasto"];
	$wojewodztwo=$add_info["wojewodztwo"];
	$kod=$add_info["kod"];
	$typ=$add_info["typ"];
	}
	$Wyswietl .="<li>$adres $miasto $wojewodztwo $kod $typ</li>";
	}
	$Wyswietl .="</ul>";
	}
	mysqli_free_result($wykon_sql);
	/* granica miedzy  tabela adres a telefon */
	$pobierz_tel_sql="SELECT telefon, typ FROM telefon WHERE 
	id_glowny='".$_POST["wybrany_id"]."'";
	$wykon_tel_sql=mysqli_query($mysqli,$pobierz_tel_sql)
	or die (mysqli_error($mysqli));
	if (mysqli_num_rows($wykon_tel_sql)>0)
	{
	$Wyswietl .="<p><strong>Telefony: </strong><br>
	<ul>";
	while ($tel_info = mysqli_fetch_array($wykon_tel_sql))
	{
	$telefon=$tel_info["telefon"];
	$typ=$tel_info["typ"];
	}
	$Wyswietl .="<li>$telefon $typ</li>";
	}	
	$Wyswietl .="</ul>";
	
	mysqli_free_result($wykon_tel_sql);
	/* granica miedzy tabela telefon a faks*/
	$pobierz_faks_sql="SELECT fax, typ FROM fax WHERE 
	id_glowny='".$_POST["wybrany_id"]."'";
	$wykon_faks_sql=mysqli_query($mysqli,$pobierz_faks_sql)
	or die(mysqli_error($mysqli));
	if (mysqli_num_rows($wykon_faks_sql)>0)
	{
	$Wyswietl .="<p><strong>Faksy: </strong><br>
	<ul>";
	while ($faks_info=mysqli_fetch_array($wykon_faks_sql))
	{
	$fax=$faks_info["fax"];
	$typ=$faks_info["typ"];
	}
	$Wyswietl .="<li>$fax $typ</li>";
	}
	$Wyswietl .="</ul>";
	mysqli_free_result($wykon_faks_sql);
	/* granica miedzy tabela faks a email */
	$pobierz_email_sql="SELECT email, typ FROM email WHERE
	id_glowny='".$_POST["wybrany_id"]."'";
	$wykon_email_sql=mysqli_query($mysqli,$pobierz_email_sql)
	or die(mysqli_error($mysqli));
	if (mysqli_num_rows($wykon_email_sql)>0)
	{
	$Wyswietl .="<p><strong>Emaile </strong><br>
	<ul>";
	while ($email_info=mysqli_fetch_array($wykon_email_sql))
	{
	$email=$email_info["email"];
	$typ=$email_info["typ"];
	}
	$Wyswietl .="<li>$email $typ</li>";
	$Wyswietl .="</ul>";
	}
	mysqli_free_result($wykon_email_sql);
	/* granica miedzy tabela email a notatki */
	$pobierz_not_sql="SELECT notatka FROM notatki WHERE
	id_glowny='".$_POST["wybrany_id"]."'";
	$wykon_not_sql=mysqli_query($mysqli,$pobierz_not_sql)
	or die(mysqli_error($mysqli));
	if (mysqli_num_rows($wykon_not_sql)===1)
	{
	$Wyswietl .="<p><strong>Notatki: </strong><br>";
	while ($not_info=mysqli_fetch_array($wykon_not_sql))
	{
		$notatki=$not_info["notatka"];
	}
	$Wyswietl .="<p>$notatki</p>";
	
	}	else if (mysqli_num_rows($wykon_not_sql)<1)
	{
				$Wyswietl = "<p>Brak notatek</p>";
	}
	$Wyswietl.="<br>
	<p align=\"center\">
	<a href=\"dodajwpis3.php?glowny_id=".$_POST["wybrany_id"]."\">Dodaj dane</a>
	<a href=\"".$_SERVER["PHP_SELF"]."\">WYBIERZ INNY</a></p>";
	} /* koniec ($_post) */	

		

?>
<html>
<head><title>lista</title>
</head>
<body>
<?php echo $Wyswietl; ?>
</body>
</html>

A to jest: wybierz wpis...

<?php
$mysqli=mysqli_connect("localhost","root","jakieshaslo","nauka");
if (!$_POST)
	{
	 $Wyswietl="<h1>Wybierz wpis</h1>";
	 
	 $pobieranie_listy_sql="SELECT id, CONCAT_WS(', ',nazwisko,imie) AS
	 personalia FROM glowna_nazwiska ORDER BY nazwisko,imie";
	 $wykon_pobieranie=mysqli_query($mysqli,$pobieranie_listy_sql) 
	 or die (mysqli_error($mysqli));
	 if (mysqli_num_rows($wykon_pobieranie)<1)
	 {
	 $Wyswietl="<p>Niestety baza jest pusta</p>";
	 }
	 else
	 {
	 $Wyswietl .="
	 <form method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">
	 <p><strong>Wybierz rekord: </strong><br>
	 <select name=\"wybrany_id\">
	 <option value=\"\">Wybierz jeden</option>";
	 
			while ($rek=mysqli_fetch_array($wykon_pobieranie))
			{
				$id=$rek["id"];
				$personalia=$rek["personalia"];
				$Wyswietl.="<option value=\"".$id."\">".$personalia."</option>";
			}
		$Wyswietl .="
		</select>
		<p><input type=\"submit\" name=\"submit\" value=\"zobacz wpis\"></p>
		</form>";
		}
			 mysqli_free_result($wykon_pobieranie);
	}
	else if ($_POST)
	{
		if ($_POST["wybrany_id"]=="")
		{
			header("Location: wybierzwpis3.php");
			exit;
		}
		else
		{
			$pobierz_glowna_sql="SELECT CONCAT_WS(', ',nazwisko,imie) AS 
			personalia FROM glowna_nazwiska WHERE id='".$_POST["wybrany_id"]."'";
			$wykonaj_glowna_sql=mysqli_query($mysqli,$pobierz_glowna_sql)
			or die(mysqli_error($mysqli));
			while ($personalia_info=mysqli_fetch_array($wykonaj_glowna_sql))
			{
				$personalia=$personalia_info["personalia"];
			}
			$Wyswietl="<h1>Ukazywany wpis: ".$personalia."</h1>";
			mysqli_free_result($wykonaj_glowna_sql);
			/* granica miedzy tabela glowna_nazwa a adres */
			$pobierz_adresy_sql="SELECT adres, miasto, wojewodztwo, kod,
			typ FROM adres WHERE id_glowny='".$_POST["wybrany_id"]."'";
			$wykon_sql=mysqli_query($mysqli,$pobierz_adresy_sql)
			or die(mysqli_error($mysqli));
			if (mysqli_num_rows($wykon_sql)>0)
			{
				$Wyswietl .="<p><strong>Adresy: </strong><br>
				<ul>";
				while ($add_info = mysqli_fetch_array($wykon_sql))
				{
					$adres=$add_info["adres"];
					$miasto=$add_info["miasto"];
					$wojewodztwo=$add_info["wojewodztwo"];
					$kod=$add_info["kod"];
					$typ=$add_info["typ"];
				}
				$Wyswietl .="<li>$adres $miasto $wojewodztwo $kod $typ</li>";
			}
			$Wyswietl .="</ul>";
		}
		mysqli_free_result($wykon_sql);
			/* granica miedzy  tabela adres a telefon */
			$pobierz_tel_sql="SELECT telefon, typ FROM telefon WHERE 
			id_glowny='".$_POST["wybrany_id"]."'";
			$wykon_tel_sql=mysqli_query($mysqli,$pobierz_tel_sql)
			or die (mysqli_error($mysqli));
			if (mysqli_num_rows($wykon_tel_sql)>0)
			{
				$Wyswietl .="<p><strong>Telefony: </strong><br>
				<ul>";
				while ($tel_info = mysqli_fetch_array($wykon_tel_sql))
				{
					$telefon=$tel_info["telefon"];
					$typ=$tel_info["typ"];
				}
				$Wyswietl .="<li>$telefon $typ</li>";
			}	
			$Wyswietl .="</ul>";
		
		mysqli_free_result($wykon_tel_sql);
			/* granica miedzy tabela telefon a faks*/
			$pobierz_faks_sql="SELECT fax, typ FROM fax WHERE 
			id_glowny='".$_POST["wybrany_id"]."'";
			$wykon_faks_sql=mysqli_query($mysqli,$pobierz_faks_sql)
			or die(mysqli_error($mysqli));
			if (mysqli_num_rows($wykon_faks_sql)>0)
			{
				$Wyswietl .="<p><strong>Faksy: </strong><br>
				<ul>";
				while ($faks_info=mysqli_fetch_array($wykon_faks_sql))
				{
					$fax=$faks_info["fax"];
					$typ=$faks_info["typ"];
				}
				$Wyswietl .="<li>$fax $typ</li>";
			}
			$Wyswietl .="</ul>";
			mysqli_free_result($wykon_faks_sql);
			/* granica miedzy tabela faks a email */
			$pobierz_email_sql="SELECT email, typ FROM email WHERE
			id_glowny='".$_POST["wybrany_id"]."'";
			$wykon_email_sql=mysqli_query($mysqli,$pobierz_email_sql)
			or die(mysqli_error($mysqli));
			if (mysqli_num_rows($wykon_email_sql)>0)
			{
				$Wyswietl .="<p><strong>Emaile </strong><br>
				<ul>";
				while ($email_info=mysqli_fetch_array($wykon_email_sql))
				{
					$email=$email_info["email"];
					$typ=$email_info["typ"];
				}
				$Wyswietl .="<li>$email $typ</li>";
				$Wyswietl .="</ul>";
			}
			mysqli_free_result($wykon_email_sql);
			/* granica miedzy tabela email a notatki */
			$pobierz_not_sql="SELECT notatka FROM notatki WHERE
			id_glowny='".$_POST["wybrany_id"]."'";
			$wykon_not_sql=mysqli_query($mysqli,$pobierz_not_sql)
			or die(mysqli_error($mysqli));
			if (mysqli_num_rows($wykon_not_sql)===1)
			{
				$Wyswietl .="<p><strong>Notatki: </strong><br>";
				while ($not_info=mysqli_fetch_array($wykon_not_sql))
				{
					$notatki=$not_info["notatka"];
				}
				$Wyswietl .="<p>$notatki</p>";
				
			}	else if (mysqli_num_rows($wykon_not_sql)<1)
			{
				$Wyswietl = "<p>Brak notatek</p>";
			}
			$Wyswietl.="<br>
			<p align=\"center\">
			<a href=\"dodajwpis3.php?glowny_id=".$_POST["wybrany_id"]."\">Dodaj dane</a>
			<a href=\"".$_SERVER["PHP_SELF"]."\">WYBIERZ INNY</a></p>";
	
		} /* koniec ($_post) */	

		

?>
<html>
<head><title>lista</title>
</head>
<body>
<?php echo $Wyswietl; ?>
</body>
</html>

I po prostu za cieżką ch... nie ogarniam tego. Dodaj i usuń...czaję i wszystko gra, a tutaj po prostu czort jakiś. Tak błądzę, żę jezu...

0

Zasadniczo chodzi o to, że po dodaniu rekordu mogę chcieć go jakoś uzupełnić. Jeśli mam numer telefonu domowy, to po przeslaniu danych mogę chcieć wrócić i dorzucić jeszcze tel do pracy.

Jeszcze raz sory za taką dużą ilość kodu. Dzisiaj już prawdopodobnie się tego nie da przeanalizować.

0

Nie wiem jak reszta uzytkownikow, ale ja bylbym za tym, zeby do tego typu pytan umieszczac w zalaczeniu plik wyeksportowanej bazy danych. Oczywiscie nie chodzi tu o to, aby ktos wysylal pareset megowego dumpa - wystarczy struktura bazy + podstawowe rekordy ulatwiajace analize problemu.

0
tk napisał(a):

Nie wiem jak reszta uzytkownikow, ale ja bylbym za tym, zeby do tego typu pytan umieszczac w zalaczeniu plik wyeksportowanej bazy danych. Oczywiscie nie chodzi tu o to, aby ktos wysylal pareset megowego dumpa - wystarczy struktura bazy + podstawowe rekordy ulatwiajace analize problemu.

Spoko...no to tak:
tabela1: glowna_nazwiska (id,data_dodania, data_modyfikacji,imie, nazwisko);
tabela2:adres (id, id_glowny,data_dodania, data_modyfikacji,adres, typ[enum:'dom','praca','inne']);
tabela3:telefon (id, id_glowny,data_dodania, data_modyfikacji, telefon, typ[enum:'dom','praca','inne']);
tabela4:fax (id, id_glowny,data_dodania, data_modyfikacji, fax, typ[enum:'dom','praca','inne']);
tabela5: notatki(id, id_glowny,data_dodania, data_modyfikacji, notatka);

I powiedzmy dodaje: Maciej Kowalski,adres.praca, telefon.praca, fax.praca, notatki i teraz klikam przycisk "uzupełnij" i powiedzmy dopisuje do Macieja Kowalskiego adres dom, telefon dom, fax dom i bez notatek.

Mam nadzieje, że ten opis tabel trochę pomoże.


Ale widzę, że nieźle z postem przyfasoliłem;-)

0

Troche nie o to mi chodzilo :)

Jezeli masz cos takiego jak phpMyAdmin to zaloguj sie do niego, wybierz swoja baze i wyeksportuj baze do pliku. Jezeli nie masz phpMyAdmina to wejdz do konsoli i wykonaj nastepujaca komende:

mysqldump [tutaj nazwa bazy] > [tutaj sciezka do wyeksportowanego pliku]

Wygenerowany plik umiesc w zalaczniku. Chodzi o to, ze bez utworzonych tabel w bazie danych trudniej sie analizuje takie problemy. Co wiecej, skrypt moze byc calkiem ok - problem moze wynikac ze struktury bazy. Powyzszy zabieg znacznie ulatwia sprawe - nikt nie musi zgadywac co masz w bazie, nikt nie musi jej recznie tworzyc. Dwa klikniecia i mam taka sama strukture bazy jak u Ciebie :)

0

W pliku dodajwpis3.php w linii chyba 6 dodalem to: if (isset($_GET["id_glowny"]), dzięki czemu nie wywala mi żadnych błędów. Co jednak z tego, skoro teraz nie dodaje mi rekordów. Jak już wspominałem, w odróżnieniu od poprzednich ćwiczeń dotyczących dodawania i usuwania, przy tym kompletnie się pogubiłem.

Przy okazji chciałbym powiedzieć WIELKIE SORY w związku z bałaganem w treści rekordów tabel. Po prostu celem przetestowania pisałem w komórkach cokolwiek. Myślę jednak, że błąd nie tkwi w samej strukturze bazy, bo na tej samej bazie wykonywałem poprzednie ćwiczenia i problemów nie miałem wtedy żadnych. To musi być jakiś błąd w samym pliku dodajwpis3.php

Dla porządku chciałem też zaznaczyć, że plik dodajwpis3.php wcześniej robił co innego i po prostu na etapie kolejnego ćwiczenia (tego, z którym mam teraz problem) z pomocą podręcznika zacząłem go modyfikować;-) No i się wtedy właśnie zaczęło.

0
finito napisał(a):

W pliku dodajwpis3.php w linii chyba 6 dodalem to: if (isset($_GET["id_glowny"]), dzięki czemu nie wywala mi żadnych błędów. Co jednak z tego, skoro teraz nie dodaje mi rekordów. Jak już wspominałem, w odróżnieniu od poprzednich ćwiczeń dotyczących dodawania i usuwania, przy tym kompletnie się pogubiłem.

Przy okazji chciałbym powiedzieć WIELKIE SORY w związku z bałaganem w treści rekordów tabel. Po prostu celem przetestowania pisałem w komórkach cokolwiek. Myślę jednak, że błąd nie tkwi w samej strukturze bazy, bo na tej samej bazie wykonywałem poprzednie ćwiczenia i problemów nie miałem wtedy żadnych. To musi być jakiś błąd w samym pliku dodajwpis3.php

Dla porządku chciałem też zaznaczyć, że plik dodajwpis3.php wcześniej robił co innego i po prostu na etapie kolejnego ćwiczenia (tego, z którym mam teraz problem) z pomocą podręcznika zacząłem go modyfikować;-) No i się wtedy właśnie zaczęło.

Przede wszystkim proponowalbym dodac na poczatku skryptu nastepujacy kod:

<pre>
<?php
    echo 'dane post ';
    var_dump($_POST);
    echo 'dane get ';
    var_dump($_GET);
?>
</pre>

Umozliwi Ci to na biezaco podglad dwoch istotnych dla Ciebie tablic: $_POST i $_GET

Jezeli napiszesz pozniej warunek typu

if (isset($_GET["id_glowny"])) {
	//jakis kod 
}

To pierwsze co zrob, to sprawdz czy to cale "id_glowny" znajduje sie w tablicy $_GET (wartosci tej tablicy od teraz pojawi Ci sie na ekranie).

Przede wszystkim chcialbym podkreslic, ze wiekszosc problemow ktore napotykasz wynikaja wlasnie z tego, ze nie masz odpowiednich pol w jednej z powyzszych tablic, lub ewentualnie mozesz je miec, ale moga miec wartosc inna niz Ci sie wydaje.

Dla scislosci: problemy z wyswietleniem bledu zniknely po wprowadzeniu powyzszego warunku poniewaz kod w nim zawarty nigdy sie nie uruchamial. A nie uruchamial sie dlatego, ze w tablicy $_GET nie masz pola id_glowny. Co wiecej: jezeli wysylasz jakies dane metoda POST i chcesz przekazac jakies argumenty GETem to powinienes je przekazac w atrybucie action (tag form). Sprawdzaj sobie czy rzeczywiscie wyglada to tak jak powinno.

Bledy moga wynikac takze z tego, ze czasami odwolujesz sie do pola id_glowny a czasami do glowny_id.

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