PHP/MySQL Problem z skryptem


(Kamill1122) #1

Witam.

Mam taki oto skrypt:

<?php


// informacje na temat bazy

  $host = "localhost"; // nazwa lub numer IP hosta 

  $user = "........_baza"; // nazwa użytkownika

  $password = "........."; // hasło do bazy

  $dbName = "........_baza"; // nazwa bazy danych

// te dane zależne są od Twojej bazy i muszą zostać podane



// połączenie i wybór bazy danych

  $polacz = mysql_connect($host, $user, $password) or die(mysql_error());

  $db = mysql_select_db($dbName, $polacz) or die(mysql_error());


$result = mysql_query("SELECT nazwa_kolumny FROM tabela_testowa ORDER BY id DESC LIMIT 10");

while( $row = mysql_fetch_assoc( $result )) {

$last_id = $row['nazwa_kolumny'];

}



// wprowadzanie do bazy nowego wpisu po wciśnięciu przycisku submit

   if (isset($_POST[‘jakies_pole’]) && trim($_POST[‘jakies_pole’]) != ”) {

      $jakies_pole = $_POST[‘jakies_pole’];

      $sql = "INSERT into tabela_testowa (nazwa_kolumny) VALUES (’$jakies_pole’)";

      $rezultat = mysql_query($sql, $polacz) or die(mysql_error());

    }


// pobierabie wartości z tabeli "tabela_testowa"

   $sql = "SELECT nazwa_kolumny FROM tabela_testowa";

   $rezultat = mysql_query($sql, $polacz) or die(mysql_error());

   while ($lista = mysql_fetch_array($rezultat)) {

      echo $lista[‘nazwa_kolumny’]. "
";

   }



// formularz  

echo <<
 Dodaj wpis: 






FORMULARZ;

?>

I nie wiem dlaczego nie mogę za pomocą jego zmienić rekordów w bazie danych.

Proszę o pomoc


(Blapiter) #2

Co dokładnie rozumiesz pod sformułowaniem: "dlaczego nie mogę za pomocą jego zmienić rekordów w bazie danych".

Bo jeżeli chodzi Ci o zmianę istniejących już pól to w SQL używa się słowa UPDATE http://www.w3schools.com/sql/sql_update.asp a cały fajny tutek masz tu http://www.w3schools.com/sql/default.asp


(GioWDS) #3

Można do aktualizacji także użyć REPLACE lub DELETE i INSERT


(Kamill1122) #4

Zmieniłem na update i dalej nie działa.

Mógłby mi to ktoś poprawić??

<?php


// informacje na temat bazy

  $host = "localhost"; // nazwa lub numer IP hosta 

  $user = "........_baza"; // nazwa użytkownika

  $password = "........."; // hasło do bazy

  $dbName = "........_baza"; // nazwa bazy danych

// te dane zależne są od Twojej bazy i muszą zostać podane



// połączenie i wybór bazy danych

  $polacz = mysql_connect($host, $user, $password) or die(mysql_error());

  $db = mysql_select_db($dbName, $polacz) or die(mysql_error());


$result = mysql_query("SELECT nazwa_kolumny FROM tabela_testowa ORDER BY id DESC LIMIT 10");

while( $row = mysql_fetch_assoc( $result )) {

$last_id = $row['nazwa_kolumny'];

}



// wprowadzanie do bazy nowego wpisu po wciśnięciu przycisku submit

   if (isset($_POST[‘jakies_pole’]) && trim($_POST[‘jakies_pole’]) != ”) {

      $jakies_pole = $_POST[‘jakies_pole’];

    $sql = "UPDATE tabela_testowa SET nazwa_kolumny = ’$jakies_pole’ WHERE id='1'";

      $rezultat = mysql_query($sql, $polacz) or die(mysql_error());

    }


// pobierabie wartości z tabeli "tabela_testowa"

   $sql = "SELECT nazwa_kolumny FROM tabela_testowa";

   $rezultat = mysql_query($sql, $polacz) or die(mysql_error());

   while ($lista = mysql_fetch_array($rezultat)) {

      echo $lista[‘nazwa_kolumny’]. "
";

   }



// formularz  

echo <<
 Dodaj wpis: 






FORMULARZ;

?>

(pain3hp) #5

Naucz się rozwiązywać swoje problemy, najlepszy sposób to łopatologia, po:

$sql = "UPDATE tabela_testowa SET nazwa_kolumny = ’$jakies_pole’ WHERE id='1'";

dodajesz:

echo $sql;

wyrzucony string wykonujesz bezpośrednio na bazie danych. Sprawdzasz czy się zmieniło, jeżeli tak to oznacza, że błąd tkwi w skrypcie.

Osobiście stawiam że nie masz rekordu id='1' :twisted: albo wyrzucone na ekran zapytanie jest DOKŁADNIE takie:

a tak na marginesie to nikt nie jest jasnowidzem i cenną informacją byłoby zaprezentowanie tabeli razem z typowaniem

-- Dodane 01.01.2012 (N) 20:17 --

jest jeszcze jedno kryterium: zauważ że najpierw wyświetlasz wyniki a dopiero potem je zmieniasz, więc jeżeli bazujesz na danych zaciąganych ze skryptu to może być omylne


(batmomobil) #6

Zgadzam się z kolegą powyżej już błąd jest w formularzu,ponieważ danemu id musisz przypisać zmienną i ją wysłać,skąd wiadomo jakie pole ma być zmienione w jakim id.

echo "

potem dopiero zmienną dodać do zapytania do

$sql = "UPDATE tabela_testowa SET nazwa_kolumny = ’$jakies_pole’ WHERE id='$id_pola'";

Oczywiście to tylko przykład.