Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem ze wstawieniem zmiennej
Forum PHP.pl > Forum > Przedszkole
poszedl
Witam,
Mam taki oto problem.
Mam zmienną, która sobie przechodzi pomiędzy formularzami i na pewno przechodzi dobrze bo wyświetlam ją sobie testowo na stronach.
Problem mam, kiedy tą zmienną chcę albo insertem albo updatem wrzucić do tabeli. Do tabeli wrzuca wartość 0. I niestety nie wiem dlaczego.
Generalnie skrypt działa, bo jak podstawię stałą wartość to jest umieszczana poprawnie w tabali. Natomiast ze zmienną się wali.
Jakbym mógł prosić o małą wskazówkę.
Kod poniżej.
<?php
include ("config.inc");
include("$HeaderNowaAnkieta");
session_start();
if ( isset($_GET['logout']) )
{
switch($_GET['logout'])
{
case "tak":
//$_SESSION = array();
session_unset();
session_destroy();
break;
default:
break;
}
}

if ($_GET['dopisz']=='tak')
{
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$link = mysql_connect("$host", "$username", "$password")
or die("Unable to connect to SQL server");
mysql_select_db("$db_name") or die("Unable to select database");
$IdAnkieterGlowny = $_GET['IdAnkieterGlowny];
$query = "INSERT INTO listaankiet (DataWypelnienia, AnkieterWypelniajacy, IdAnkieterGlowny, Host, Login, DataWprowadzeniaAnkiety)
VALUES (
'".$_POST['DataWypelnienia']."',
'".$_POST['AnkieterWypelniajacy']."',
,'$IdAnkieterGlowny', '$hostname','".$_SESSION['user_login']."',SYSDATE()
)";

mysql_query($query)
or die("Błąd 1 - listaankiet");


include($RedirectAnkieta);

}
?>

<html>
<head>
<meta content="text/html; charset=ISO-8859-2"
http-equiv="content-type">
<title>Nowa ankieta</title>
</head>
<body style="background-color: rgb(204, 204, 204);">
<form action="NowaAnkieta.php?dopisz=tak" method="post">

<table cellpadding="2" cellspacing="2" border="0"
style="text-align: left; width: 100%;">
<tbody>
<tr>

</tr>
<tr>
<td style="vertical-align: top; height: 50%; width: 50%;">
<table cellpadding="2" cellspacing="2" border="0"
style="width: 100%; text-align: left; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td
style="background-color: rgb(15, 0, 0); text-align: center; vertical-align: middle; height: 50%; width: 50%;"><span
style="font-weight: bold; color: rgb(255, 255, 255);">Dane ankiety</span><br>
</td>
</tr>
</tbody>
</table>
<div style="text-align: center;"><span
style="font-weight: bold; color: rgb(51, 51, 153);">Data wypełnienia akiety<br></span>
<input type="text" name="DataWypelnienia" size="45"
maxlength="45"><br>
<div style="text-align: center;"><span
style="font-weight: bold; color: rgb(51, 51, 153);">Ankieter wypełniający ankietę<br></span>
<input type="text" name="AnkieterWypelniajacy" size="45"
maxlength="45"><br>

</td>
</tr>
</tbody>
</table>
<?php echo $IdAnkieterGlowny;?>
//testowe wyswietlenie wartosci zmiennej - jest OK
<hr style="width: 100%; height: 2px;">
<hr style="width: 100%; height: 2px;">
<table cellpadding="2" cellspacing="2" border="0"
style="text-align: left; width: 20%;">
<tbody>
<tr>
<td style="vertical-align: top;">
<p><input type="submit" name="submit" value="Dodaj ankietę"> </p>
</td>
<td style="vertical-align: top;">
<p><input type="reset" name="reset" value="Anuluj wprowadzone dane"> </p>
</td>
</tr>
</tbody>
</table>


</form>

</body>
</html>

Dziękuję za wszelkie wskazówki, bo coś utknąłem a zaliczenie się zbliża.
Piotrek
Lion_87
ale która zmienna?? popraw kod umieś go w znaczniki
Kod
[php][/php]
Kod
[html][/html]
poszedl
Tą moją felerną zmienną jest $IdAnkieterGlowny = $_GET['IdAnkieterGlowny];
Jest ona kluczem głównym w jednej tabeli i teraz przy tym skrypcie chciałbym ją umieścić w innej tabeli.
Lion_87
ale przkazujesz ją w linku?
i oczywiscie jest tam znacznik ' na końcu ?
  1. <?php
  2. $IdAnkieterGlowny = $_GET['IdAnkieterGlowny'];
  3. ?>


bo w kodzie tam go nie widze
nitek
przed samym insertem daj
Kod
echo $IdAnkieterGlowny;

i będziesz wiedział, czy masz na pewno coś w tej zmiennej..

no i faktycznie brak cudzysłowu winksmiley.jpg poza tym, jeśli id jest zapewne liczbą, to po co w insercie ujmujesz ją w cudzysłowy '$IdAnkieterGlowny' - możesz je sobie odpuścić...
poszedl
Tak jak najbardziej w linku, jest ?, przechodzi prawidłowa wartość, testowo go wyświetlam i jest OK, ale jakimś uporem (który pewnie jest błędem w programie) nie chce zainsertować się do tabeli.
nitek
możesz podać cały przykładowy link, na jakim testujesz? może tu jest problem..
poszedl
Hmm może tu jest coś źle, Zmienna na pewno jest liczbą, echo daje eleganckie np. 2, ale jak usunąłem '' z inserta to zapytanie wyrzuciło błąd.
Jak zrobiłem '$IdAnkieterGlowny' to zapytanie poszło, ale z pustą wartością IdAnkieterGlowny. Czyżby gdzieś po drodze int zmienił się w np. char?
W tabeli skąd jest to pobierane IdAnkieterGlowny jest int.

http://localhost/NowaAnkieta.php?IdAnkieterGlowny=2
nitek
z tego co widze, masz skopane zapytanie
Kod
$query = "INSERT INTO listaankiet (DataWypelnienia, AnkieterWypelniajacy, IdAnkieterGlowny, Host, Login, DataWprowadzeniaAnkiety)
VALUES (
'".$_POST['DataWypelnienia']."',
'".$_POST['AnkieterWypelniajacy']."',
,'$IdAnkieterGlowny', '$hostname','".$_SESSION['user_login']."',SYSDATE()
)";


zmień na:
Kod
$query = "INSERT INTO listaankiet (DataWypelnienia, AnkieterWypelniajacy, IdAnkieterGlowny, Host, Login, DataWprowadzeniaAnkiety)
VALUES ('".$_POST['DataWypelnienia']."','".$_POST['AnkieterWypelniajacy']."','$IdAnkieterGlowny','$hostname','".$_SESSION['user_login']."',SYSDATE())";


miales dwa przecinki przed IdAnkieterGlowny...

do tego dochodzi druga sprawa.z doświadczenia wiem, że nieraz nie powinno tak samo nazywać się zmiennych, jak masz je przekazane przez tablicę GET, czyli sprobuj zmienic nazwe zmiennej, np. na:

Kod
$IdAnkieterGl = $_GET['IdAnkieterGlowny];


oczywiście zmiany dokonaj w całym kodzie...
poszedl
Tak, widzę już przecinek, ale to niestety nie to.
nitek
wszystko wygląda ok.. daj jeszcze przed

Kod
mysql_query($query)
or die("Błąd 1 - listaankiet");


Kod
echo $sql;
i wklej to, co się wyświetli..
poszedl
Mniej więcej tak to wygląda.
INSERT INTO listaankiet (DataWypelnienia, AnkieterWypelniajacy, IdAnkieterGl, Host, Login, DataWprowadzeniaAnkiety) VALUES ( '2001-01-01', 'AnkieterNr1', '','Nazwa_komputera','MojLogin',SYSDATE())

No właśnie coś pusto tam gdzie powinna być wartość dAnkieterGl(zmieniłem jak radziłeś nazwę).
nitek
ostatni pomysł - zmień po prostu zapytanie na takie:

Kod
$query = "INSERT INTO listaankiet (DataWypelnienia, AnkieterWypelniajacy, IdAnkieterGlowny, Host, Login, DataWprowadzeniaAnkiety)
VALUES ('".$_POST['DataWypelnienia']."','".$_POST['AnkieterWypelniajacy']."',".$_GET['IdAnkieterGlowny'].",'$hostname','".$_SESSION['user_login']."',SYSDATE())";
poszedl
Niestety też pusto:(
nitek
kolejna rzecz, którą zauważyłem:
Kod
<form action="NowaAnkieta.php?dopisz=tak" method="post">


czyli po wciśnięciu submita przerzucasz się na stronę, gdzie nie masz zmiennej IdAnkieterGlowny w linku - proste.. winksmiley.jpg
zapewne, jesli dla testu dasz
Kod
<form action="NowaAnkieta.php?dopisz=tak&IdAnkieterGlowny=100" method="post">

to do bazy wstawi Ci liczbę 100..

jeśli chodzi o mnie, to na dzisiaj już za chwilę znikam winksmiley.jpg
poszedl
OK, pokombinuje jeszcze, dzięki bardzo za poświęcony czas.
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.