hjælp til mysql

Tags:    php

<< < 12 > >>
historien er´...

jeg har et table med mine menulinks for navigering, den indeholder:

ID
PARENT_ID (reference til overstående ID)
TEXT
LINK

eks.

ID=0--- PARENT_ID=0 --- TEXT=start --- LINK=/
ID=1--- PARENT_ID=0 --- TEXT=link1 --- LINK=link1.php
ID=2--- PARENT_ID=1 --- TEXT=link2 --- LINK=link2.php
ID=3--- PARENT_ID=1 --- TEXT=link3 --- LINK=link3.php
ID=4--- PARENT_ID=0 --- TEXT=link4 --- LINK=link4.php
ID=5--- PARENT_ID=2 --- TEXT=link5 --- LINK=link5.php
ID=1--- PARENT_ID=2 --- TEXT=link6 --- LINK=link6.php

Jeg ønsker at hente al informationen på en gang og derefter dele den sådan her:

LINK1 (første link)
link2 (første link med parent-ID til link1)
link3 (anden link med parent-ID til link1)

LINK4 (anden link)
link5 (første link med parent-ID til link4)
link6 (anden link med parent-ID til link4)

Hvordan gør jeg det - hvordan gemmer jeg det i et array, så jeg kan echo det ud med loops for html output?



11 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato


først søger du på alle hovedlinks, dvs. parentid = 0, når du så kører igennem denne, så laver du en ny forespørgsel, denne gang med parentid = id og udskriver!

Casper
Casper


Du tænker på noget lign:

$countSQL = "select ID from tabel";

for($i = 0; $i <= count($countSQL); $i++) {
$sql = "select * from tabel where ID = '$i'";

}

og så videre?
eller måske bare $count[0] i stedet for count($countSQL)

EDIT:

Eller måske således:

while($row = mysql_fetch_array($countSQL) {
$result = mysql_result("select * where parant_link = '$row[0]'");
echo "<td>";
echo $result[0];
echo "</td>";
}

hmm? Det ender med jeg må lave det selv, for det er da lidt interessant.


[Redigeret d. 12/10-04 00:54:06 af Michael Bjerregaard]

[Redigeret d. 12/10-04 00:54:52 af Michael Bjerregaard]




Hvordan gør jeg det - hvordan gemmer jeg det i et array, så jeg kan echo det ud med loops for html output?


$result = mysql_query("SELECT * FROM tabel ORDER BY ID DESC, PARENT_ID DESC")

While ($row = mysql_fetch_array($result)) {
echo "<td>"
echo $row["ID"];
echo $row["PARENT_ID"];
echo "</td>";
}

Eller noget i den retning.

[Redigeret d. 11/10-04 20:40:09 af Michael Bjerregaard]



det er absolut en god start, men...

hva' nu hvis der er:

1 hoved link
1 sub link
1 sub link
1 sub link
1 sub link

1 hoved link
1 sub link

1 hoved link
1 sub link
1 sub link
1 sub link

1 hoved link
-ingen sublink...

altså, nogle gange er der 0 - 10 sublinks til 1 hoved link!



det er absolut en god start, men...

hva' nu hvis der er:

1 hoved link
1 sub link
1 sub link
1 sub link
1 sub link

1 hoved link
1 sub link

1 hoved link
1 sub link
1 sub link
1 sub link

1 hoved link
-ingen sublink...

altså, nogle gange er der 0 - 10 sublinks til 1 hoved link!


først søger du på alle hovedlinks, dvs. parentid = 0, når du så kører igennem denne, så laver du en ny forespørgsel, denne gang med parentid = id og udskriver!

Casper
Casper



Nå, jeg måtte weekend på det her!

her er løsningen til mit spørgsmål(!)



-----------------------------------------------
$db_conn = mysql_pconnect($hostname, $user, $password); mysql_select_db($database, $db_conn);
$query = "SELECT id, parent_id, name, FROM 2have_menu ORDER by id";
$result = mysql_query($query, $db_conn) or die(mysql_error());
$num_results = mysql_num_rows($result); //return the number of records (rows) returned from the SELECT query.

//creating the array
for ($i=0; $i < $num_results; $i++){
$row = mysql_fetch_array($result); //grab the next row from the query result, and return it as an associative array

//links
if ($row["parent_id"] == 0){
$menu[$row["id"]][$row["parent_id"]] = $row["name"]; //eks. $menu[1] = nyheder
}
//sublinks
else {
$menu[$row["parent_id"]][$row["id"]] = $row["name"]; //eks. $menu[1][2] = nyheder/oversigt
$count_sublinks = $row["id"]; // last id = highest number!
}

}

//$i first number in array
//$q second number in array
//$x id of div
$x=0;
echo "<div id='divCont'>";
for ($i=0; $i < $count_sublinks * 2; $i++){
if (isset($menu[$i][0])){
echo "<div id='divTop".$x."' class='clTop'><a href='#' onclick='menu(".$x."); return false' onfocus='this.blur()'><img src='pic/foldoutmenu_arrow.gif' name='imgA".$x."' width='12' height='12' alt='' border='0'>";
echo $menu[$i][0]."</a><br>";
echo "<div id='divSub".$x."' class='clSub'>";
for ($q=1; $q < $count_sublinks; $q++){
if (isset($menu[$i][$q])){
echo "<a href='#'>".$menu[$i][$q]."</a><br>";
}
}
echo "</div>";
echo "</div>";
$x++;
}
}
echo "</div>";




Hvis du selv har fundet løsningen bør du lukke tråden ved at give dig selv point.



Hvis du selv har fundet løsningen bør du lukke tråden ved at give dig selv point.


Det kan jeg ikke... Det virker ikke???



Da du ikke har skrevet et "Svar" kan du ikke.



Da du ikke har skrevet et "Svar" kan du ikke.

sådan her?



nej

-----------------------
Vis Udvikler profil for Bocaj
Bocaj

04-11-04 09:36
Kommentar
Vis Udvikler profil for Bocaj Send en direkte besked til Bocaj Besvar dette indlæg
---------------------

Svar, med mulighed for point



<< < 12 > >>
t