Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Dodawanie rekordu
malin23
post 7.06.2011, 20:13:16
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 7.06.2011

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


mam coś takiego

$ins = @mysql_query("INSERT INTO serwis_zlecenie SET IDklienci='$idklienta', data='$data' ");

mam problem bo $data dodaje mi sie prawidłowo do rekordu a $idklienta nie.
IDklienci to INT w bazie

kiedy zamiast zmiennej wpiszę liczbę to doda mi się bez problemu.
$idklienta istnieje napewno bo wyświetlam ją, i wyświetla się liczba.

Nie wiem co robię źle, może ktoś pomóc questionmark.gif


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
toaspzoo
post 7.06.2011, 20:26:03
Post #2





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


to jest Int czyli tylko liczba!


--------------------

LS Easter egg <
Go to the top of the page
+Quote Post
malin23
post 7.06.2011, 20:37:04
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 7.06.2011

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


nie bardzo rozumiem,
php wyświetla to jako liczbę
a w bazie kolumna jest typu INT



chyba rozumiem, moja zmienna przekazywana jest GET i jest jako STRING,
chyba powinienem zamienić ją na INT

nie wiem czy dobrze mówię, jeśli tak to jak to zrobić questionmark.gif

Go to the top of the page
+Quote Post
sadistic_son
post 7.06.2011, 21:23:16
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Dobrze rozumujesz.
  1. $idklienta=intval($_GET['idklienta']);

A w zapytaniu wywal te apostrofy dla pól typu INT, czyli:
  1. mysql_query("INSERT INTO serwis_zlecenie SET IDklienci=$idklienta, data='$data' ");


Ten post edytował sadistic_son 7.06.2011, 21:24:51


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
phpion
post 8.06.2011, 07:16:28
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(sadistic_son @ 7.06.2011, 22:23:16 ) *
Dobrze rozumujesz.
  1. $idklienta=intval($_GET['idklienta']);

A w zapytaniu wywal te apostrofy dla pól typu INT, czyli:
  1. mysql_query("INSERT INTO serwis_zlecenie SET IDklienci=$idklienta, data='$data' ");

Bredzisz. To o czym piszesz nie ma żadnego wpływu na poprawność wykonania zapytania SQL. Po pierwsze: tworząc zapytanie i tak masz je w postaci stringa, czyli nie ma różnicy czy wstawisz tam liczbę jako integer czy string. Po drugie: apostrofy również nie powodują błędów. MySQL sam sobie wstawi wartość odpowiedniego typu. Oba te przypadki nie mogą powodować błędu SQL, są jednak dobrym nawykiem programistycznym.

@malin23:
Zmień swoją linię na następujące:
  1. $query = "INSERT INTO serwis_zlecenie SET IDklienci='$idklienta', data='$data' ";
  2. $ins = mysql_query($query) or die($query.': '.mysql_error());

i zobacz co się wyświetli.
Go to the top of the page
+Quote Post
malin23
post 15.06.2011, 07:21:09
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 7.06.2011

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


Cytat(phpion @ 8.06.2011, 08:16:28 ) *
Bredzisz. To o czym piszesz nie ma żadnego wpływu na poprawność wykonania zapytania SQL. Po pierwsze: tworząc zapytanie i tak masz je w postaci stringa, czyli nie ma różnicy czy wstawisz tam liczbę jako integer czy string. Po drugie: apostrofy również nie powodują błędów. MySQL sam sobie wstawi wartość odpowiedniego typu. Oba te przypadki nie mogą powodować błędu SQL, są jednak dobrym nawykiem programistycznym.

@malin23:
Zmień swoją linię na następujące:
  1. $query = "INSERT INTO serwis_zlecenie SET IDklienci='$idklienta', data='$data' ";
  2. $ins = mysql_query($query) or die($query.': '.mysql_error());

i zobacz co się wyświetli.



<?php
// nawiazujemy polaczenie
$connection = @mysql_connect('')
// w przypadku niepowodznie wyświetlamy komunikat
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
// połączenie nawiązane ;-)
//echo "Udało się połączyć z serwerem!<br />";
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db('', $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
// połączenie nawiązane ;-)
//echo "Udało się połączyć z bazą dancych!";






$a = trim($_REQUEST['a']);
//$idklienta = trim($_GET['idklienta']);
$idklienta=intval($_GET['idklienta']);


echo "$idklienta";

$wynik = mysql_query("SELECT * FROM klienci WHERE IDklienci = '$idklienta' ")
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>";
while($r = mysql_fetch_assoc($wynik)) {
echo "<tr>";
echo "<td>".$r['IDklienci']."</td>";
echo "<td>".$r['Nazwa']."</td>";
echo "<td>".$r['Ulica']."</td>";
echo "<td>".$r['Kod_miasto']."</td>";
echo "<td>".$r['NIP']."</td>";
//echo "<td>
//<a href=\"serwis_edit.php?a=edit&amp;nr={$r['nr']}\">EDIT</a>
//</td>";
echo "</tr>";
}
echo "</table>";
}
?>

<FORM ACTION="nowe_zlecenie2.php" METHOD="POST" ENCTYPE="iso-8859-2" ACCEPT-CHARSET="iso-8859-2">
<TABLE>
<TR>
<TD>Nazwa urzadzenia</TD>
<TD><INPUT type="TEXT" NAME="nazwa_urzadzenia2" SIZE="30" MAXLENGTH="30" ALIGN="LEFT"></TD>
</TR>
<TR>
<TD>Nr fabryczny</TD>
<TD><INPUT type="TEXT" NAME="nr_fabryczny2" SIZE="30" MAXLENGTH="30" ALIGN="LEFT"></TD>
</TR>
<TR>
<TD>Telefon kontkatowy</TD>
<TD><INPUT type="TEXT" NAME="kontakt_klienta2" SIZE="50" MAXLENGTH="50" ALIGN="LEFT"></TD>
</TR>
<TR>
<TD>Gwarancja (tak/nie)</TD>
<TD><INPUT type="TEXT" NAME="gwarancja2" SIZE="15" MAXLENGTH="15" ALIGN="LEFT"></TD>
</TR>
<TR>
<TD>Opis</TD>
<TD><INPUT type="TEXT" NAME="opis2" SIZE="100" MAXLENGTH="200" ALIGN="LEFT"></TD>
</TR>
<TR>
<TD>Uwagi</TD>
<TD><INPUT type="TEXT" NAME="uwagi2" SIZE="100" MAXLENGTH="300" ALIGN="LEFT"></TD>
</TR>
<TR>
<TD></TD>
<TD><input type=hidden value='1' name=send></TD>
</TR>
<TR>
<TD></TD>
<TD><input type="submit" value="Wyslij" /></TD>
</TR>
</TABLE>
</FORM>



<?php

//$idklienta2=(int) $idklienta;
echo $idklienta;

//$osoba_przyjmujaca = $_SESSION["uzytkownik"];




if($_POST["send"]==1){

$nazwa_urzadzenia2 = $_POST["nazwa_urzadzenia2"];
$nr_fabryczny2 = $_POST["nr_fabryczny2"];
$kontakt_klienta2 = $_POST["kontakt_klienta2"];
$gwarancja2 = $_POST["gwarancja2"];
$opis2 = $_POST["opis2"];
$uwagi2 = $_POST["uwagi2"];
$data2=date("Y-m-d");


echo "$nazwa_urzadzenia2";
echo "$nr_fabryczny2";
echo "$kontakt_klienta2";
echo "$gwarancja2";
echo "$uwagi2";
echo "$data";

// dodajemy rekord do bazy


$query = "INSERT INTO serwis_zlecenie SET IDklienci='$idklienta', data='$data2', nazwa_urzadzenia='$nazwa_urzadzenia2', nr_fabryczny='$nr_fabryczny2', kontakt_klienta='$kontakt_klienta2', gwarancja='$gwarancja2', opis='$opis2', uwagi='$uwagi2'";

$ins = mysql_query($query) or die($query.': '.mysql_error());

}
mysql_close($connection);

?>

<br /><br /><br />
<a href="klienci.php" target="strona">Klienci</a><br/>


Wysyłam cały kod z którym mam problem.

Zrobiłem tak jak mówisz, wszystkie pozostałe zmienne(nazwa_urzadzenia2, nr_fabryczny2 - VARCHAR) dodają mi się do bazy.

tylko IDklienci nie.
Go to the top of the page
+Quote Post
nospor
post 15.06.2011, 07:28:08
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Uzywaj bbcode!
2) W formularzu nigdzie nie zapisujesz idklienta, więc trudno by te id samo mocą magiczną się przetransportowało...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:04