Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie rekordu
Forum PHP.pl > Forum > Przedszkole
malin23
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


toaspzoo
to jest Int czyli tylko liczba!
malin23
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

sadistic_son
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' ");
phpion
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.
malin23
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.
nospor
1) Uzywaj bbcode!
2) W formularzu nigdzie nie zapisujesz idklienta, więc trudno by te id samo mocą magiczną się przetransportowało...
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.