Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z pobieraniem id
Forum PHP.pl > Forum > Bazy danych > MySQL
Plebanov
Witam!!

Mam taki problem. Otoz stworzylem sobie baze danych (nizej jest kod) i gdy chce pobrac id jakiegos filmu to zawsze zwraca mi wartosc 0. Mysle, ze problem moze tkwic przy tworzeniu tabeli. Moze mi ktos pomoc?? Z gory przepraszam za kod ale dopiero sie ucze MySQL'a.. Z gory dziekuje smile.gif

Kod
<?php
mysql_connect('localhost', 'root', '');
mysql_create_db('test');
mysql_select_db('test');
  
mysql_query("CREATE TABLE test (id int( 11 ) NOT NULL AUTO_INCREMENT ,
nazwa varchar( 100 ) NOT NULL default '',
tytul varchar( 100 ) NOT NULL default '',
tytul_pl varchar( 100 ) NOT NULL default '',
produkcja varchar( 100 ) NOT NULL default '',
gatunek varchar( 100 ) NOT NULL default '',
data_sw varchar( 100 ) NOT NULL default '',
data_pl varchar( 100 ) NOT NULL default '',
rezyseria varchar( 100 ) NOT NULL default '',
scenariusz varchar( 100 ) NOT NULL default '',
zdjecia varchar( 100 ) NOT NULL default '',
muzyka varchar( 100 ) NOT NULL default '',
na_podstawie varchar( 100 ) NOT NULL default '',
wiek varchar( 100 ) NOT NULL default '',
czas varchar( 100 ) NOT NULL default '',
dystrybucja varchar( 100 ) NOT NULL default '',
opis varchar( 100 ) NOT NULL default '',
obrazek varchar( 100 ) NOT NULL default '',
PRIMARY KEY ( id ))");
?>

<form action="ind.php" method="post">
<table>
<tr>
<td>
Nazwa

<input type="text" name="nazwa">

Tytuł (eng)

<input type="text" name="tytul">

Tytuł (pl)

<input type="text" name="tytul_pl">

</td>
<td>
Produkcja

<input type="text" name="produkcja">

Gatunek

<input type="text" name="gatunek">

Data (¦wiat)

<input type="text" name="data_sw">

Data (Polska)

<input type="text" name="data_pl">

</td>
<td>
Reżyseria

<input type="text" name="rezyseria">

Scenariusz

<input type="text" name="scenariusz">

Zdjęcia

<input type="text" name="zdjecia">

Muzyka

<input type="text" name="muzyka">

Na podstawie

<input type="text" name="na_podstawie">

Wiek

<input type="text" name="wiek">

Czas

<input type="text" name="czas">

Dystrybucja

<input type="text" name="dystrybucja">

</td>
<td>
Opis

<textarea name="opis" cols="50" rows="10"></textarea>

Obrazek

<input type="text" name="obrazek">

</td>
<td>
</tr>
<tr>
<td>






<input type="submit" value="dodaj">
</td>
</tr>
</table>
</form>


<?php
$nazwa = $_POST['nazwa'];
$tytul = $_POST['tytul'];
$tytul_pl = $_POST['tytul_pl'];
$produkcja = $_POST['produkcja'];
$gatunek = $_POST['gatunek'];
$data_sw = $_POST['data_sw'];
$data_pl = $_POST['data_pl'];
$rezyseria = $_POST['rezyseria'];
$scenariusz = $_POST['scenariusz'];
$zdjecia = $_POST['zdjecia'];
$muzyka = $_POST['muzyka'];
$na_podstawie = $_POST['na_podstawie'];
$wiek = $_POST['wiek'];
$czas = $_POST['czas'];
$dystrybucja = $_POST['dystrybucja'];
$opis = $_POST['opis'];
$obrazek = $_POST['obrazek'];

if($nazwa and $tytul and $tytul_pl and $produkcja and $gatunek and $data_sw and $data_pl and $rezyseria and $scenariusz and $zdjecia and $muzyka and $na_podstawie and $wiek and $czas and $dystrybucja and $opis and $obrazek) {
    
$connection = @mysql_connect('localhost', 'root', '')
     or die('Brak połączenia z serwerem MySQL');
$db = @mysql_select_db('test', $connection)
     or die('Nie mogę połączyć się z bazą danych');
      
$id = mysql_insert_id();
    
$ins = @mysql_query("INSERT INTO test SET nazwa='$nazwa', tytul='$tytul', tytul_pl='$tytul_pl', produkcja='$produkcja', gatunek='$gatunek', data_sw='$data_sw', data_pl='$data_pl', rezyseria='$rezyseria', scenariusz='$scenariusz', zdjecia='$zdjecia', muzyka='$muzyka', na_podstawie='$na_podstawie', wiek='$wiek', czas='$czas', dystrybucja='$dystrybucja', opis='$opis', obrazek='$obrazek'");

if($ins) echo "Rekord o ID: ".$id." został dodany poprawnie";
     else echo "Błąd nie udało się dodać nowego rekordu";
      
mysql_close($connection);
}

?>
wookieb
Do pobrania id ostatniej operacji typu insert sluzy funkcja http://pl.php.net/mysql_insert_id
erix
Przecież użył tej funkcji. tongue.gif

Tylko, że najpierw wykonuje się zapytanie, dopiero potem z niej korzysta, a nie na odwrót. winksmiley.jpg
Plebanov
Tak, uzywam tej funkcji, ale zawsze zwraca mi wartosc 0 :/
erix
A co napisałem w drugim zdaniu? tongue.gif
Plebanov
Net mi sie zwiesil tongue.gif..

To teraz inne pytanie tongue.gif..

Mam takie cos:
Kod
<?php
include 'mysql/connection.php';

$wynik = mysql_query("SELECT * FROM test")
or die('Błąd zapytania');

if(mysql_num_rows($wynik) > 0) {
    echo "<table cellpadding=\"2\" border=0 width=400>";
    while($r = mysql_fetch_array($wynik)) {
        echo "<tr>";
        echo "<td>
          <a href=\"spis_filmow.php?ud=$r[1]&[b]?id[/b]=$id\">$r[3], $r[2]</a>
          <br><br>
          </td>";
        echo "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
?>


I chcialem, aby przy pobieraniu tytulow z bazy danych, pod zmienna ID przypisywala sie zmienna tego filmu. Jest mozliwe takie cos??
erix
A zobacz sobie, co zawiera zmienna $r. Św. Mikołaj już dzisiaj Tobie coś tam podłożył. winksmiley.jpg
Plebanov
$r = mysql_fetch_array($wynik) tongue.gif

No i?? tongue.gif..wiem ze ciemny jestem tongue.gif tongue.gif tongue.gif
wookieb
Kod
print_r($r);


Kod
$id=$r['id'];

I polecam jakiś kurs php.
Plebanov
Dziala..dzieki smile.gif..a i przy nadmiarze czasu przeczytam cos madrego..(tak przy okazji to co poleciacie?)
wookieb
Internet
http://google.pl
http://php.net
Plebanov
Odwolujac sie do problemu Temat: PHPMYSQL_Link_i_pobieranie_danych.

Napisalem takie cos:

Kod
<?php

$result = mysql_query('select * from test where id = '.$_GET['id']. ' limit 1')
    or die('Błąd zapytania. Podane ID jest niepoprawne!');

if ($id = (is_numeric($_GET['id']))) {

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {

    printf ("Blablabla: %s, Blebleble: %s", $row[1], $row[2]);  
}
mysql_free_result($result);
}

?>


Skrypt ten dziala i wyswietla mi zawartosc w nastepujacy sposob:
Blablabla: Film1, Blebleble: Film2

Czy moglby mi ktos pomoc i podac inny sposob na wyswietlanie zawartosci?? Znaczy sie zastosowac inna funkcje albo cos.
erix
  1. <?php
  2. $result = mysql_query('select * from test where id = '.$_GET['id']. ' limit 1')
  3.    or die('Błąd zapytania. Podane ID jest niepoprawne!');
  4.  
  5. if ($id = (is_numeric($_GET['id']))) {
  6. ?>

Dobrze myślałeś, żeby zabezpieczyć, ale zważ, że kod jest wykonywany od góry do dołu, a nie na odwrót. winksmiley.jpg

Cytat
Czy moglby mi ktos pomoc i podac inny sposob na wyswietlanie zawartosci?? Znaczy sie zastosowac inna funkcje albo cos.

Czyli jak? Utwórz sobie jakiś layout do tego i normalnie wypisz stringi opierając się na tablicy w pętli. Chyba manual nie gryzie, nie?
Plebanov
Cytat(erix @ 28.11.2008, 18:17:52 ) *
Czyli jak? Utwórz sobie jakiś layout do tego i normalnie wypisz stringi opierając się na tablicy w pętli. Chyba manual nie gryzie, nie?


Wiem, ze nie gryzie. tongue.gif A chodzi mi o inny sposob zapisania tego kodu, inna funkcje, co by sie lepiej layoutowalo tongue.gif..bo probowalem innymi sposobami ale cos mi nie wychodzi :/ ..
erix
Cytat
A chodzi mi o inny sposob zapisania tego kodu, inna funkcje, co by sie lepiej layoutowalo

Ale przecież nie masz tu żadnej funkcji do layoutu. tongue.gif Chodzi Ci o szablony, etc?

Cytat
bo probowalem innymi sposobami ale cos mi nie wychodzi :/ ..

Mianowicie?
Plebanov
Chcialem to tak zrobic bym nie musial tego zapisywac tak

  1. <?php
  2. ("Blablabla: %s, Blebleble: %s", $row[1], $row[2])
  3. ?>


tylko np
  1. <?php
  2. ("$row[1], $row[2]")
  3. ?>


Same ze tak powiem "odwolania".
erix
printf" title="Zobacz w manualu PHP" target="_manual, to tylko jeden ze sposobów wyświetlania zmiennych, jaki masz problem walnąć np.
  1. <?php
  2. echo $zmienna;
  3. ?>
?
Plebanov
Cytat(erix @ 28.11.2008, 20:27:36 ) *
printf" title="Zobacz w manualu PHP" target="_manual, to tylko jeden ze sposobów wyświetlania zmiennych, jaki masz problem walnąć np.
  1. <?php
  2. echo $zmienna;
  3. ?>
?



No a mi przedtem nie dzialalo bo &zmienna bralem w '' tongue.gif ..ale lol ze mnie..taki glupi blad..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.