podzapytania sql

K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
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.

LD
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 2 lata
  • Postów:115
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.

masterO
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 5 lat
  • Postów:1025
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

edytowany 1x, ostatnio: masterO
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
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

masterO
Dokładnie tak. Teraz masz dobre tabelki wiec mozesz zarzucac joina :D
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
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ę ;)

masterO
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 5 lat
  • Postów:1025
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ę ?

Kopiuj
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:

Kopiuj
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:

Kopiuj
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:

Kopiuj
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ć.

Kopiuj
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ć:

Kopiuj
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.

edytowany 3x, ostatnio: masterO
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
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ć?

Kopiuj
 <?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());
	}
}

}


?> 


		
C8
  • Rejestracja:prawie 12 lat
  • Ostatnio:16 dni
  • Postów:80
0

Masz źle skonstruowane zapytanie, powinno być:

Kopiuj
$query = 

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

Kopiuj

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

oraz w tym miejscu:

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

Lepiej bedzie jak wykorzystasz funkcje empty:

Kopiuj
if(!empty($IMIE)   && !empty($NAZWISKO)  && !empty($NUMER) && !empty($ID_ZESPOLU))
edytowany 4x, ostatnio: Crash89
C8
Zakładam że pole id_zawodnika jest auto inkrementowane. Skoro probujesz je dodac jako null.
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

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

Kopiuj
 <?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

masterO
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 5 lat
  • Postów:1025
0
Kopiuj
$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

edytowany 2x, ostatnio: masterO
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

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

masterO
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 5 lat
  • Postów:1025
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:

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

daj:

Kopiuj
$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

edytowany 6x, ostatnio: masterO
Marcin.Miga
$bc = $mysql_query($query); mysql_query poprzedzone $ ??
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

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

wrzuciłem to:

Kopiuj
 $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 ""

Kopiuj
$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..

C8
  • Rejestracja:prawie 12 lat
  • Ostatnio:16 dni
  • Postów:80
0

To powinno wyglądać tak:

Kopiuj
$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).

edytowany 1x, ostatnio: Crash89
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

zmieniłem na:

Kopiuj
 $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:

Kopiuj
<?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?

edytowany 2x, ostatnio: Rev
C8
  • Rejestracja:prawie 12 lat
  • Ostatnio:16 dni
  • Postów:80
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.

edytowany 1x, ostatnio: Crash89
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

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

C8
  • Rejestracja:prawie 12 lat
  • Ostatnio:16 dni
  • Postów:80
0
Kopiuj
<?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.

edytowany 2x, ostatnio: Crash89
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

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

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

to i tak nic się nie wyświetla

edytowany 1x, ostatnio: Rev
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

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

Kopiuj
 <?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']);
?>
edytowany 1x, ostatnio: Rev
masterO
$dbo = new PDO($dsn,$user,$pass); gdzie pasz podpieta klase PDO ?
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
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 :)

masterO
:) to ja powpisywalem hhehehehe ale czekaj bo nie moge sie z baza polaczyc wlasnie nie wiem czemu port ok host ok user ok ale za cholre nie idzie
masterO
PDO w sumie wyczytalem ze powinien byc ten sterownik juz zaimplementowany to powinno zadziaalc to z PDO ale nie wiem co nie tak :( za cieniki jestem. A moze baza nie obsluguje poalczen poza localhostem
szalonyfacet
a politechnika nie urwie ci lba za szastanie danymi do bazy na ich serwerach???
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
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

masterO
a u mnie nie laczy sie z baza w ogole
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

I jak? nikt nie ma pomysłu?

Kopiuj
 <?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 :/

masterO
a to chcesz dodac zawodnika do przepisu ?
K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

tak zauwazylem, zmienilem ale niestety nadal bez rezultatow

masterO
nie wiem co ci poradzic recznie inserta robi do bazy jezeli nic nie wywala ci z echo $query; to wyglada jakby jakis blad byl w polaczeniu moze nie wiem musiabys mi dac wjazd na serwer zeby tam wejsc i zobaczyc ten plik i posprawdzac inaczej tylko wróżbita Maciej pomoże
Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:4 dni
  • Postów:2792
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'];

szalonyfacet
  • Rejestracja:ponad 12 lat
  • Ostatnio:9 miesięcy
  • Lokalizacja:Dąbrowa Górnicza
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

masterO
może prowadzic i prowadzi bo ty sie laczysz po porcie :80 a powinenes po :3306 i moze prowadzic do FTPA i do wielu innych rzeczy moze :D
szalonyfacet
przeciez napisalem ze jade po ip a pdo domyslnie laczy po 3306 i tez dupa, wiec nie wiem sakd wiesz po jakim porcie sie lacze
masterO
no tak :) ale to nie zmienia faktu ze pod jednym IP moze byc wiele uslug :)
szalonyfacet
ale nikt nie powiedzial ze NIE MOZE byc
C8
  • Rejestracja:prawie 12 lat
  • Ostatnio:16 dni
  • Postów:80
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.

K9
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:20
0

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

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)