Avatar billede sabumnim Novice
27. september 2010 - 01:04 Der er 25 kommentarer og
1 løsning

Inner Join: har lavet ged i den

Hejsan
Jeg har fået en hulens masse hjælp fra Splazz til at løse et problem med Inner Join.

Nu har jeg dog ændret lidt i noget forskelligt og derved er der opstået rod i koden og nu vises der igen ikke noget.
Jeg forsøger derfor lige at se om en af jer har mulighed for at hjælpe mig igen.

Har to visningsfiler: en galleriliste.php og en visgalleri.php.
Mit problem var at jeg skulle have kædet to tabellers output sammen til et output: http://www.eksperten.dk/spm/916605#reply_7634340

Og det lykkedes fint til sidst.

Nu er jeg desværre kommet til at gøre et eller andet og jeg kan sgu ikke få det til at virke igen efter hensigten.

Min Galleriliste.php ser sådan ud:


<?php
require_once ('../strings.php');

$foresp = mysql_query("SELECT * FROM `galleryheader` INNER JOIN `picgallery` ON galleryheader.id = picgallery.id") or die(mysql_error());   

while ($row = mysql_fetch_assoc($foresp)) {
echo "<a href=\"visgalleri.php?gh_id=".$row['id']."\" title='Se hele galleriet fra $row[overskrift]'><div class='galleriet'>";
echo "<img src='../galleries/thumbs/". $row['lillepic']."' title='" . $row['caption'] . "' />";
echo "<div class='gheader'>";

echo "<h2>".$row['overskrift'] . "</h2>";
echo "<p class='bread'>".$row['bread'] . "</p><br />";

echo "</div></div></a>";
}



?>


Og min visgalleri.php ser sådan ud:


<?php
require_once ('../strings.php');
$id = $_GET['id'];
$foresp = mysql_query("SELECT g.caption, g.lillepic, g.stortpic, h.overskrift, h.bread FROM picgallery AS g INNER JOIN galleryheader AS h ON g.gh_id=h.id WHERE h.id='$id'");
$myTest = TRUE;
while($row = mysql_fetch_assoc($foresp))

{

$id = $row['id'];
$overskrift = $row['overskrift'];
$bread = $row['bread'];
$caption = $row['caption'];
$stortpic = $row['stortpic'];
$lillepic = $row['lillepic'];
echo "<span class='pictureshow'>";
if($myTest==TRUE)
{
echo "<h1>$overskrift</h1>";
echo "<p>".nl2br($row["bread"])."</p>";
echo "<p class='educate'>Klik på billedet for at se det i stor udgave</p>";


$myTest = FALSE;
}

echo "<a href='../galleries/". $row['stortpic']."' rel=\"example2\" title='".$row['caption'] ."'><img src='../galleries/thumbs/". $row['lillepic']."' title='" . $row['caption'] . "' /></a>";

}
echo "</span>";
echo "<br /><a href='galleriliste.php' title='Tilbage til gallerilisten'>Gå tilbage til gallerilisten</a>";
?>



Problemet der opstår nu er at alle mine billeder som har gh_id 6 kommer og vises på min galleriliste, men når jeg klikker over på visgalleri.php hvor alle billederne egentlig skulle vises, ja så er der ikke noget....

Please help
//Carsten
Avatar billede majbom Novice
27. september 2010 - 01:34 #1
og id'et kommer med i din adresseline når du kommer over på visgalleri.php?
Avatar billede sabumnim Novice
27. september 2010 - 06:37 #2
Hej igen Splazz

Problemet er at hvis jeg har mit script på disse sider som der står ovenfor her, så kommer der ingen visning på siden "galleriliste.php"
Der er ingen MySql fejl eller andet, så jeg ser kun skabelonen og så er der ellers hvidt/tomt hvor der skulle have været en liste ?

Mine DB dumps ser sådan ud:



***GALLERYHEADER

CREATE TABLE `galleryheader` (
  `id` int(11) NOT NULL auto_increment,
  `overskrift` tinytext collate utf8_bin NOT NULL,
  `bread` text collate utf8_bin NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;

***PICGALLERY

CREATE TABLE `picgallery` (
  `id` int(11) NOT NULL auto_increment,
  `gh_id` int(11) NOT NULL,
  `stortpic` tinytext collate utf8_bin NOT NULL,
  `lillepic` tinytext collate utf8_bin NOT NULL,
  `caption` tinytext collate utf8_bin NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;

Avatar billede majbom Novice
27. september 2010 - 08:08 #3
hmm, som jeg forstår #0 - virker din galleriliste?
Avatar billede sabumnim Novice
27. september 2010 - 08:22 #4
...jaaaa, det gør den måske men der kommer intet ud.
Men retter jeg til her

....
$foresp = mysql_query("SELECT * FROM `galleryheader` INNER JOIN `picgallery` ON galleryheader.id = picgallery.gh_id") or die(mysql_error());   
....



Sa får jeg noget ud, men ellers ikke
Avatar billede sabumnim Novice
28. september 2010 - 19:53 #5
...er der slet ingen der har et bud på dette problem???

Jeg har alt andet klar til at launche det nye site, men mangler at få rettet op på dette problem...

Pleaz help

//Carsten
Avatar billede majbom Novice
28. september 2010 - 20:34 #6
jeg har lidt svært ved at gennemskue hvad dit problem er...

kan man se siden?
Avatar billede sabumnim Novice
28. september 2010 - 20:38 #7
Hej splazz

Jeps det kan man godt, sender dig lige en PM da jeg ikke ønsker at udbasunere det her offentligt

//Carsten
Avatar billede majbom Novice
28. september 2010 - 21:09 #8
på galleriliste.php, skal du ikke have picgallery.gh_id i stedet for picgallery.id i din query?
Avatar billede sabumnim Novice
28. september 2010 - 21:26 #9
Hej der

Nej men hvis jeg sætter den til picgallery.id i min query, så sker der det at der ikke kommer noget som helst ud.

Min galleriliste ser sådan ud og med det resultat at siden er helt tom...



<?php
require_once ('../strings.php');

$foresp = mysql_query("SELECT * FROM `galleryheader` INNER JOIN `picgallery` ON galleryheader.id = picgallery.id") or die(mysql_error());   

while ($row = mysql_fetch_assoc($foresp)) {
echo "<a href=\"visgalleri.php?gh_id=".$row['id']."\" title='Se hele galleriet fra $row[overskrift]'><div class='galleriet'>";
echo "<img src='../galleries/thumbs/". $row['lillepic']."' title='" . $row['caption'] . "' />";
echo "<div class='gheader'>";

echo "<h2>".$row['overskrift'] . "</h2>";
echo "<p class='bread'>".$row['bread'] . "</p><br />";

echo "</div></div></a>";
}



?>

Avatar billede majbom Novice
28. september 2010 - 21:28 #10
og hvad sker der hvis du retter:

$foresp = mysql_query("SELECT * FROM `galleryheader` INNER JOIN `picgallery` ON galleryheader.id = picgallery.id") or die(mysql_error());   

til

$foresp = mysql_query("SELECT * FROM `galleryheader` INNER JOIN `picgallery` ON galleryheader.id = picgallery.gh_id") or die(mysql_error());
Avatar billede sabumnim Novice
28. september 2010 - 21:36 #11
Har ændret det nu i koden og uploadet et.

Nu viser den alle billeder der er uploadet på trods af at der er 2 af billederne som tilhører samme overskrift (id).

Så alt vises og der er ingen inddeling..

Se siden
Avatar billede majbom Novice
28. september 2010 - 21:41 #12
prøv med:

$foresp = mysql_query("SELECT * FROM `galleryheader` INNER JOIN `picgallery` ON galleryheader.id = picgallery.gh_id GROUP BY picgallery.gh_id") or die(mysql_error());
Avatar billede sabumnim Novice
28. september 2010 - 21:58 #13
Hejsa igen

Nu viser den kun det antal den skal nemlig (3 pt.)

Men når jeg klikker på linket over til visgalleri.php for at se hele galleriet bliver min url nu sådan:

http://mitdomæne/visgalleri.php?gh_id=43
Avatar billede sabumnim Novice
28. september 2010 - 22:00 #14
...så selv om der er flere billeder i det valgte galleri med f.eks. id=4 så vises der ikke noget på ankomst siden..
Avatar billede majbom Novice
28. september 2010 - 22:09 #15
det er jo fordi du prøver at bruge 'id' fra url'en i stedet for 'gh_id':

$id = $_GET['id'];

rettes til:

$id = $_GET['gh_id'];
Avatar billede sabumnim Novice
28. september 2010 - 22:14 #16
men på siden "galleriliste.php" har jeg denne, er det korrekt?


...
echo "<a href=\"visgalleri.php?gh_id=".$row['id']."\" title='Se hele galleriet fra $row[overskrift]'><div class='galleriet'>";
.....


og på siden "visgalleri.php" skal jeg så rette:


$id = $_GET['id'];


til


$id = $_GET['gh_id'];


...er det korrekt ?
Avatar billede sabumnim Novice
28. september 2010 - 22:18 #17
min mysql for picgallery ser sådan ud:



CREATE TABLE `picgallery` (
  `id` int(11) NOT NULL auto_increment,
  `gh_id` int(11) NOT NULL,
  `stortpic` tinytext collate utf8_bin NOT NULL,
  `lillepic` tinytext collate utf8_bin NOT NULL,
  `caption` tinytext collate utf8_bin NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;


INSERT INTO `picgallery` VALUES (43, 6, 0x312e6a7067, 0x7468756d625f312e6a7067, 0x456e206c696c6c652062697474652074656b737420686572);
INSERT INTO `picgallery` VALUES (44, 6, 0x322e6a7067, 0x7468756d625f322e6a7067, 0x44657474652065722062696c6c656465203220736f6d207669736572206574207376696e67);
INSERT INTO `picgallery` VALUES (41, 4, 0x312e6a7067, 0x7468756d625f312e6a7067, 0x44657474652065722062696c6c6564657420616620656e206c696c6c652068657374);
INSERT INTO `picgallery` VALUES (42, 5, 0x312e6a7067, 0x7468756d625f312e6a7067, 0x43617074696f6e20616620332e6a7067);



Her ses det tydeligt at der er to entries med gh_id=6
Avatar billede majbom Novice
28. september 2010 - 22:29 #18
-> #16 - ja :)
Avatar billede sabumnim Novice
28. september 2010 - 22:34 #19
nu har jeg gjort som vi opnåede enighed om i #16.

Der vises dog stadig ikke nogle flere billeder på visgalleri.php.

Min php kode for visgalleri.php ser sådan ud:


<?php
require_once ('../strings.php');
$id = $_GET['gh_id'];
$foresp = mysql_query("SELECT g.caption, g.lillepic, g.stortpic, h.overskrift, h.bread FROM picgallery AS g INNER JOIN galleryheader AS h ON g.gh_id=h.id WHERE g.gh_id='$id'");
$myTest = TRUE;
while($row = mysql_fetch_assoc($foresp))

{

$id = $row['id'];
$overskrift = $row['overskrift'];
$bread = $row['bread'];
$caption = $row['caption'];
$stortpic = $row['stortpic'];
$lillepic = $row['lillepic'];
echo "<span class='pictureshow'>";
if($myTest==TRUE)
{
echo "<h1>$overskrift</h1>";
echo "<p>".nl2br($row["bread"])."</p>";
echo "<p class='educate'>Klik på billedet for at se det i stor udgave</p>";


$myTest = FALSE;
}

echo "<a href='../galleries/". $row['stortpic']."' rel=\"example2\" title='".$row['caption'] ."'><img src='../galleries/thumbs/". $row['lillepic']."' title='" . $row['caption'] . "' /></a>";

}
echo "</span>";
echo "<br /><a href='galleriliste.php' title='Tilbage til gallerilisten'>Gå tilbage til gallerilisten</a>";
?>


Avatar billede majbom Novice
28. september 2010 - 22:41 #20
hmm... kan du ikke prøve at smide en or die på din query dér?
Avatar billede sabumnim Novice
28. september 2010 - 22:47 #21
yes sir...
Avatar billede sabumnim Novice
28. september 2010 - 22:51 #22
nu ser koden sådan ud



<?php
require_once ('../strings.php');
$id = $_GET['gh_id'];
$foresp = mysql_query("SELECT g.caption, g.lillepic, g.stortpic, h.overskrift, h.bread FROM picgallery AS g INNER JOIN galleryheader AS h ON g.gh_id=h.id WHERE g.gh_id='$id'") or die(mysql_error());
$myTest = TRUE;
while($row = mysql_fetch_assoc($foresp))

.....



På siden visgalleri.php kommer der stadig intet billede ud...
Avatar billede majbom Novice
28. september 2010 - 23:16 #23
echo "<a href=\"visgalleri.php?gh_id=".$row['id']."\" title='Se hele galleriet fra $row[overskrift]'><div class='galleriet'>";

skal være

echo "<a href=\"visgalleri.php?gh_id=".$row['gh_id']."\" title='Se hele galleriet fra $row[overskrift]'><div class='galleriet'>";
Avatar billede sabumnim Novice
28. september 2010 - 23:26 #24
halllllleeeelujjaaaa

Det virker igen :0)

Splazz, du er igen dagens uovertrufne mand i skysovs :0)

Du er en gud blandt guder....

Kast mig et svar og du skal få dine point.

Nu lover jeg ikke at pille mere ved det her, nu skal det bare publiseres.

Endnu en gang et mega stort tak for at du igen gad at tage dig tid til at hjælpe mig igen.

//Carsten
Avatar billede majbom Novice
28. september 2010 - 23:31 #25
jamen selv tak :)
Avatar billede majbom Novice
28. september 2010 - 23:36 #26
tfp! :)
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