Avatar billede Slettet bruger
10. august 2010 - 02:20 Der er 59 kommentarer og
1 løsning

Vælg dele af data fra database på forskellige måder.

Der er lidt flere opgaver i en her.

Jeg har en database hvor jeg har følgende felter.
Ved ikke hvordan dette kommer til at se ud:
[id][type]
-1-|-1,2,3-
-2-|-2,3,4-
-3-|-1,2,4-
-4-|--1,3--


Jeg vil gerne have at jeg kan lave en liste med de forskellige typer der er. I dette tilfælde:

[Typer]
1
2
3
4



Jeg vil også gerne have så hvis man trykker på et af tallene, på den liste jeg lige har lavet. Så kommer man ind på en side som henter det frem der indholder type 4

Skal bare have hjælp til at lave linket og den mysql_query der skal bruges på næste side.

[id][Type]
-2-|-2,3,4-
-3-|-1,2,4-



Dernæst vil jeg gerne have at jeg kan lave en tæller der indholder fx type 4

Der er (2) der indholder type 4



3 små opgaver som i princippet er 1.
Men vil gerne adskille dem så jeg kan se hvordan man løser hver enkel opgave.
Avatar billede majbom Novice
10. august 2010 - 08:17 #1
det ville være en del nemmere hvis du havde flere tabeller hvor du "fordeler" indholdet og laver relationer imellem dem - er det muligt for dig at ændre i din struktur?
Avatar billede ggxdg Nybegynder
10. august 2010 - 08:37 #2
Jeg vil mene at det bliver nemmere at behandle data, og lave querys hvis du spreder dine types ud på deres egne celler, enten ved at tillade at din ID gantages, elle ved at tilføje en ekstra tabel.

f.eks.:
[id][type]
-2-|-2-
-2-|-3-
-2-|-4-
-3-|-1-
-3-|-2-
-3-|-4-

Du kan lave en liste af typer med:
$type_res = mysql_query(SELECT DISTINCT type
FROM tabel)
while($type_row = mysql_fetch_assoc($type_res))
{
  echo "<a href=\"?type=".$type_row['type']."\">".$type_row['type']."</a>" //dette er din liste med link af typer
}






resultater af type x:
$id_res = mysql_query(SELECT id FROM tabel WHERE type = '$_GET["type"]');
echo "ID'er af typen ".$_GET['type'].":";
while($id_row = mysql_fetch_assoc($result))
{
  echo $id_row['id']."<br />"; //liste af resultater af typen fra tidligere links
}



Antal der indeholder type x kan laves med:
$result = mysql_query(SELECT type FROM tabel WHERE type = '$_GET["type"]');
$type_num = mysql_num_rows($result);
Avatar billede ggxdg Nybegynder
10. august 2010 - 08:42 #3
fandt lige en fejl:

echo "ID'er af typen ".$_GET['type'].":";
$id_res = mysql_query(SELECT id FROM tabel WHERE type = '$_GET["type"]');
while($id_row = mysql_fetch_assoc($id_res)){
  echo $id_row['id']."<br />"; //liste af resultater af typen fra tidligere links
}


Der er sikkert flere, så det fungerer nok ikke lige første gang...
Avatar billede Slettet bruger
10. august 2010 - 11:53 #4
Jeps det ved jeg at det er meget nemmere.
Men nu er det desværre en gammel database hvor der skal laves noget nyt spændene.

Der er kun 2542 rækker med mellem 3 og 7 så kaldte typer i. Så det er ikke så let lige at skulle til at sidde og smide det i en ny database.
Avatar billede Slettet bruger
10. august 2010 - 12:12 #5
Jeg havde sådan set bare lavet en øve database kun med ID og Type.

Det kommer jo til at tage en krig at skulle lave det hele om.
Hele systemmet der sender data'en skal laves om så der bliver mindst 4 databaser. Da der sådan set er 3 coloner det skal laves i.
Og så skal de 2542 indlæg laves om manuelt.

Men hvis det ikke kan laves så må jeg jo prøve det.

Så har jeg bare et lille spørgsmål.

Hvis du har et input felt.
Og data'en i det indputs felt så bliver lavet sådan:
type1, type2, type3

Kan man så godt få den til at sende hver type til sin egen celle i databasen?
Avatar billede ggxdg Nybegynder
10. august 2010 - 12:27 #6
Ja...
Der er en PHP-funktion der hedder explode()
$pieces = explode(", ", $_POST['input']);)
http://dk.php.net/manual/en/function.explode.php[/div] som du kan bruge til at lave dit input om til en array, som du så bare kan loope igennem, mens du insætter værdierne.

På samme måde kan du lave et PHP-script der laver din DB om for dig, men det kan måske godt komme til at tage lidt tid.

Det kan også sagtens lade sig gøre at bruge din DB som den er, men dine queries bliver nok lidt bøvlede, eller også skal du bruge PHP til at sortere resultaterne.

Men hvis det er fordi at du skal bruge dine gamle DB resultater frem i tiden, vil jeg klart anbefale at konvertere dem.
Avatar billede ggxdg Nybegynder
10. august 2010 - 12:29 #7
Jeg prøver lige igen - sorry

Ja...
Der er en PHP-funktion der hedder explode()
$pieces = explode(", ", $_POST['input']);)
http://dk.php.net/manual/en/function.explode.php
som du kan bruge til at lave dit input om til en array, som du så bare kan loope igennem, mens du insætter værdierne.

På samme måde kan du lave et PHP-script der laver din DB om for dig, men det kan måske godt komme til at tage lidt tid.

Det kan også sagtens lade sig gøre at bruge din DB som den er, men dine queries bliver nok lidt bøvlede, eller også skal du bruge PHP til at sortere resultaterne.

Men hvis det er fordi at du skal bruge dine gamle DB resultater frem i tiden, vil jeg klart anbefale at konvertere dem.
Avatar billede Slettet bruger
10. august 2010 - 12:33 #8
Var også lige ved at skulle skrive om man ikke kunne lave et script det hentede frem og lagde ud i en ny database.

Er det noget nogen af jer kan hjælpe mig med?
På den måde kan jeg nøjes med at lukke siden i et par timer en nat.

Så oprette jeg lige et nyt spørgsmål til det.
Avatar billede Slettet bruger
10. august 2010 - 12:54 #9
Sådan holde lige denne åben til det andet er på plads ggxdg's forslag skal jo nok bruges derefter.
Avatar billede ggxdg Nybegynder
10. august 2010 - 13:30 #10
$rb_res = mysql_query(SELECT * FROM tabel);
while ($rb_row = mysql_fetch_assoc($rb_res))
{
  if(!mysql_query(INSERT INTO indekstabel (navn) VALUES('$rb_row[navn]')))
  {
    die('Error: ' . mysql_error());
  } else {
    $id_ref = mysql_insert_id();
    $rb_ex_arr = explode(",", $rb_row['type']);
    foreach($rb_ex_arr as $rb_ex_val) {
      if(!mysql_query(INSERT INTO typetabel (id_ref, type) VALUES('$id_ref', '$rb_ex_val')))
      {
        die('Error: ' . mysql_error());
      }
    }
  }
}


ovenstående er et meget hurtigt forslag (sikkert fuld af fejl) til hvordan du kan lave et script til at konvertere din database

indekstabel:
[id][navn]

CREATE TABLE indekstabel (
    id MEDIUMINT NOT NULL AUTO_INCREMENT,
    navn CHAR(30) NOT NULL,
    PRIMARY KEY (id)
);



typetabel:
[id_ref][type]

CREATE TABLE typetabel (
    id_ref MEDIUMINT NOT NULL,
    type TINYINT NOT NULL,   
    PRIMARY KEY (id_ref)
);



Ovenstående danner 2 tabeller, hvilket gør mine tidligere eksempler ubrugelige.
Avatar billede ggxdg Nybegynder
10. august 2010 - 13:47 #11
Mine tidligere eksempler var nemme at skrive om, hvis du ikke skal bruge navn eller noget fra "indekstabellen"

echo "Typer:<br />
$type_res = mysql_query(SELECT DISTINCT id_ref,type FROM typetabel);
while($type_row = mysql_fetch_assoc($type_res)){
  echo "<a href=\"?type=".$type_row['type']."\">".$type_row['type']."</a><br />"
}



echo "ID'er af typen ".$_GET['type'].":<br />";
$id_res = mysql_query(SELECT id_ref FROM typetabel WHERE type = '$_GET["type"]');
while($id_row = mysql_fetch_assoc($id_res)){
  echo $id_row['id']."<br />";
}



$result = mysql_query(SELECT id_ref FROM typetabel WHERE type = '$_GET["type"]');
$type_num = mysql_num_rows($result);
echo "Der er ".$type_num." resultater af typen ".$_GET["type"].".<br />";
Avatar billede ggxdg Nybegynder
10. august 2010 - 14:15 #12
Tilpassede lige mit ovenstående eksempel og smed den over i den anden tråd.
Avatar billede Slettet bruger
11. august 2010 - 02:46 #13
Nu gør dette jo opgaven lidt anderledes.

Jeg har hoved databasen. Kalder vi (Main)

Og så har jeg 3 databaser som har en reference til hoved databasen
De ene kalder vi (Type)
Her er flere typer til det et ID i main databasen


Ex er der et indlæg i main databsen hvor ID=3
i Type databasen er der så følgende
[Type][refid]
--1--|---2---
--2--|---2---
--1--|---3---
--2--|---3---
--4--|---3---

--2--|---4---
--4--|---4---
Så der er en type 1, 2 og 4 der har ref til indlægget i main med ID=3


Så nu er det jeg skal bruge:
(Igen opdelt i opgaver, som gerne må løses hver for sig, så jeg kan se hvordan man gør, ved hver enkel.)


Opgave 1

En database der
Som laver en liste med alle de forskellige typer der er i databasen type. Og der er jo flere der går igen så de skal jo kun nævnes en gang.
Sådan en liste skal jeg have lavet.


Opgave 2

Nu skal 2 databaser blandes sammen.
Jeg skal have lavet et link på listen som blev lavet før.
Linket skal så åben en ny side, som vi bare kalder side2.php.
Denne side skal så indeholde en liste med alle de titler i Main som har en reference til den type der er valgt.


Jeg er ikke verdens bedste til at forklare sådanne noget.
Så håber det er forståeligt. Ellers bare spørg.
Avatar billede Slettet bruger
11. august 2010 - 03:20 #14
Opgave 1 løst:

<?
include("config.php");

$type_res = mysql_query("SELECT DISTINCT type FROM type");
while($type_row = mysql_fetch_assoc($type_res))
{
  echo "<a href=\"?type=".$type_row['type']."\">".$type_row['type']."</a><br>"; //dette er din liste med link af typer
}

?>


Jeg har leget lidt med det andet du postede.
Men kan ikke få det til at virke med at den skal vise antal indlæg der er med hver type
Lige nu kommer typerne lodret og jeg vil gerne have antallet i en () ved siden af. Fx:
1 (10)
2 (4)
3 (2)
4 (7)

næste problem er så at indsætte det rigtige link.
den skal hoppe til side2.php
Og vise en liste med alle de titler fra Main databasen som har referencen til typen.

Det må jo være noget med where id = idref
id i main, og idref i type databasen.
Men synes ikke jeg kan få det til at virke.
Avatar billede Slettet bruger
11. august 2010 - 03:59 #15
Nu er det på tide jeg kommer i seng.... har prøvet lidt at få antallet til at blive vist:

[dv]
<?
include("config.php");

$sql = mysql_query("SELECT COUNT(*) AS antal FROM type WHERE type='$_GET['type']'");
$row = mysql_fetch_array($sql);


$type_res = mysql_query("SELECT DISTINCT type FROM type");
while($type_row = mysql_fetch_assoc($type_res))



{
  echo "<a href=\"?type=".$type_row['type']."\">".$type_row['type']."</a> ($row[antal])<br>"; //dette er din liste med link af typer
}


?>
[/div]

Kan bare ikke få det rigtigt sat ind i denne del:
WHERE type='$_GET['type']'

Hvis jeg manuelt skriver 1 så virker det.
Men så viser det antal der er af 1'er i databasen.
Men det gør den jo så selvf ud for allesammen. Men jeg prøvede bare for at teste.

Jeg har prøvet med
WHERE type='$_GET['type']'
WHERE type='.$type_row['type'].'
WHERE type=.$type_row['type'].
WHERE type=$type_row['type']
Og mange mange flere :P
Avatar billede ggxdg Nybegynder
11. august 2010 - 09:20 #16
Liste der viser antal inlæg af forskellige typer:

<?
include("config.php");

$id_res = mysql_query("SELECT DISTINCT(type), refid FROM type");
while($id_row = mysql_fetch_assoc($id_res))
{
  $num_res = mysql_query("SELECT refid FROM type WHERE type = '$id_row[type]'");
  $type_num = mysql_num_rows($num_res);
  echo "<a href=\"side2.php?refid=".$id_row['refid']."\">".$id_row['type']." (".$type_num.")</a><br />";
}

?>


Jeg har aldrig prøvet en
mysql_query("SELECT DISTINCT(type), refid FROM type");
før, så jeg håber den opfører sig som det er meningen :)


Den skulle outputte en type-liste, med link til
side2.php?refid=x


I side2.php, kan du bare lave en
mysql_query("SELECT id FROM main WHERE id = $_GET['refid']");
Avatar billede Slettet bruger
11. august 2010 - 12:17 #17
startede lige med antal:
Den viser rigtigt listen, men der er 0 ud for alle typerne.

$num_res = mysql_query("SELECT refid FROM type WHERE type = '$id_row[type]'");
java script:%20void(0);
Avatar billede Slettet bruger
11. august 2010 - 12:18 #18
Hvor kom det der java script fra. :S det er ikke noget jeg har sat ind :S
Avatar billede ggxdg Nybegynder
11. august 2010 - 13:24 #19
hmmm... fungerer links som de skal?
Avatar billede Slettet bruger
11. august 2010 - 13:27 #20
Nu har jeg fået leget lidt mere med det:


<?
include("config.php");

$id_res = mysql_query("SELECT DISTINCT type FROM type");
while($id_row = mysql_fetch_assoc($id_res))
{
  $num_res = mysql_query("SELECT type FROM type WHERE type = '$id_row[type]'");
  $type_num = mysql_num_rows($num_res);
  echo "<a href=\"side2.php?refid=".$id_row['refid']."\">".$id_row['type']." (".$type_num.")</a><br />";
}

?>

Fejlen skulle gerne være fremhævet med fed skrift.
Det er den linje der den brokker sig over.

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in list.php on line 8
Avatar billede Slettet bruger
11. august 2010 - 13:39 #21
Har ikke prøvet det med links endnu.
Avatar billede ggxdg Nybegynder
11. august 2010 - 13:51 #22
include("config.php");
$id_res = mysql_query("SELECT DISTINCT(type), refid FROM type");
while($id_row = mysql_fetch_assoc($id_res)){
  $num_que = "SELECT refid FROM type WHERE type = '".$id_row['type']."'";
  $num_res = mysql_query($num_que);
  $type_num = mysql_num_rows($num_res);
  echo "<a href=\"side2.php?refid=".$id_row['refid']."\">".$id_row['type']." (".$type_num.")</a><br />";
}
?>


Meningen med scriptet, er at det skal tælle antallet af ID'er der matcher den aktuelle type, i loopet.

Hvis det stadig ikke fungerer, kan vi lige prøve med
COUNT(refid) AS refidcount
Avatar billede Slettet bruger
11. august 2010 - 14:29 #23
Jeg måtte rette lidt i den for at få det til at virke:

Det var denne linje:

$id_res = mysql_query("SELECT DISTINCT(type), refid FROM type");



til:

$id_res = mysql_query("SELECT DISTINCT(type) FROM type");


Jeg måtte fjerne , refid
Hvorfor er det type er i () og hvorfor var det du valgte Distinct?


Jeg måtte lave linket om:

echo "<a href=\"side2.php?type=".$id_row['type']."\">".$id_row['type']." (".$type_num.")</a><br />";

For den skal jo hente en bestemt type.

Side 2 har jeg sat sådan op:

<?
include("config.php");

$type_res = mysql_query("SELECT * FROM main WHERE id = 'refid'");
while($type_row = mysql_fetch_assoc($type_res))

{
  echo ".$type_row['title']."<br>";
}
?>


Her prøver jeg at hente id=refid
Og så vise titlerne i main databasen
Avatar billede ggxdg Nybegynder
11. august 2010 - 15:34 #24
"type" smed jeg i parentes fordi jeg gerne ville outputte refid til linket, men hvis man siger "DISTINCT type, refid" vil den lave et output så snart der er en forskel i den ene af dem, hvilket giver en hulens masse resultater.

Jeg kender ikke så meget til DISTINCT, men den outputter kun unikke resultater, hvilket er smart nok.

Man kan nok også bruge GROUP BY (læste vist nok et sted at det er mere effektivt end DISTINCT, da den ikke løber alle resultater igennem, eller noget i den retning):

$id_res = mysql_query("SELECT type FROM type GROUP BY type");


Set i retrospekt vil min tidligere query ikke ouputte det der var meningen m.h.t. refid, jeg aner ikke lige hvad jeg har tænkt da jeg lavede den.
Jeg har jo tydeligtvis forsøgt at få en enkel ID ud af det hele, men selvfølgelig er det typen der skal linkes videre, da der er flere ID'er som deler de forskellige typer.

Fungerer optællingen nu?


<?
include("config.php");

$type_que = "SELECT * FROM type INNER JOIN Main ON type.refid = Main.id WHERE type.type = '".$_GET['type']."'";
$type_res = mysql_query($type_que);
while($type_row = mysql_fetch_assoc($type_res))

{
  echo ".$type_row['title']."<br>";
}
?>
Jeg håber ovenstående fungerer som Side2.php, det er ret lang tid siden jeg har arbejdet med joins.
Avatar billede Slettet bruger
11. august 2010 - 15:59 #25
$type_que = "SELECT * FROM type INNER JOIN Main ON type.refid = Main.id WHERE type.type = '".$_GET['type']."'";


Puha det er noget jeg aldrig har set før.

Den skal jeg lige forstå.

Select * From type --> her er du inde i databasen type
Inner join main --> her går du ind i databasen main
ON type.refid = main.id --> her laver du et eller andet med refid fra type og id fra main.
WHERE type.type = '".$_GET['type']."' --> her skal type i databasen type være = get type som du henter fra databasen type?

Det virker ikke.
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in side2.php on line 9

linje 9 er denne:
  echo ".$type_row['title']."<br>";
Avatar billede ggxdg Nybegynder
11. august 2010 - 19:12 #26
<?
include("config.php");

$type_que = "SELECT * FROM type INNER JOIN Main ON type.refid = Main.id WHERE type.type = '".$_GET['type']."'";
$type_res = mysql_query($type_que);
while($type_row = mysql_fetch_assoc($type_res))

{
  echo $type_row['title']."<br />";
}
?>


Se om det ikke lige klarede det :)
Avatar billede ggxdg Nybegynder
11. august 2010 - 19:17 #27
og ja... din gennemgang af scriptet er helt korrekt...


INNER JOIN
samler 2 tabeller.

ON
sammenligner felter fra begge tabeller som skal være ens.
Så vi sammenligner "refid" fra "type"-tabellen, med "id" fra "Main"-tabellen, de steder det passer sammen, samles.

WHERE
kender du nok :)


Som sagt, det er lang tid siden jeg har rodet med joins, så det er ikke sikkert den lige fungerer i første forsøg.
Avatar billede ggxdg Nybegynder
11. august 2010 - 19:21 #28
$type_que = "SELECT * FROM type, Main WHERE type.refid = Main.id AND type.type = '".$_GET['type']."'";

burde også fungere tror jeg...
Avatar billede Slettet bruger
11. august 2010 - 19:23 #29
Se det var en start. Nu forsvandt fejlen.
Men der er bare ingen data, der bliver udskrevet.

:P
Avatar billede Slettet bruger
11. august 2010 - 19:33 #30
Prøvede lige den anden $type_que
Der kom heller ingen fejl. Men heller ikke nogen udskrift med data.
Avatar billede ggxdg Nybegynder
11. august 2010 - 19:55 #31
hmm...
hvordan ser adresselinjen ud når du kører scriptet?

hvis der ikke er en
?type=x
så vil jeg skyde på det er problemet :P
Avatar billede Slettet bruger
11. august 2010 - 20:00 #32
Linje er perfekt og har været faktisk hele tiden :(

Men det er som om den ikke henter data'en frem.
Hvordan kan den se hvilken database, den skal hente title fra?
Avatar billede Slettet bruger
11. august 2010 - 20:00 #33
side2.php?type=1
Avatar billede Slettet bruger
11. august 2010 - 21:26 #34
Har kigget lidt mere på det og prøvet en masse.
Men kan desværre ikke lige se hvad jeg kan gøre.

Jeg var inde og læse om INNER JOIN men fandt ikke rigtigt en fejl eller et svar.
Avatar billede ggxdg Nybegynder
11. august 2010 - 23:11 #35
<?
include("config.php");

$type_get = $_GET['type'];
echo "Typen hentet fra adressen: ".$type_get."<br />";
$type_que = "SELECT * FROM type INNER JOIN main ON type.refid = Main.id WHERE type.type = '$type_get'";
echo "<br />Query:".$type_que."<br /><br />";
$type_res = mysql_query($type_que);
while($type_row = mysql_fetch_assoc($type_res))
{
  echo $type_row['title']."<br />";
}
?>


Rettet:
Main
til
main

Tilføjet:
Echo af type og query, så man kan se om det opfattes rigtigt.
Avatar billede ggxdg Nybegynder
11. august 2010 - 23:12 #36
hvis det stadig ikke fungerer, så skriv lige hvad den echoer ud.
Avatar billede ggxdg Nybegynder
11. august 2010 - 23:21 #37
<?
include("config.php");

$type_get = $_GET['type'];
echo "Typen hentet fra adressen: ".$type_get."<br />";
$type_que = "SELECT * FROM type INNER JOIN main ON type.refid = main.id WHERE type.type = '$type_get'";
echo "<br />Query:".$type_que."<br /><br />";
$type_res = mysql_query($type_que);
while($type_row = mysql_fetch_assoc($type_res))
{
  echo $type_row['title']."<br />";
}
?>


fik ikke lige rettet alle "Main" *suk*
Avatar billede Slettet bruger
11. august 2010 - 23:23 #38
Der er problemet:
Den har type oppe i URL'en
Men ikke med i query'en


Typen hentet fra adressen:

Query:SELECT * FROM type INNER JOIN Main ON type.refid = main.id WHERE type.type ''
Avatar billede Slettet bruger
11. august 2010 - 23:25 #39
Hehe fik heller ikke ændret dem helt rigtigt.
Men det er de blevet nu og samme fejl.
Avatar billede ggxdg Nybegynder
11. august 2010 - 23:28 #40
dine echo's har stadig ikke typen med?
Avatar billede Slettet bruger
11. august 2010 - 23:30 #41
Nope
Avatar billede ggxdg Nybegynder
11. august 2010 - 23:30 #42
prøv lige at erstatte
$type_get = $_GET['type'];
med
$type_get = 1;
så vi lige kan finde ud af om queryen, og det andet fungerer.
Avatar billede Slettet bruger
11. august 2010 - 23:33 #43
Så finder den hele listen som den skal.
Men selvf kun for type 1.
Avatar billede ggxdg Nybegynder
11. august 2010 - 23:39 #44
Men det fungerer som det skal så? altså queryen?

jeg prøvede at lave en test fil:
gettest.php
<?
$type_get = $_GET['type'];
echo "Typen hentet fra adressen: ".$type_get."<br />";
$type_que = "SELECT * FROM type INNER JOIN main ON type.refid = Main.id WHERE type.type = '$type_get'";
echo "<br />Query:".$type_que."<br /><br />";
?>


gettest.php?type=1
outputter
Typen hentet fra adressen: 1

Query:SELECT * FROM type INNER JOIN main ON type.refid = Main.id WHERE type.type = '1'
Jeg ved ikke lige hvorfor $_GET['type'] ikke fungerer for dig :s
Avatar billede Slettet bruger
11. august 2010 - 23:43 #45
Det undre godt nok også mig :S
Avatar billede ggxdg Nybegynder
11. august 2010 - 23:47 #46
Men når queryen fodres med et tal, så fungerer den helt som den skal - ikke?
Avatar billede Slettet bruger
11. august 2010 - 23:53 #47
Jo... Så virker det super.

Synes bare det er underligt at den ikke kan hente den med _GET
Avatar billede ggxdg Nybegynder
11. august 2010 - 23:55 #48
Vil du ikke lige prøve at smide din kode ind som den ser ud nu?
Avatar billede Slettet bruger
11. august 2010 - 23:59 #49
<?
include("config.php");

$type_get = $_GET['type'];
echo "Typen hentet fra adressen: ".$type_get."<br />";
$type_que = "SELECT * FROM type INNER JOIN main ON type.refid = main.id WHERE type.type = '$type_get'";
echo "<br />Query:".$type_que."<br /><br />";
$type_res = mysql_query($type_que);
while($type_row = mysql_fetch_assoc($type_res))
{
  echo $type_row['title']."<br />";
}
?>
Avatar billede ggxdg Nybegynder
12. august 2010 - 00:11 #50
Jeg har da aldrig haft problemer med $_GET

pff!

Det kan være du kan lave det med en dropdown menu i den side hvor du får typelisten, og så kan du måske lave det med $_POST i stedet for.

Jeg syntes godt nok jeg er lidt på bar bund mht hvorfor $_GET ikke virker...
Avatar billede Slettet bruger
12. august 2010 - 00:29 #51
God nyhed...
Fik det til at virke.

MEN.....
Jeg har fået et problem jeg har prøvet at sætte det ind hvor jeg virkelig har brug for det. Og der er Fejl på den.

Denne gang kan den slet ikke finde _GET

Er det fordi mine database nu hedder.

SS_MOVIE
s_ID
s_TYPE

SS_TYPE
s_ID
s_REFID
s_TYPE

så vil den ikke finde _GET er der en grund til det?
Avatar billede Slettet bruger
12. august 2010 - 00:32 #52
Det er sådan set ikke denne det faktisk skal være i men det er en mini udgave af den rigtige hvor databaserne næsten hedder det samme.

Prøv at lav en hurtig database som jeg viste ovenover og se om det virker.


<?
include("config.php");

$type_get = $_GET['s_TYPE'];
echo "Typen hentet fra adressen: ".$type_get."<br />";
$type_que = "SELECT * FROM SS_TYPE INNER JOIN SS_MOVIE ON SS_TYPE.s_REFID = SS_MOVIE.s_ID WHERE SS_TYPE.s_TYPE = '$type_get'";
echo "<br />Query:".$type_que."<br /><br />";
$type_res = mysql_query($type_que);
while($type_row = mysql_fetch_assoc($type_res))
{
  echo $type_row['s_TITLE']."<br />";
}
?>
Avatar billede Slettet bruger
12. august 2010 - 00:51 #53
Gad vide om det er min Host der har noget med det at gøre.
Min FTP adgang har heller ikke været helt stabil i men den har da kørt godt de sidste 1½ time.
Avatar billede Slettet bruger
12. august 2010 - 03:09 #54
Hehe... Fandt en fejl. De sidste par gange jeg smed mine fil op var den røget i forkerte mappe. Så det var derfor, at der var så store problemer tidligere.

Men bare mærkelig, at det nye jeg lavede så stadig ikke virker.
Henviser til #52
Avatar billede ggxdg Nybegynder
12. august 2010 - 08:00 #55
Hvordan ser adressen ud?

[adresse+sti+fil]?s_TYPE=1

Hvad returnerer den så?
Fanger $_GET['s_TYPE'] værdien som den skal?
Avatar billede ggxdg Nybegynder
12. august 2010 - 08:02 #56
#51
_GET har ikke noget med din database at gøre, den fanger bare variblen du sætter i adressen, så hvis den bliver fanget som den skal, så er det scriptet der skal arbejdes på.
Avatar billede Slettet bruger
12. august 2010 - 12:27 #57
Ahhhhhh.
Se jeg havde jo rettet linket på et tidspunkt. Det var jo der fejlen så lå. jeg havde kaldt den ?side=
Så det vil sige at _GET henter alt ned efter =

Super smid et svar :) og 1000, 1000 tak for tålmodigheden og hjælpen.
Avatar billede ggxdg Nybegynder
12. august 2010 - 12:59 #58
Du kan lave flere variabler i dit adressefelt,

fil.php?var1=weee&var2=84&var3=kage

$_GET['var1']
"weee"
$_GET['var2']
"84"
$_GET['var3']
"kage"
Avatar billede ggxdg Nybegynder
12. august 2010 - 13:04 #59
Men hvis du bruger $_GET og $_POST variabler til dine querys er det en god idé at lave tiltag så du forhindrer SQL-INJECTION.

Der er mange funktioner som kan bruges til at undgå injection, men hvad du selv syntes bedst om og alt efter hvor sikkert du vil have det, så må du selv lige vælge :P

http://da.wikipedia.org/wiki/SQL_injection
Avatar billede Slettet bruger
12. august 2010 - 13:15 #60
Nice... Takker. :)
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