» »

msysql izpis iz dveh querijev

msysql izpis iz dveh querijev

cobrica ::

Mi zna mogoče kdo pomagat, iz baze pages izpišem strani in če je id pages enak id_pages v menu, bo v seznamu oznacilo selected, da je meni izbran. Trenutna koda je spodaj, vendar ne deluje prav..

$baza = mysql_query("SELECT * FROM pages");
while ($izpis = mysql_fetch_array($baza)) {
echo $izpis['id'].'<br>';
	$baza1 = mysql_query("SELECT * FROM menu_primary");
	while ($izpis1 = mysql_fetch_array($baza1)) {
		if($izpis['id'] == $izpis1['page_id']){ $selected = "selected"; }
	}
}

kivi113 ::

Ne vem, če je to to, kar si ti želel:

$baza = mysql_query("SELECT * FROM pages");
while ($izpis = mysql_fetch_array($baza)) {
    
    $baza1 = mysql_query("SELECT * FROM menu_primary WHERE page_id='" . $izpis['id'] . "'");
    
    $selected = "";
    if (mysql_num_rows($baza1) > 0) $selected = "selected";
    

    echo $izpis['id'].' '. $selected . '<br>';

}


Ta koda preveri, če je v bazi menu_primary kakšen record z page_id = id (iz tabele pages), in če je (se pravi če je num rows > 0), doloci spremenljivki $selected vrednost "selected". Pred vsakim testiranjem se sicer spremenlivki $selected vrednost resetira na "", kar si ti v svojem primeru pozabil.

Če to ni rešitev tvoje težave, prosim, če lahko bolj podrobno napišeš, kaj bi želel, predvsem pa, ali hočeš samo primerjati, če vrednost obstaja v obeh tabelah, ali bi ti rad samo "selectal" vrednost, ki si sicer dobil preko $_REQUEST.

DSmidgy ::

To ni performančno optimalno, predvsem v primeru, ko imaš veliko strani. Poizvedba je lahko samo ena:
SELECT p.id, mp.page_id
FROM pages p
left join menu_primary mp on mp.page_id = p.id

V eni "while" zanki izpisuješ "id", v kolikor pa je neprazen (!= null) še "page_id" pa izpišeš "selected".

cobrica ::

kivi113 je izjavil:

Ne vem, če je to to, kar si ti želel:

$baza = mysql_query("SELECT * FROM pages");
while ($izpis = mysql_fetch_array($baza)) {

$baza1 = mysql_query("SELECT * FROM menu_primary WHERE page_id='" . $izpis['id'] . "'");

$selected = "";
if (mysql_num_rows($baza1) > 0) $selected = "selected";


echo $izpis['id'].' '. $selected . '<br>';

}


Ta koda preveri, če je v bazi menu_primary kakšen record z page_id = id (iz tabele pages), in če je (se pravi če je num rows > 0), doloci spremenljivki $selected vrednost "selected". Pred vsakim testiranjem se sicer spremenlivki $selected vrednost resetira na "", kar si ti v svojem primeru pozabil.

Če to ni rešitev tvoje težave, prosim, če lahko bolj podrobno napišeš, kaj bi želel, predvsem pa, ali hočeš samo primerjati, če vrednost obstaja v obeh tabelah, ali bi ti rad samo "selectal" vrednost, ki si sicer dobil preko $_REQUEST.


kivi113 hvala točno to sem rabil!

Spura ::

DSmidgy je izjavil:

To ni performančno optimalno, predvsem v primeru, ko imaš veliko strani. Poizvedba je lahko samo ena:

SELECT p.id, mp.page_id
FROM pages p
left join menu_primary mp on mp.page_id = p.id

V eni "while" zanki izpisuješ "id", v kolikor pa je neprazen (!= null) še "page_id" pa izpišeš "selected".

Tocno to. Poleg tega jst nikjer nimam "SELECT *".


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[php] preverjanje online uporabnikov

Oddelek: Programiranje
261915 (1571) cobrica
»

php & mysql iskanje po podatkovni bazi

Oddelek: Programiranje
141067 (777) RockyS
»

unset cookie

Oddelek: Izdelava spletišč
221770 (1577) tomitza
»

Kaj je narobe tu...(php)

Oddelek: Programiranje
51122 (1020) teac
»

Zakaj? (php & mySQL)

Oddelek: Programiranje
51119 (1046) darh

Več podobnih tem