Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql][php] dodawanie rekordów przez www, raczej proste - niestety nie dla mnie
jar
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.06.2007

Ostrzeżenie: (0%)
-----


Witam
Znalazłem stronę www na podstawie której staram się zrozumieć działanie dodawania rekordów w bazie mysql poprzez stronę www. Jest tam przykład o nazwie hotele. Zaciągnąłem przykładowe pliki i nie potrafię zrozumieć dlaczego skrypt o nazwie 'hotele-dodawanie-rekordów.php' nie działa. Konkretnie - nie działa ten fragment kodu:
Kod
    $query = "INSERT INTO thotele(nazwa, kod, miejscowosc, ulica, numerdomu, telefon, www)".
             " VALUES ('$linia[0]', '$linia[1]', '$linia[2]', '$linia[3]',
             '$linia[4]', '$linia[5]', '$linia[6]')";
    $result = mysql_query($query)
        or die("Query failed");

Na stronie pojawia się tabelka z nazwami poszczególnych pól bazy ale łącznie z komunikatem błędnego zapytania 'Query failed'.
Tu cały skrypt:
Kod
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
  <HEAD>
    <TITLE>HOTELE: dodawanie rekordów</TITLE>
    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  </HEAD>

<BODY>

<H1>HOTELE - dodawanie rekordów</H1>

<H2>Dołączanie rekordów do bazy danych:</H2>

<TABLE border="1">
<TR>
  <TD>
    <STRONG>Nazwa</STRONG>
  </TD>
  <TD>
    <STRONG>Kod</STRONG>
  </TD>
  <TD>
    <STRONG>miejscowość</STRONG>
  </TD>
  <TD>
    <STRONG>Ulica</STRONG>
  </TD>
  <TD>
    <STRONG>Numer domu</STRONG>
  </TD>
  <TD>
    <STRONG>telefon</STRONG>
  </TD>
  <TD>
    <STRONG>www</STRONG>
  </TD>

</TR>


<?php
$nazwabazydanych = "dbhotele";

$link = mysql_connect("localhost", "root", "krasnal")
    or die("BŁĄD: nie można się połączyć z serverem mySQL");

mysql_select_db($nazwabazydanych)
    or die("BŁĄD: wybór bazy danych");

$plik  = file('hotele.txt');
$plikc = count($plik);
for ($i = 0; $i < $plikc; $i++) {
    $linia    = explode('|', trim($plik[$i]));
    $linia[0] = strtoupper($linia[0]);


    $query = "INSERT INTO thotele(nazwa, kod, miejscowosc, ulica, numerdomu, telefon, www)".
             " VALUES ('$linia[0]', '$linia[1]', '$linia[2]', '$linia[3]',
             '$linia[4]', '$linia[5]', '$linia[6]')";
    $result = mysql_query($query)
        or die("Query failed");


    $liniac   = count($linia);
    for ($j = 0; $j < $liniac; $j++) {
        if ($linia[$j] == '') {
            $linia[$j] = ' ';
        }
    }

?>
<TR>
<TD><?php echo $linia[0]; ?></TD>
<TD><?php echo $linia[1]; ?></TD>
<TD><?php echo $linia[2]; ?></TD>
<TD><?php echo $linia[3]; ?></TD>
<TD><?php echo $linia[4]; ?></TD>
<TD><?php echo $linia[5]; ?></TD>
<TD><?php echo $linia[6]; ?></TD>

</TR>
<?php
}//for ($i = ...

mysql_close($link);
?>

</TABLE>

</BODY>
</HTML>

Czy może mi ktoś napisać dlaczego tak się dzieje? Skrypty pod wskazanym wyżej adresem - można je ściągnąć w kilka sekund.
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Glarden
post
Post #2





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


Możesz do zmiennej $result dodać:
  1. <?php
  2. $result ($query, $link);
  3. ?>

Chociaż, szczerze mówiąc, nie przypuszczam, żeby to było powodem błędu. Ale innego nie zobaczyłem.
Go to the top of the page
+Quote Post
Void
post
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 15
Dołączył: 2.02.2007

Ostrzeżenie: (0%)
-----


Zamiast
  1. <?php
  2. $result = mysql_query($query)
  3. or die("Query failed");
  4. ?>
daj
  1. <?php
  2. $result = mysql_query($query)
  3. or die(mysql_error());
  4. ?>

i napisz co wyświetla
Go to the top of the page
+Quote Post
Lee
post
Post #4





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $query = "INSERT INTO `thotele`(`nazwa`, `kod`, `miejscowosc`, `ulica`, `numerdomu`, `telefon`, `www`) VALUES ('$linia[0]', '$linia[1]', '$linia[2]', '$linia[3]', '$linia[4]', '$linia[5]', '$linia[6]')";
  3. ?>

powinno zadziałac, jak nie zadziała to zamiast
  1. <?php
  2. $result = mysql_query($query) or die("Query failed");
  3. ?>

daj
  1. <?php
  2. $result = mysql_query($query) or die(mysql_error());
  3. ?>
i skopiuj treść błędu

Ten post edytował Lee 12.06.2007, 17:21:57
Go to the top of the page
+Quote Post
jar
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.06.2007

Ostrzeżenie: (0%)
-----


Dzięki wielkie za Wasze odpowiedzi. Po wstawieniu
  1. <?php
  2. $result = mysql_query($query) or die(mysql_error());
  3. ?>
dostałem komunikat o duplikowaniu rekordu.
Okazało się (a raczej ja to dopiero zobaczyłem) że funkcja sprawdza plik txt z którego ma zaciągnąć dane do przesłania dla bazy. Jeśli jest tam (w tekstowym pliku) wpis o nazwie np. xxxxx i w mysql-u rekord o tej samej nazwie czyli xxxxx to wyświetla błąd.
Zatem jeśli chciałbym uzupełniać tylko plik tekstowy o nowe wpisy to skrypt nie zadziała. Jeśli natomiast utworzę nowy (tak aby nie zawierał powtarzających się wpisów) to wtedy jest ok.
Jeszcze raz dziękuję, a może znacie jakieś strony gdzie łopatologicznie wytłumaczono jak dodawać i modyfikować rekordy w bazie poprzez www?
Pozdrawiam
Go to the top of the page
+Quote Post
Lee
post
Post #6





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


Cytat(jar @ 12.06.2007, 17:07:20 ) *
Dzięki wielkie za Wasze odpowiedzi. Po wstawieniu
  1. <?php
  2. $result = mysql_query($query) or die(mysql_error());
  3. ?>
dostałem komunikat o duplikowaniu rekordu.
Okazało się (a raczej ja to dopiero zobaczyłem) że funkcja sprawdza plik txt z którego ma zaciągnąć dane do przesłania dla bazy. Jeśli jest tam (w tekstowym pliku) wpis o nazwie np. xxxxx i w mysql-u rekord o tej samej nazwie czyli xxxxx to wyświetla błąd.
Zatem jeśli chciałbym uzupełniać tylko plik tekstowy o nowe wpisy to skrypt nie zadziała. Jeśli natomiast utworzę nowy (tak aby nie zawierał powtarzających się wpisów) to wtedy jest ok.
Jeszcze raz dziękuję, a może znacie jakieś strony gdzie łopatologicznie wytłumaczono jak dodawać i modyfikować rekordy w bazie poprzez www?
Pozdrawiam

Poczytaj o zapytaniach
  1. INSERT INTO `tabela` (`nazwa1`, `nazwa2,...,`nazwa`) VALUES ('wartosc1', 'wartosc2',...,'wartosc')

i
  1. UPDATE `tabela` SET `nazwa1`='wartosc1' WHERE `costam(np. id)`='costam')

dzięki nim dodajesz i edytujesz rekordy w MySQL
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 21:17