sql проблем

bolface

Registered
хора, имам 2 таблици -

CREATE TABLE customer(
customerid int NOT NULL auto_increment primary key,
fname varchar (30) NOT NULL default '',
lname varchar (35) NOT NULL default '',
email varchar (255) NOT NULL default ''
);

CREATE TABLE car(
carid int NOT NULL auto_increment primary key,
car_customerid int NOT NULL,
model varchar (15) NOT NULL default '',
specifications varchar (300) NOT NULL default '',
yesr int (4) NOT NULL default '',
foreign key (car_customerid) references car(customerid)
);

Искам да свържа 2-те таблици и го правя с foreign key във table car. Обаче като въведа запис - демек клиент Х с данните му и той купи кола - У записа не влиза в таблица car. А преди да сложа foreign key в талица car записите влизаха.

Да ме светнете какво става, моля ви !!!
 
Дай да видя как ги записваш.
Кода дай.

И предишния, който е работил и този сега който не работи. :)
 
Понеже е късно искам да ти кажа какво виждам и как мисля,
че трябва да бъде.

Та.

Не знам за какво ще ги ползваш тези таблици.
Ако е за поръчка на кола ОК.
Няма логика обаче.

В едната таблица е потребителя в другата колата, която си е поръчал.

Колите не са ли в отделна таблица?
Нямаш ли таблица в която са описани всички коли?

Трябва да имаш таблица "users" и таблица "cars".

След това се прави 3-та таблица която се казва "orders" и в нея са описани поръчките.

Тя трябва да изглежда така:

ID USER_ID CAR_ID
1.......2............6

където 2 е ИД на потребителя а CAR_ID е ИД на колата.

След като ги свържеш тези три таблици ще знаеш кой колко и какви коли е поръчал.

В твоя слуай не знам как ще стане точно и какво се опитваш да направиш.

Ако ми обясниш подробно веднага ще ти дам код.


Дай разяснение какво се случва в твоя сайт.
Потребителя влиза и се регва -> избира кола и натиска "КУПИ"

или без регистрация

Влиза -> пише си името и каква кола търси да купува -> натиска ОК.


Важни са тези неща. Също дай и кода който позлваш в момента (дето не работи) и този който преди си ползвал ( и казваш, че работи).
 
Ами влиза си пича, регистрирва се и попада в таблица CUSTOMER, после си пуска обявата че продава старата си бричка примерно и таз обява влиза в таблица CAR. Тъй ама моя милост не може нещо ги събра двете действия ...

ето admin:

<?php

include "header.php";

$con=mysql_connect("localhost", "root", "pass") or die(mysql_error());
mysql_select_db("project", $con) or die(mysql_error());

if (isset($_POST['submit'])) {

if (!$_POST['model'] || !$_POST['specifications'] || !$_POST['year']) {
die('Полетата не са попълнени');
}
else
{

$model = addslashes($_POST['model']);
$specifications= addslashes($_POST['specifications']);
$year = addslashes($_POST['year']);
$userid = $_SESSION["userid"];


$query = "insert into car(model, speifications, year, userid) values ('$model', '$specifications', '$year', '$userid')"or die(mysql_error());
$result = mysql_query($query, $con);

echo "<center><strong>Вашата обява е публикувана успешно !</strong></center><br/>";

}
?>
 
Аха.

Ок.
Така добива вече смисъл.

Това не виждам за какво ти е в случая.
foreign key (car_customerid) references car(customerid)

Единственото нещо което трябва да направиш при създаването на таблицата car е

carid int NOT NULL auto_increment primary key,

и ти вече си го направил.

После само записваш в базата данни.
От сесиината променлива взимаш ID то на потребителя а останалите данни
ги получаваш от формуляра.

Всичко трябва да си работи перфектно и двете таблици са свързани
с общо поле.

customerid= car_customerid

това е връзката.

Всичко е било ОК.

Ако искаш някакъв код който да ги извежда ще ти напиша.

Мога да ти напиша ( и не само аз) код който да свързва двете таблици и да ти листва продавача+кола+ останалите данни.....

Правил ли си заявка между две (или повече) таблици?
Знаеш ли как да ги обединяваш и да извличаш данните?
 
да де ама това поле все си стои 0 .. в смисъл че не хващам car_customerid да си променя стойността .. Затова си мислех че трябва да е foreign key.
Аз искам в база CAR да се следи кой пуска обява. А ако можеш някакъв код да ми дадеш за дроп-даун скрипт който да търсе по *продавам* *купувам* ... аз тука видях един код ама той е за общо търсене, пък аз искам да разбера как се търси през дроп-даун меню ..
 
Чакай сега...
За даможе да пусне обява той трябва да се логне .. нали?

При самото логване (се проверява user->pass) и ако са верни
се извличат данните за потребителя(ид, усер, име и т.н.)

Стартира се сесия със стойност равна на ИД-то му.

Точно тази стойност трябва да се записва в базата данни.

Я дай едно echo да видиш каква е стойността на сесиината променлива .


<?php

include "header.php";

$con=mysql_connect("localhost", "root", "pass") or die(mysql_error());
mysql_select_db("project", $con) or die(mysql_error());

if (isset($_POST['submit'])) {

if (!$_POST['model'] || !$_POST['specifications'] || !$_POST['year']) {
die('Полетата не са попълнени');
}
else
{

$model = addslashes($_POST['model']);
$specifications= addslashes($_POST['specifications']);
$year = addslashes($_POST['year']);
$userid = $_SESSION["userid"];

echo "USERID=".$userid."<br/><br/>";



$query = "insert into car(model, speifications, year, userid) values ('$model', '$specifications', '$year', '$userid')"or die(mysql_error());
$result = mysql_query($query, $con);

echo "<center><strong>Вашата обява е публикувана успешно !</strong></center><br/>";

}
?>



Така ще видиш какво записваш в базата данни.
 
Намерих грешка:


$query = "insert into car(model, speifications, year, car_customerid) values ('$model', '$specifications', '$year', '$userid')"or die(mysql_error());

Така трябва да е.
 
bolface каза:
:x

абе и аз пробвам ма нищо не става

Кое не става?

Ако вади само USERID=
това значи, че сесията няма стойност .
Може въобще да не е стартирана.
Тя се стартира след логването на потребителя.

Дай логин скрипта.
Там трябва да се стартира тази сесия с някаква стойност (2,3,4...567)
в зависимост от id то на логнатия потребител.

Трябва да видя и какво има в header.php .

В него най-отгоре трябва да има session_start(); .
 
това ми е кода дето проверява при логин име и пас


<?php

include "header.php";

************

$con=mysql_connect("localhost", "root", "pass")or die("cannot connect");
mysql_select_db("project", $con)or die("cannot select DB");

if (!$_POST['username'] || !$_POST['password'])
{
die('Полетата не са попълнени.');
}

if($_POST['username'] && $_POST['password'])
{
$username=$_POST['username'];
$password = md5(trim($_POST['password']));
$sql=mysql_query("SELECT * FROM customer WHERE username='$username' and password='$password'") or die(mysql_error());

if(mysql_num_rows($sql)>0)
{
$_SESSION["userid"] = $sql["userid"];

header("location:ad.php");

}
else
{
echo "Грешно потребителско име или парола.";
exit;
}

$HTTP_SESSION_VARS['user'] = $_POST['username'];

}
 
добре бе аз ли несхванах :shock:
$sql=mysql_query("SELECT * FROM customer WHERE username='$username' and password='$password'")

тия полета в зелено нещо ги няма в таблицата ?!
 
ехеее аз хептен се оплетох в код .. имам ги вече на килограм - моя е грешката пичове .
Извинявам се - нещата се оправиха като смених скрипта с правилния. Ха хаха :?:
 

Back
Горе