podzapytania sql

0

Witam, mam taki problem. Mam w bazie danych 3 tabele:
zawodnik

ID_ZAWODNIKA IMIE NAZWISKO ID_ZESPOLU
1 MARC MARQUEZ 1
2 DANI PEDROSA 1
3 VALENTINO ROSSI 2
4 JORGE LORENZO 2

zespol

NAZWA ID_ZAWODNIKA IMIE NAZWISKO
REPSOL TEAM HONDA 1 MARC MARQUEZ
REPSOL TEAM HONDA 2 DANI PEDROSA
MOVISTAR YAMAHA 3 VALENTINO ROSSI
MOVISTAR YAMAHA 4 JORGE LORENZO

oraz wyscig

ID_WYSCIGU NAZWA ID_ZAWODNIKA ILOSC_OKRAZEN
1 GP KATARU 1 23
2 GP USA 1 23
3 GP ARGENTYNY 3 19
4 GP HISZPANII 1 21

i teraz moje pytanie, jak mogę zrobić takie podzapytanie, żeby wyświetliło mi nazwisko zawodnika, który wygrał dany wyścig (w tabeli wyscig, id_zawodniku to jako zwycięzca)

dodam jeszcze, że nie mogę zrobić tak, żebym w danym zespole miał ID, 1, 1, 2, 2 i zrobił to tak, gdyż nie mogę duplikować Primary Key:
zespol

ID_ZESPOLU NAZWA ID_ZAWODNIKA IMIE NAZWISKO
1 REPSOL TEAM HONDA 1 MARC MARQUEZ
1 REPSOL TEAM HONDA 2 DANI PEDROSA
2 MOVISTAR YAMAHA 3 VALENTINO ROSSI
2 MOVISTAR YAMAHA 4 JORGE LORENZO

jakieś rady?

Pozdrawiam.

1

Na początek troszkę bez sensu tabele zrobiłes.
Tabele Zespol zostaw jako slownik z kolumnami Zespol_ID i Nazwa(Wtedy beda tam tylko 2 rekordy w tym przypadku)
Niech Zespol_ID będzie kluczem obcym w tabeli Zawodnik. W ten sposob bedziesz w stanie okreslic ktory zawodnik gra w ktorym zespole.
Wskazowka: Zrob inner joiny trzech tabel po kluczach obcych. Wybierz z tabeli wyscig zawodnka o najwiekszej liczbie okrazen. MySql chyba nie supportuje CTE wiec bedziesz musial potem uzyc tabeli tymczasowej albo podzapytanie zmajstrowac zeby reszte danych wyciagnac.

0

Najpierw tak jak mówi Ldr bo tabele masz bez sensu (redundancja wystpeuje)
Pózniej mozesz dac

SELECT max(wy.ilosc_okrazen), za.imie, za.nazwisko , ze.nazwa
FROM wyscig wy
JOIN zawodnik za ON (za.id_zawodnika = wy.id_zawodnika)
JOIN zespol ze ON (ze.id_zawodnika = wy.id_zawodnika)
GROUP BY za.imie, za.nazwisko, ze.nazwa;

może jakoś tak się da

0

zatem, mam teraz tak:

tabela zawodnik:
http://i.imgur.com/tdkTkIC.jpg

tabela zespol:
http://i.imgur.com/IK1z6xW.jpg

tabela wyscig:
http://i.imgur.com/8jVXwc3.jpg

niestety nie mogę wrzucić obrazków, i teraz mam je po prostu inner joinem zrobić, tak?

pozdrawiam, i dziękuję za odpowiedzi

0

ok, to teraz jeszcze poczytać jak tego joina zrobić i ogarnąć jakieś zapytania/podzapytania. Wybaczcie, że o takie banalne sprawy pytam, ale BD nie są moją mocną stroną (zdecydowanie wolę inne zagadnienia z informatyki) ale zaliczyć to muszę ;)

1

Masz tabelki najprosciej mowiąc zaczniemy od dwóch.

Table: USERS

ID NICK PHONE_NO
1 Sathor 877678872223
2 Asha 252552
3 Neig 82878923

Z tej tabelki możesz wybrać numer telefonu dla danego użytkownika jeśli znasz jego NICK albo ID zgadza się ?

SELECT * FROM users WHERE id = 1;
SELECT * FROM users WHERE nick = 'SATHOR';

Czasem występują dłuuuuugie nazwy tabel, to dobra praktyka ale żeby sobie ułatwić zadanie ja osobiście dla jednoimiennej tabeli daje 3 litery a dla kilkuimiennej daje początki liter kolejnych nazw. Przykładowa tabela wyżej nazywa sie USERS więć ja robie tak:

SELECT u.* FROM users u WHERE u.id = 2;
SELECT usr.nick, usr.phone FROM users usr WHERE usr.id = 3;

Wszystko jasne mam nadzieję. Teraz poniżej zrobimy tabelke z danymi usera nazwiemy ja:

USERS_DATA

ID ID_USERS ADDRESS CITY
1 1 street 13 Honolulu
2 2 17 street San Francisco
3 3 22 street New York

Ponieważ tabelka w nazwie ma dwa człony ja zrobiłbym:

SELECT ud.address, ud.city FROM users_data ud WHERE ud.id_users = 3;

Jeżeli tabelki w skrótach się powtarzają to możesz robic 4 pierwsze litery albo jak chcesz nazywać.

Powyższe zapytanie wybierze Ci wiadomo, adres i miasto i wiesz że dotyczy to użytkownika 1. Więc recznie możesz wybrać usera o ID 1 i już znasz jego imie, i telefon. Troche słabe ale zawsze to jakis sposób gdy musisz wybrać 1000 osob przynajmniej tym sposobem masz prace na kilka dni zapewnioną. Teraz jak łączyć tabelki ?

Wybierasz z USERS_DATA wszystkie dane na początek:

SELECT ud.id_users, ud.address, ud.city FROM users_data ud WHERE ud.id = 1;

W pierwszym polu dostaniesz ID_USERS i teraz musisz dołączyć tabelkę. Pytanie jak chcesz połączyć tabelę?
Co ma wspólnego tabela USERS z USERS_DATA , a no ma wspólne id_users i po tym ID musisz je polączyć.

SELECT ud.id_users, ud.address, ud.city, usr.name, usr.phone
FROM users_data ud
JOIN users usr ON (ud.id_users = usr.id)
WHERE ud.id = 1;

Jak widzisz polączyliśmy tabele users która ma id z tabelą users_data ktora ma pole id_users.
Dodaliśmy usr.name, usr.phone no bo to usr żebyś wiedział z jakiej tabeli masz.
Można dać SELECT ud., usr.
Specjalnie dałem "SELECT ud.id_users, ud.address, ud." ale żeby łączyć tabelki nie musisz wybierać tego ud.id_users
możesz spokojnie zrobić:

SELECT ud.address, ud.city, usr.name, usr.phone
FROM users_data ud
JOIN users usr ON (ud.id_users = usr.id)
WHERE ud.id = 1;

I też zadziała. Jeśli chcesz 200 innych tabelek robisz to samo.
Ale dobrą metodą jest wyjęcie danych z jednej tabeli z tym identyfikatorem który jest relacją z inna tabela i potem dołączasz te tabelke wyciągasz dane i potem kolejną i kolejną. Jak juz opanujesz stopieni mistrza mozesz laczyc wszystkie i na koncu zobaczyć co wyjdzie. To tak w skrócie.

0

coby nowego tematu nie zakładać (chyba że trzeba), to mam takie pytanie, mam pewien skrypt umieszczony niżej na tej stronce: http://afonfara.meximas.com/cw7/przepisy.php
jednakże, nie wrzuca mi dodanego rekordu do bazy, strzelam, że gdzieś mam jakiś błąd :D ktoś może mnie nakierować?

 <?php 
// podłączamy plik  connection.php 
require "connection.php"; 
// wywołujemy funkcję connection() 
connection(); 
?>

<?php
	$wynik = mysql_query("SELECT * FROM zawodnik")
	or die('BÅ‚Ä…d zapytania');


if(mysql_num_rows($wynik) > 0) {
    /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
    echo "<table cellpadding=\"2\" border=1>";
			echo "<tr>";
			echo "<td>ID_ZAWODNIKA</td>";
			echo "<td>IMIE</td>";
			echo "<td>NAZWISKO</td>";
			echo "<td>NUMER</td>";
			echo "<td>ID_ZESPOLU</td>";
			echo "</tr>";
			
    while($r = mysql_fetch_assoc($wynik)) {
        echo "<tr>";
		echo "<td>".$r['ID_ZAWODNIKA']."</td>";
		echo "<td>".$r['IMIE']."</td>";
		echo "<td>".$r['NAZWISKO']."</td>";
                echo "<td>".$r['NUMER']."</td>";
                echo "<td>".$r['ID_ZESPOLU']."</td>";
        echo "</tr>";
    }
	 echo "</table>";
	 
	 ?>
	 <br><br>
	<form action="przepisy.php" method="post"> 

	Imie:<br /> 
	<input type="text" name="Imie" /><br /> 
	Nazwisko:<br /> 
	<input type="text" name="Nazwisko" /><br /> 
	Numer:<br /> 
	<input type="text" name="Numer" /><br /> 
	ID Zespolu:<br /> 
	<input type="text" name="Zespol" /><br /> 
	<input type="submit" value="Dodaj" /> 

	
	</form>
	



   <?php 
 
// odbieramy dane z formularza 

$ID_ZAWODNIKA = $_POST['ID_ZAWODNIKA']; 
$IMIE = $_POST['IMIE']; 
$NAZWISKO = $_POST['NAZWISKO']; 
$NUMER = $_POST['NUMER']; 
$ID_ZESPOLU = $_POST['ID_ZESPOLU'];  

if($IMIE && $NAZWISKO && $NUMER && $ID_ZESPOLU) { 


	
    // dodajemy rekord do bazy 
    //$ins = mysql_query("INSERT INTO zawodnik (ID_ZAWODNIKA, IMIE, NAZWISKO, NUMER, ID_ZESPOLU) values(NULL, '$IMIE', '$NAZWISKO', '$NUMER', '$ID_ZESPOLU')");
    $ins = mysql_query("INSERT INTO zawodnik SET ID_ZAWODNIKA = NULL, IMIE='$IMIE', NAZWISKO='$NAZWISKO', NUMER='$NUMER', ID_ZESPOLU='$ID_ZESPOLU'"); 
     
    if($ins) echo "Rekord został dodany poprawnie"; 
    else {echo "Błąd nie udało się dodać nowego rekordu"; 
    die('blabla'.mysql_error());
	}
}

}


?> 


		
0

Masz źle skonstruowane zapytanie, powinno być:

$query = 

INSERT INTO zawodnik (imie,nazwisko,numer,id_zespolu)
VALUES ('$imie','$nazwisko','$numer','$id_zespolu');


```php
if(mysql_query($query){
//cos jak dziala
}
else{
// cos gdy nie dziala
}

oraz w tym miejscu:

if($IMIE && $NAZWISKO && $NUMER && $ID_ZESPOLU)

Lepiej bedzie jak wykorzystasz funkcje empty:

if(!empty($IMIE)   && !empty($NAZWISKO)  && !empty($NUMER) && !empty($ID_ZESPOLU))
0

tak, pole ID_ZAWODNIKA jest autoinkrementowane, zmieniłem tak jak radziłeś:

 <?php 
// podłączamy plik  connection.php 
require "connection.php"; 
// wywołujemy funkcję connection() 
connection(); 
?>

<?php
	$wynik = mysql_query("SELECT * FROM zawodnik")
	or die('BÅ‚Ä…d zapytania');


if(mysql_num_rows($wynik) > 0) {
    /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
    echo "<table cellpadding=\"2\" border=1>";
			echo "<tr>";
			echo "<td>ID_ZAWODNIKA</td>";
			echo "<td>IMIE</td>";
			echo "<td>NAZWISKO</td>";
			echo "<td>NUMER</td>";
			echo "<td>ID_ZESPOLU</td>";
			echo "</tr>";
			
    while($r = mysql_fetch_assoc($wynik)) {
        echo "<tr>";
		echo "<td>".$r['ID_ZAWODNIKA']."</td>";
		echo "<td>".$r['IMIE']."</td>";
		echo "<td>".$r['NAZWISKO']."</td>";
        echo "<td>".$r['NUMER']."</td>";
        echo "<td>".$r['ID_ZESPOLU']."</td>";
        echo "</tr>";
    }
	 echo "</table>";
	 
	 ?>
	 <br><br>
	<form action="przepisy.php" method="post"> 

	Imie:<br /> 
	<input type="text" name="Imie" /><br /> 
	Nazwisko:<br /> 
	<input type="text" name="Nazwisko" /><br /> 
	Numer:<br /> 
	<input type="text" name="Numer" /><br /> 
	ID Zespolu:<br /> 
	<input type="text" name="Zespol" /><br /> 
	<input type="submit" value="Dodaj" /> 

	
	</form>
	



   <?php 
 
// odbieramy dane z formularza 

$ID_ZAWODNIKA = $_POST['ID_ZAWODNIKA']; 
$IMIE = $_POST['IMIE']; 
$NAZWISKO = $_POST['NAZWISKO']; 
$NUMER = $_POST['NUMER']; 
$ID_ZESPOLU = $_POST['ID_ZESPOLU'];  

//if($IMIE && $NAZWISKO && $NUMER && $ID_ZESPOLU) 
if(!empty($IMIE)   && !empty($NAZWISKO)  && !empty($NUMER) && !empty($ID_ZESPOLU))
{ 


	
    // dodajemy rekord do bazy 
    //$ins = mysql_query("INSERT INTO zawodnik (ID_ZAWODNIKA, IMIE, NAZWISKO, NUMER, ID_ZESPOLU) values(NULL, '$IMIE', '$NAZWISKO', '$NUMER', '$ID_ZESPOLU')");
    //$ins = mysql_query("INSERT INTO zawodnik SET ID_ZAWODNIKA = '9', IMIE='$IMIE', NAZWISKO='$NAZWISKO', NUMER='$NUMER', ID_ZESPOLU='$ID_ZESPOLU'"); 
     
    //$query="INSERT INTO zawodnik (IMIE, NAZWISKO, NUMER, ID_ZESPOLU) VALUES('$IMIE', '$NAZWISKO', '$NUMER', '$ID_ZESPOLU')";

    $query = INSERT INTO zawodnik (IMIE, NAZWISKO, NUMER, ID_ZESPOLU)VALUES ('$IMIE','$NAZWISKO','$NUMER','$ID_ZESPOLU');
    $result= $dblink->query($query) or die ("Nie mo&#380;na wykona&#263; polecenia: " . $dblink ->error());
    
    //if($ins) echo "Rekord został dodany poprawnie"; 
    //else {echo "Błąd nie udało się dodać nowego rekordu"; 
    
    if(mysql_query($query){
       echo "Rekord został dodany poprawnie";
    }
    else{
       echo "Błąd nie udało się dodać nowego rekordu"; 
       die('blabla'.mysql_error());
    }
}

}


?> 


i teraz nie wyświetla się totalnie nic :/
http://afonfara.meximas.com/cw7/przepisy.php
co skopałem? pozdrawiam

0
$result= $dblink->query($query) or die ("Nie mo&#380;na wykona&#263; polecenia: " . $dblink ->error());

co to jest w ogóle ? wywal te linijke i powinno dzialac

0

znajomy polecił mi tego używać, wywaliłem, ale dalej bez rezultatów.

0

oj Artur ,Artur ty sie nie sluchaj znajomego tylko sam rob. I tak przy okazji "spróbUj" pisze się SPRÓBUJ.
Zrób tak: zaraz przed tym kodem:

//if($IMIE && $NAZWISKO && $NUMER && $ID_ZESPOLU) 
if(!empty($IMIE)   && !empty($NAZWISKO)  && !empty($NUMER) && !empty($ID_ZESPOLU))
{ 

daj:

$query = INSERT INTO zawodnik (IMIE, NAZWISKO, NUMER, ID_ZESPOLU)VALUES ('asia','basia',666,5);
    $bc = $mysql_query($query);
var_dump($bc);

Jesli cos sie dodalo znaczy ze masz warunek z if i te empty coś nie tak. A jesli nie dodalo to cos moze z polaczeniem daj znac co wysweitlilo

p.s. $dblink to widocznie klasa w ktorej jest metoda query i masz $dblink->query a ty nie masz żadnej klasy nigdzie tu w kodzie
p.s. II moze ci nie dodalo bo dawales numer i id_Zespolu w uszach jako string a to chyba w bazie masz jako INTEGER i moze dlatego nie wiem. zob co wyzej i powiedz czy wyszlo

0

gdzie napisałem "spróbUj"?:)

wrzuciłem to:

 $query = INSERT INTO zawodnik (IMIE, NAZWISKO, NUMER, ID_ZESPOLU)VALUES ('asia','basia',666,5);
    $bc = $mysql_query($query);
var_dump($bc);

i nie dodało nic, i wywaliłem ""

$query = "INSERT INTO zawodnik (IMIE, NAZWISKO, NUMER, ID_ZESPOLU) VALUES('$IMIE', '$NAZWISKO', $NUMER, $ID_ZESPOLU)" 

ale też bez rezultatów

jeśli odpalam ten stary skrypt co wrzuciłem na początku to dane mi pobiera, zatem połączenie z bazą jest..

0

To powinno wyglądać tak:

$query = "INSERT INTO zawodnik (IMIE, NAZWISKO, NUMER, ID_ZESPOLU)VALUES ('asia','basia',666,5)";

W którym skrypcie łączysz się z baza?
(Jeśli to całe to jest jeden skrypt, to jest źle i zadziala gdy sie rozbije to na dwa skrypty).

0

zmieniłem na:

 $query = "INSERT INTO zawodnik (IMIE, NAZWISKO, NUMER, ID_ZESPOLU)VALUES ('asia','basia',666,5)";

ale dalej bez rezultatów

z bazą łączę się w skrypcie connection.php, który jest oczywiście w tej samej ścieżce i wygląda tak:

<?php 
/*
 plik connection.php   -  konfiguracja połączenia z bazą danych 
*/ 
 
function connection() { 
    	// serwer 
    $mysql_server = ""; 
   	 // admin 
    $mysql_admin = ""; 
   	 // hasło 
    $mysql_pass = ""; 
   	 // nazwa bazy 
    $mysql_db = ""; 
   	 // nawiązanie połączenia z serwerem MySQL 
    @mysql_connect($mysql_server, $mysql_admin, $mysql_pass) 
    or die('Brak połączenia z serwerem MySQL.'); 
   	 // połączenie z bazą danych 
    @mysql_select_db($mysql_db) 
    or die('BÅ‚Ä…d wyboru bazy danych.'); 
} 
 
?>

jednakże, gdybym nie umiał się połączyć to by mi nie wyciagnął danych z bazy przecież, albo?

0

Mam raczej na myśli to że wysyłasz i odbierasz dane w jednym pliku.
Ja bym to rozbił na plik wyswietlZawdnikow.php i dodajZawodnika.php

W pierwszym wyświetlasz zawodnika i ewentualnie wprowadzasz dane do nowego a w drugim jest cały kod który odbierze dane z formularza i wyśle je do bazy.
W drugim pliku wyswietlasz sobie czy dane zostały wprowadzone i dodajesz linka do pierwszej strony.

Z bazą się łączysz, ale powinieneś także pamiętać o zamknięciu bazy kiedy nie jest używana.

0

ale na dwa pliki będzie niewygodnie. Chciałem w jednym bo takie mam wytyczne, zrobić w jednym.

0
<?php

$dsn = "mysql:host=localhost;dbname=test";
$user = "user";
$pass = "password";

try{
$dbo = new PDO($dsn,$user,$pass);
}
catch(PDOException $e){
echo "Blad polaczenia: ' . $e->getMessage();
exit;
}

$query = "SELECT * FROM zawodnik";
$query_all_users = $dbo->query($query); // Zapytanie pobierajace wszystkich zawondikow

$s = "SELECT COUNT(imie) FROM zawodnik";
$suma = $dbo->query($s);
$r = $suma->fetch();

if($r > 0){
$row = $query_all_users->fetchAll(PDO::FETCH_ASSOC);

for($i = 0; $i<count($row); $i++){
echo $row[$i]['id_zawodnika']."</br>";
echo $row[$i]['Imie']."</br>";
echo $row[$i]['Nazwisko]."</br>";
echo $row[$i]['Numer']."</br>";

}
}
?>

<html>
<head>
</head>
<body>
<form action="Zawodnik.php" method="post">
<input type="text" name="Imie" /></br>
<input type="text" name="Nazwisko"/></br>
<input type="text" name="Numer" /></br>
<input type="text" name="ID_zespolu"/></br>
<input type="submit" value="wyslij"/></br>
</br>
</form>

<?php

if(isset($_POST['Numer']) && isset($_POST['Imie']) && isset($_POST['Nazwisko']) && isset($_POST['ID_zespolu'])){
if(!(empty($_POST['Numer'])) && !(empty($_POST['Nazwisko'])) && !(empty($_POST['ID_zespolu'])) && !(empty($_POST['Imie']))){
$numer = $_POST['Numer'];
$imie = $_pOST['Imie'];
$nazwisko = $_POST['Nazwisko'];
$Id_zesp = $_POST['ID_zespolu'];

$zapytanie = "INSERT INTO zawodnik (Imie,Nazwisko,Numer,Id_zespolu) VALUES ('$imie','$nazwisko','$numer','$Id_zesp')";
id($dbo->query($zapytanie){
echo "Dodano";
}
else
{
echo "Nie dodano";
}

}
}
$dbo = null;
unset($_POST['Imie']);
unset($_POST['Nazwisko']);
unset($_POST['Numer']);
unset($_POST['ID_zespolu']);
?>

Takie coś powinno dzialac.

0

tyle, że ja tej bazy na localu nie mam tylko na serwerze zewnętrznym, i nawet jak wpiszę sobie:

$dsn = "mysql:host=";
$user = "";
$pass = ""; 

to i tak nic się nie wyświetla

0

ach, no tak, zapomniałem 's', tak czy siak, dalej nie działa: http://afonfara.meximas.com/cw7/proba.php

 <?php
 
$dsn = "";
$user = "";
$pass = "";


try{
$dbo = new PDO($dsn,$user,$pass);
}
catch(PDOException $e){
echo "Blad polaczenia: ' . $e->getMessage();
exit;
}
 
$query = "SELECT * FROM zawodnik";
$query_all_users = $dbo->query($query); // Zapytanie pobierajace wszystkich zawondikow
 
$s = "SELECT COUNT(imie) FROM zawodnik";
$suma = $dbo->query($s);
$r = $suma->fetch();
 
if($r > 0){
$row = $query_all_users->fetchAll(PDO::FETCH_ASSOC);
 
for($i = 0; $i<count($row); $i++){
echo $row[$i]['id_zawodnika']."</br>";
echo $row[$i]['Imie']."</br>";
echo $row[$i]['Nazwisko]."</br>";
echo $row[$i]['Numer']."</br>";
 
}
}
?>
 
<html>
<head>
</head>
<body>
<form action="Zawodnik.php" method="post">
<input type="text" name="Imie" /></br>
<input type="text" name="Nazwisko"/></br>
<input type="text" name="Numer" /></br>
<input type="text" name="ID_zespolu"/></br>
<input type="submit" value="wyslij"/></br>
</br>
</form>
 
<?php
 
if(isset($_POST['Numer']) && isset($_POST['Imie']) && isset($_POST['Nazwisko']) && isset($_POST['ID_zespolu'])){
if(!(empty($_POST['Numer'])) && !(empty($_POST['Nazwisko'])) && !(empty($_POST['ID_zespolu'])) && !(empty($_POST['Imie']))){
$numer = $_POST['Numer'];
$imie = $_pOST['Imie'];
$nazwisko = $_POST['Nazwisko'];
$Id_zesp = $_POST['ID_zespolu'];
 
$zapytanie = "INSERT INTO zawodnik (Imie,Nazwisko,Numer,Id_zespolu) VALUES ('$imie','$nazwisko','$numer','$Id_zesp')";
id($dbo->query($zapytanie){
echo "Dodano";
}
else
{
echo "Nie dodano";
}
 
}
}
$dbo = null;
unset($_POST['Imie']);
unset($_POST['Nazwisko']);
unset($_POST['Numer']);
unset($_POST['ID_zespolu']);
?>
0

nie.. jak?:D

swoją drogą, ciekawe komu aż tak się nudzi, że wypisuje mi na myadminie takie pierdoły, wiem, że podałem passy, ale liczyłem, że są tutaj doroślejsi ludzie :)

0

jak dla mnie, gdyby nie obsługiwała, to by nie pobierało danych do tabeli, imie, nazwisko, numer, id_zespolu. a to pobiera, wiec połączenie musi być.. tylko nie chce update'ować tych tabel

0

I jak? nikt nie ma pomysłu?

 <?php 
	require "connection.php"; 
	connection(); 
?>

<?php
	$wynik = mysql_query("SELECT * FROM zawodnik")
	or die('Błąd zapytania');


if(mysql_num_rows($wynik) > 0) 
{


    	echo "<table cellpadding=\"2\" border=1>";
				echo "<tr>";
				echo "<td>ID_ZAWODNIKA</td>";
				echo "<td>IMIE</td>";
				echo "<td>NAZWISKO</td>";
				echo "<td>NUMER</td>";
				echo "<td>ID_ZESPOLU</td>";
				echo "</tr>";
			
    	while($r = mysql_fetch_assoc($wynik)) 
    	{
        	echo "<tr>";
			echo "<td>".$r['ID_ZAWODNIKA']."</td>";
			echo "<td>".$r['IMIE']."</td>";
			echo "<td>".$r['NAZWISKO']."</td>";
        	echo "<td>".$r['NUMER']."</td>";
        	echo "<td>".$r['ID_ZESPOLU']."</td>";
        	echo "</tr>";
    	}
	 
	 	echo "</table>";
	 
?>
	 	<br><br>
		<form action="add.php" method="post"> 

			Imie:<br /> 
			<input type="text" name="Imie" /><br /> 
			Nazwisko:<br /> 
			<input type="text" name="Nazwisko" /><br /> 
			Numer:<br /> 
			<input type="text" name="Numer" /><br /> 
			ID Zespolu:<br /> 
			<input type="text" name="Zespol" /><br />  
			<input type="submit" value="Dodaj" /> 

		</form>
	

<?php 
 

		$id_zawodnika = $_POST['id_zawodnika']; 
		$imie = $_POST['imie']; 
		$nazwisko = $_POST['nazwisko']; 
		$numer = $_POST['numer']; 
		$id_zespolu = $_POST['id_zespolu']; 
 
		if($imie && $nazwisko && $numer && $id_zespolu) 
		{ 
			$query = "INSERT INTO przepisy SET ID_ZAWODNIKA = NULL, IMIE='$imie', NAZWISKO='$nazwisko', NUMER='$numer', ID_ZESPOLU='$id_zespolu'"; 
    		echo $query;
			$ins = mysql_query($query); 
	 

    		if($ins) echo "Rekord został dodany poprawnie"; 
    		else 
    		{
    			echo "Błąd nie udało się dodać nowego rekordu"; 
    			die('blabla'.mysql_error());
			}
		}

}
?> 


ciągle nie dodaje :/

0

tak zauwazylem, zmienilem ale niestety nadal bez rezultatow

0
  1. Masz w złej kolejności kod napisany. Nawet jeśli uda ci się go dodać, to i tak tego nie zauważysz, to wyświetlasz zawartość tabeli PRZED insertem.
  2. <input type="text" name="**Imie**" />

$imie = $_POST['imie'];

0

ja nie wiem jak sie laczysz, ale ten url prowadzi do phpmyadmin i jednoczesnie nie moze prowadzic do servera mysql, nawet jak pojade po ip to dostaje: Can't get hostname for your addres

1

Zamiast połączenia PDO możesz przerobić kod na zwykłe nieobiektowe połączenie.
Natomiast nazwa tabeli w bazie musi byc rowna nazwy wykozystywanej w PHP, wliczając w to wielkości liter.
Czyli tabela w bazie MySQL 'IMIE' != 'IMIe' tabeli w PHP.

Jeśli masz zdefiniowaną kolumnę w tabeli MySQL 'IMIE' to do wyświetlenia tego pola musisz podać w $row[$i]['IMIE'],
Ponieważ PHP pobiera z MySQL dokładnie taki sam ciąg znaków i musi się on zgadzać.

U mnie ten kod dziala, ale przy zdefiniowanych dokładnie tak samo pól w PHP(do wyswietlenia) jak i w bazie.

0

Dobra Pany, działa, dzioęki za podpowiedzi. można zamknąć

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