Avatar billede doncarnage Nybegynder
15. november 2008 - 19:46 Der er 4 kommentarer og
1 løsning

Sende oplysning videre om tabel ud fra en anden tabel

Godaften..

Jeg er rendt ind i et problem, som jeg tilsyneladende ikke selv kan løse.. Situationen er som følgende..

Jeg har 3 tabeller oprettet ved navn Varegruppe, Vare og Kategori.. Disse tre tabeller er mere eller mindre afhængige af hinanden og indeholder oplysninger om nogle produkter.. Hvis man skal skitsere det groft op inderholder 1. tabel: Hovedemner, 2. tabel: Underemner og 3. tabel: Produkterne.. Her følger en oversigt over disse: www.valuable.dk/oversigt.jpg

Når jeg går ind på siden vare.add.php og tilføjer en vare/et produkt ser det ud som følgende: www.valuable.dk/oversigt2.jpg ... Det fungerer også som det skal med en enkelt undtagelse.. Når man tilføjer en vare til tabellen skriver den bl.a. data ind om hvilken kategori produktet tilhører ud fra "SELECT FORMEN" på siden.. Dette bliver skrevet til parent i tabellen ved navn kategori..

Problemet ligger så i at jeg ligeledes gerne vil have at den skriver data ind i parent2 i den samme tabel.. Denne data skal så være lig med id på tabel(varegruppe) som den valgte kategori i "SELECT FORMEN" hører under..

Dvs. Hvis jeg fx tilføjer et produkt som jeg sætter til at høre under kategorien ved navn Bananer.. Så skal parent2 indeholde oplysninger om hvilken varegruppe som Bananer hører under..

Men hvordan gør jeg dette?

Håber det er til at forstå problemet.. Ellers må jeg forsøge at forklare mig endnu bedre :)=
Avatar billede doncarnage Nybegynder
15. november 2008 - 19:48 #1
------------------------------------------------------------------------------
Min vare.add.php ser ud som følgende:
------------------------------------------------------------------------------

<html>
<head>
<link rel="stylesheet" type="text/css" href="css.css">
</head>

<body>

<font class="lille">
» <a href="../index.php">Forside</a> » <a href="administration.php">Admin</a>

<br><br>

Du er her: ..admin/vare.add.php
</font>

<br><br>

<form action="form.handle.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="referer" value="post_vare">
<font class="normal">Vare</font><br><input class="input" type="text" name="name" style="width: 200px"><br>
<font class="normal">Kategori</font><br>

<select name="parent" class="input">
<?php
include_once('../inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$query = mysql_query("SELECT * FROM vare ORDER BY type ASC");
if (mysql_num_rows($query) > 0) {
    while ($row = mysql_fetch_assoc($query)) {


      echo '<option value='.$row['id'].'>'.$row['type'].'</option>';

    }
}
?>
</select><br>

<font class="normal">Ny</font><br>
<select name="ny" class="input">
<option value=''></option>
<option value='NY'>Ja</option>
<option value=''>Nej</option>
</select><br>
<font class="normal">Billede</font><br>

<input type="file" name="image" style="width: 248px" class="input2"><br>

<font class="normal">Beskrivelse</font><br><input class="input" type="text" name="beskrivelse" style="width: 200px"><br>
<font class="normal">På lager</font><br>
<select name="status" class="input">
<option value='admin/img/ukendt.jpg alt=Ukendt'></option>
<option value='admin/img/ja.jpg alt=Ja'>Ja</option>
<option value='admin/img/nej.jpg alt=Nej'>Nej</option>
</select><br>
<font class="normal">Pris</font><br><input class="input" type="text" name="pris" style="width: 200px"><br>
<br>

// HER SKAL PARENT2 VÆRE LIG MED ID PÅ VAREGRUPPEN SOM DEN VALGTE KATEGORI LIGGER UNDER
<br>
<input type="hidden" name="parent2" value="2">


<input type="submit" value="Post" class="input">
</form>

</body>
</html>

------------------------------------------------------------------------------
Og min form.handle.php ser ud som følgende:
------------------------------------------------------------------------------

<?php

include('../inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

if ($_POST['referer'] == 'post_varegruppe') {
        mysql_query("INSERT INTO varegruppe (navn) VALUES ('$_POST[navn]')") or die(mysql_error());

}

if ($_POST['referer'] == 'post_kategori') {
        mysql_query("INSERT INTO vare (type, parent) VALUES ('$_POST[type]', '$_POST[parent]')") or die(mysql_error());
}


//define a maxim size for the uploaded images in Kb
define ("MAX_SIZE","100");

//This function reads the extension of the file. It is used to determine if the file is an image by checking the extension.
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}

//This variable is used as a flag. The value is initialized with 0 (meaning no error found)
//and it will be changed to 1 if an errro occures.
//If the error occures the file will not be uploaded.
$errors=0;
//checks if the form has been submitted
if ($_POST['referer'] == 'post_vare') {
{
//reads the name of the file the user submitted for uploading
$image=$_FILES['image']['name'];
//if it is not empty
if ($image)
{
//get the original name of the file from the clients machine
$filename = stripslashes($_FILES['image']['name']);
//get the extension of the file in a lower case format
$extension = getExtension($filename);
$extension = strtolower($extension);
//if it is not a known extension, we will suppose it is an error and will not upload the file,
//otherwise we will do more tests
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{
//print error message
echo '<h1>Unknown extension!</h1>';
$errors=1;
}
else
{
//get the size of the image in bytes
//$_FILES['image']['tmp_name'] is the temporary filename of the file
//in which the uploaded file was stored on the server
$size=filesize($_FILES['image']['tmp_name']);

//compare the size with the maxim size we defined and print error if bigger
if ($size > MAX_SIZE*1024)
{
echo '<h1>You have exceeded the size limit!</h1>';
$errors=1;
}

//we will give an unique name, for example the time in unix time format
$image_name=time().'.'.$extension;
//the new name will be containing the full path where will be stored (images folder)
$newname="images/".$image_name;
//we verify if the image has been uploaded, and print error instead
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied)
{
echo '<h1>Copy unsuccessfull!</h1>';
$errors=1;
}}}}


//If no errors registred, print the success message
if($_POST['referer'] == 'post_vare' && !$errors)
{
mysql_query("INSERT INTO kategori (name, ny, billede, beskrivelse, status, pris, parent, parent2) VALUES ('$_POST[name]', '$_POST[ny]', '$newname', '$_POST[beskrivelse]', '$_POST[status]', '$_POST[pris]', '$_POST[parent]', '$_POST[parent2]')") or die(mysql_error());
echo "<h1>File Uploaded Successfully! Try again!</h1>";
}
}
?>
Avatar billede tjens Nybegynder
15. november 2008 - 23:48 #2
Du skjuler tabel 2's parent sammen med tabels 2' id ved at ændre
      echo '<option value='.$row['id'].'>'.$row['type'].'</option>';
til
      echo '<option value='.$row['id'].'#'.$row[parent].'>'.$row['type'].'</option>';

Og så trækker du værdierne ud igen ved at splitte parent i 2:
//If no errors registred, print the success message
if($_POST['referer'] == 'post_vare' && !$errors)
{
list($parent, $parent2) = split( '#'. $_POST[parent]);
mysql_query("INSERT INTO kategori (name, ny, billede, beskrivelse, status, pris, parent, parent2) VALUES ('$_POST[name]', '$_POST[ny]', '$newname', '$_POST[beskrivelse]', '$_POST[status]', '$_POST[pris]', '$parent', '$parent2')")

Men har du ikke fået byttet rundt på navnene på tabel "kategori" og "vare"?
Skynd dig at rette det, da det vil give fejl og hovedbrud senere, når programmerne bliver svære at læse.
Avatar billede doncarnage Nybegynder
16. november 2008 - 00:08 #3
Hej igen.. Når jeg prøver at gøre som du skrev der får jeg følgende fejl :(

Warning: Wrong parameter count for split() in C:\Programmer\xampp\htdocs\fiskesystem\admin\form.handle.php on line 86

Og jo, har kommet til at bytte om på tabel navnene, for at linkene skulle passe bedre på siden.. Men du har ret i at det hurtigt kan forvirre en (i øvrigt godt iagttaget :D )
Avatar billede tjens Nybegynder
16. november 2008 - 00:23 #4
Jeg har vist lavet fejl i splitten: Der skal ikke være et punktum, men et komma.

Check split i manualen: Jeg har ikke lavet PHP i mange år.
Avatar billede doncarnage Nybegynder
16. november 2008 - 00:43 #5
Ah okay ;) Jeg er selv ny indenfor php, så har endnu ikke stiftet bekendtskab med funktionen split - men det har jeg så nu..

Det fungerer og jeg takker og bukker mange gange ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester