Avaleht
uus teema   vasta Tarkvara »  WWW »  Dropdown mitme SQL valikuga PHP-s märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 05.09.2012 09:48:44 Dropdown mitme SQL valikuga PHP-s vasta tsitaadiga

Tere, olen probleemi ees. Nimelt sooviksin teha dropdown listi, mis võtaks andmeid ühest sql tabeli 2-s lahtrist.

Hetkel on mul käigus selline kood, kuid see võtab ainult ühe välja:

php:
  1. <? $query = mysql_query("SELECT * FROM seadme_tabel"); echo "<select name='seade'>"; while ($row=mysql_fetch_array($query)) { if ($row['seade']) { echo "<option>". $row['seade'] ."</option>"; } } echo "</select>";?>

Siin on seade see väli, mida võetakse - nüüd oleks vaja sellele väärtusele kõrvale veel väärtus (seeria_number) ja justnimelt sulgudes.

Kas keegi oleks nii tore ja aitaks mind seda rida parandada nii, et dropdown nimekirjas kuvatakse seade (seeria_number) väljad icon_smile.gif


viimati muutis Raulj 05.09.2012 16:33:33, muudetud 2 korda
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 05.09.2012 09:50:41 vasta tsitaadiga

echo "<option>". $row['seade'] ."</option>";
->
echo "<option>". $row['seade'] ." (".$row['seadme_number'].")</option>";

_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 107 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 87
tagasi üles
vaata kasutaja infot saada privaatsõnum
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 05.09.2012 10:12:38 vasta tsitaadiga

Ho Ho kirjutas:
echo "<option>". $row['seade'] ."</option>";
->
echo "<option>". $row['seade'] ." (".$row['seadme_number'].")</option>";


Nii lihtne see oligi icon_smile.gif Suured tänud!

Tekkis teine küsimus. Kui ma nüüd valin oma valiku dropist välja, sisestan ning lähen muutmis lehele, kuidas saan nii teha, et muutmise lehel valitakse automaatselt see sama valik dropdownist, mille ma juba valisin - st. dropdown kuvaks sql-s oleva väärtuse dropdown valikutest?
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
infidel
HV kasutaja
infidel

liitunud: 31.01.2004



Autoriseeritud ID-kaardiga
sõnum 05.09.2012 11:33:18 vasta tsitaadiga

Et õiget valikuna näitaks, tuleb tekitada väike IF lause, mis valitud kirje puhul <option> vahele selected="true" paneks.

Kood laias laastus selline:
echo "<option";
if ($row['seade'] == $mis_iganes_muutujas_valitud_asja_tunnus_on) {
    echo " selected=\"true\" ";
}
echo ">". $row['seade'] ." (".$row['seadme_number'].")</option>";
Kommentaarid: 36 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 35
tagasi üles
vaata kasutaja infot saada privaatsõnum
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 05.09.2012 12:24:45 vasta tsitaadiga

infidel kirjutas:
Et õiget valikuna näitaks, tuleb tekitada väike IF lause, mis valitud kirje puhul <option> vahele selected="true" paneks.

Kood laias laastus selline:
echo "<option";
if ($row['seade'] == $mis_iganes_muutujas_valitud_asja_tunnus_on) {
    echo " selected=\"true\" ";
}
echo ">". $row['seade'] ." (".$row['seadme_number'].")</option>";


Miski on valesti, kuid mis? Tulemus on see, et rippmenüü on tühi. Märgiks veel ka seda, et andmeid võetakse ja salvestatakse erinevatesse tabelitesse (võetakse seadme_tabel ja salvestatakse seade_rike)

php:
  1. <? $query = mysql_query("SELECT * FROM seadme_tabel"); echo "<select name='seade_rike_seade_seeria_nr'>"; while ($row=mysql_fetch_array($query)) { if ($row['seade_rike_seade_seeria_nr']) { echo "<option>"; if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) { echo " selected=\"true\" "; } echo ">"$row['seade'] ." (".$row['seade_seeria_nr'].")</option>"; } } echo "</select>";?>
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
infidel
HV kasutaja
infidel

liitunud: 31.01.2004



Autoriseeritud ID-kaardiga
sõnum 05.09.2012 12:25:07 vasta tsitaadiga

Tegin enda jaoks veidi selgemaks:

1 <?
2 $query = mysql_query("SELECT * FROM seadme_tabel");
3 echo "<select name='seade_rike_seade_seeria_nr'>";
4 while ($row=mysql_fetch_array($query)) {
5 if ($row['seade_rike_seade_seeria_nr']) {
6 echo "<option>";
7 if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) {
8 echo " selected=\"true\" ";
9 }
10 echo ">". $row['seade'] ." (".$row['seade_seeria_nr'].")</option>";
11  }
12 }
13 echo "</select>";
14 ?>

Selge viga on selles, et reas nr 6 on option tag suletud. Tegelikult tuleks sealt lahti jätta - echo "<option"; - kuna sulgemine tuleb real 10. Lahti jätmine on selleks, et vajadusel saaks selected sinna vahele lükata.
Kommentaarid: 36 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 35
tagasi üles
vaata kasutaja infot saada privaatsõnum
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 05.09.2012 12:38:58 vasta tsitaadiga

infidel kirjutas:
Tegin enda jaoks veidi selgemaks:

1 <?
2 $query = mysql_query("SELECT * FROM seadme_tabel");
3 echo "<select name='seade_rike_seade_seeria_nr'>";
4 while ($row=mysql_fetch_array($query)) {
5 if ($row['seade_rike_seade_seeria_nr']) {
6 echo "<option>";
7 if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) {
8 echo " selected=\"true\" ";
9 }
10 echo ">". $row['seade'] ." (".$row['seade_seeria_nr'].")</option>";
11  }
12 }
13 echo "</select>";
14 ?>

Selge viga on selles, et reas nr 6 on option tag suletud. Tegelikult tuleks sealt lahti jätta - echo "<option"; - kuna sulgemine tuleb real 10. Lahti jätmine on selleks, et vajadusel saaks selected sinna vahele lükata.


Hm, miskipärast tulemus endine - list tühi icon_confused.gif
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
infidel
HV kasutaja
infidel

liitunud: 31.01.2004



Autoriseeritud ID-kaardiga
sõnum 05.09.2012 12:44:06 vasta tsitaadiga

Kas brauseris HTML koodi vaadates on andmed näha, mis seal olema peaks?
Kommentaarid: 36 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 35
tagasi üles
vaata kasutaja infot saada privaatsõnum
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 05.09.2012 12:48:25 vasta tsitaadiga

infidel kirjutas:
Kas brauseris HTML koodi vaadates on andmed näha, mis seal olema peaks?


Undefined index: seade_rike_seade_seeria_nr kuvab koodis.
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
infidel
HV kasutaja
infidel

liitunud: 31.01.2004



Autoriseeritud ID-kaardiga
sõnum 05.09.2012 13:17:08 vasta tsitaadiga

Sellisel juhul tuleb kontrollida, kas vastavanimeline muutuja üldse uuele lehele jõuab. Kas kasutusel on muidu GET või POST?
Kommentaarid: 36 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 35
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 05.09.2012 13:18:38 vasta tsitaadiga

Raulj, on selline tulp üldse SQL'is olemas?
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 05.09.2012 13:41:25 vasta tsitaadiga

infidel kirjutas:
Sellisel juhul tuleb kontrollida, kas vastavanimeline muutuja üldse uuele lehele jõuab. Kas kasutusel on muidu GET või POST?

Täpsusta, hetkel on get selleks, et id järgi vastav kirje saadaks ning post on vormil. Rippmenüül pole kumbagi, kas ja kus peaks see olema?


mikk36 kirjutas:
Raulj, on selline tulp üldse SQL'is olemas?

Täitsa olemas icon_smile.gif

Ma arvan, et viga on selles, et üks väärtus tuleb seade_tabel ja teine väärtus seade_rike. Päring on tehtud antud juhul ainult seade_tabel lahtrist aga kusagil pole päringut seade_rike. Kas ja kuidas seda teha ning kas see võib asja mõjutada?
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 05.09.2012 15:54:02 vasta tsitaadiga

Vaata tabelinimed üle, esimeses postis sul seadme_tabel, eelmises kirjutad seade_tabel
muidu peaks nii sobima.

"SELECT * FROM seadme_tabel JOIN  seade_rike"


Aga selline tabelimajandus võib sul katki minna, hetkel sa loodad lihtsalt, et mõlemas tabelis esimesel kohal on üks ja sama seade, mingit kontrolli pole, kui nüüd ühe tabeli ringi teed, on kohe vale andmed. Sul peaks olema mingi tabel seadmed ja sellel id ja teistel on veerg seadmeID kus on siis vastava seadme ID kirjas ning selle järgi otsid.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 05.09.2012 16:31:43 vasta tsitaadiga

andrusny kirjutas:
Vaata tabelinimed üle, esimeses postis sul seadme_tabel, eelmises kirjutad seade_tabel
muidu peaks nii sobima.

"SELECT * FROM seadme_tabel JOIN  seade_rike"


Aga selline tabelimajandus võib sul katki minna, hetkel sa loodad lihtsalt, et mõlemas tabelis esimesel kohal on üks ja sama seade, mingit kontrolli pole, kui nüüd ühe tabeli ringi teed, on kohe vale andmed. Sul peaks olema mingi tabel seadmed ja sellel id ja teistel on veerg seadmeID kus on siis vastava seadme ID kirjas ning selle järgi otsid.


Jah, sellest ohust olen teadlik, aga tänan, et hoiatasid. Nüüd on mul järgmine PHP rida:

php:
  1. <? $query = mysql_query("SELECT * FROM seade JOIN seade_rike"); echo "<select name='seade_rike_seade_seeria_nr'>"; while ($row=mysql_fetch_array($query)) { if ($row['seade_rike_seade_seeria_nr']) { echo "<option"; if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) { echo " selected=\"true\" "; } echo ">". $row['seade'] ." (".$row['seade_seeria_nr'].")</option>"; } } echo "</select>"; ?>

Kuid ikka on rippmenüü tühi icon_confused.gif Mis veel katki on? Lehe koodis annab veateateks Undefined variable: seade_rike_seade_seeria_nr
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 05.09.2012 16:38:29 vasta tsitaadiga

Sul pole kusagil selle muutujale väärtust antud
$seade_rike_seade_seeria_nr
seda see veateade ütlebki.

Sa pead ennem seda koodi POST abil selle muutuja väärtustama.

if(isset($_POST['seade_rike_seade_seeria_nr'])){
$seade_rike_seade_seeria_nr = $_POST['seade_rike_seade_seeria_nr'];
}else{
$seade_rike_seade_seeria_nr = 1;}


sinna else alla paned selle numbri, mida näidatakse selected siis kui midagi pole veel valitud.
Kas midagi sellist ei tööta sul? Sul polnud ju optionitel value sisse kirjutatud, ta ei saanudki midagi sul ju saata.

<?php
if(isset($_POST['seade_rike_seade_seeria_nr'])){
$seade_rike_seade_seeria_nr = $_POST['seade_rike_seade_seeria_nr'];
}else{
$seade_rike_seade_seeria_nr = 1;}

$query = mysql_query("SELECT * FROM seade JOIN seade_rike");
echo "<select name='seade_rike_seade_seeria_nr'>";
while ($row=mysql_fetch_array($query)) {
if ($row['seade_rike_seade_seeria_nr']) {
if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) { $sel = " selected=\"true\" "; }else{$sel="";}
echo '<option value="'.$row['seade_rike_seade_seeria_nr'].'" '.$sel.' >'.$row['seade'].' '.$row['seade_seeria_nr'].'</option>';
}
echo "</select>";
?>

_________________


viimati muutis andrusny 05.09.2012 16:53:02, muudetud 1 kord
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 05.09.2012 16:55:22 vasta tsitaadiga

andrusny kirjutas:
Sul pole kusagil selle muutujale väärtust antud
$seade_rike_seade_seeria_nr
seda see veateade ütlebki.

Sa pead ennem seda koodi POST abil selle muutuja väärtustama.

if(isset($_POST['seade_rike_seade_seeria_nr'])){
$seade_rike_seade_seeria_nr = $_POST['seade_rike_seade_seeria_nr'];
}else{
$seade_rike_seade_seeria_nr = 1;}


sinna else alla paned selle numbri, mida näidatakse selected siis kui midagi pole veel valitud.


Ütleks, et lahendus on väga lähedal - rippmenüüs kuvatakse küll andmeid, kuid ei valita eelnevalt valitut välja ning rippmenüüs kuvatakse samu andmeid 5 kordselt. Mis nüüd siis metsas on?

Hetkel koodid sellised:

php:
  1. if(isset($_POST['seade_rike_seade_seeria_nr'])){
  2. $seade_rike_seade_seeria_nr = $_POST['seade_rike_seade_seeria_nr'];
  3. }else{
  4. $seade_rike_seade_seeria_nr = 1;}


php:
  1. <? $query = mysql_query("SELECT * FROM seade JOIN seade_rike"); echo "<select name='seade_rike_seade_seeria_nr'>"; while ($row=mysql_fetch_array($query)) { if ($row['seade_rike_seade_seeria_nr']) { echo "<option"; if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) { echo " selected=\"true\" "; } echo ">". $row['seade'] ." (".$row['seade_seeria_nr'].")</option>"; } } echo "</select>"; ?>


Koodist nähtav valikute sektsioon on selline: <select name="seade_rike_seade_seeria_nr" value=<select name='seade_rike_seade_seeria_nr'><option>Häirenupp (423423424)</option><option>GSM keskus (24234234)</option><option>Suitsuandur (2424243)</option><option>Häirenupp (423423424)</option><option>GSM keskus (24234234)</option><option>Suitsuandur (2424243)</option><option>Häirenupp (423423424)</option><option>GSM keskus (24234234)</option><option>Suitsuandur (2424243)</option><option>Häirenupp (423423424)</option><option>GSM keskus (24234234)</option><option>Suitsuandur (2424243)</option><option>Häirenupp (423423424)</option><option>GSM keskus (24234234)</option><option>Suitsuandur (2424243)</option></select></select>
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 05.09.2012 18:47:24 vasta tsitaadiga

Loe mu eelmise postituse lõppu, mis uuendasin ainu postituse ajal. Viga siis selles, et sul puudub ju option value.

See, et kõiki 5x tuleb on päringu viga, ma andsin ennist veidi vale päringu, tuleb vaadata, et id oleksid sama mõlemas tabelis.

SELECT * FROM seade JOIN seade_rike WHERE seade.id = seade_rike.id

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 05.09.2012 19:44:28 vasta tsitaadiga

JOIN süntaksi võiks paremini ära kasutada.

SELECT * FROM seade JOIN seade_rike ON seade.id = seade_rike.id
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 06.09.2012 10:06:11 vasta tsitaadiga

mikk36 kirjutas:
JOIN süntaksi võiks paremini ära kasutada.

SELECT * FROM seade JOIN seade_rike ON seade.id = seade_rike.id

Nüüd on mu kood selline:
php:
  1. <? $query = mysql_query("SELECT * FROM seade JOIN seade_rike WHERE seade.id = seade_rike.id"); echo "<select name='seade_rike_seade_seeria_nr'>"; while ($row=mysql_fetch_array($query)) { if ($row['seade_rike_seade_seeria_nr']) { echo "<option"; if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) { echo " selected=\"true\" "; } echo ">". $row['seade'] ." (".$row['seade_seeria_nr'].")</option>"; } } echo "</select>"; ?>
  2.  
Kuid tulemuseks on, et rippmenüüs kuvatakse 2 valikut (kuigi neid peaks olema rohkem) ning õigetki ei valita. Ei taipa ma mis veel puudu on icon_sad.gif Hjälp...

andrusny kirjutas:
Loe mu eelmise postituse lõppu, mis uuendasin ainu postituse ajal. Viga siis selles, et sul puudub ju option value.

See, et kõiki 5x tuleb on päringu viga, ma andsin ennist veidi vale päringu, tuleb vaadata, et id oleksid sama mõlemas tabelis.

SELECT * FROM seade JOIN seade_rike WHERE seade.id = seade_rike.id


ID-d võivad tabelites olla küll samad, kuid nende väärtused on kindlasti ju erinevad - ma arvan, et neid ei saagi võrrelda, või mis?
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk150
HV kasutaja

liitunud: 04.05.2006



Autoriseeritud ID-kaardiga
sõnum 06.09.2012 10:22:53 vasta tsitaadiga

seade rike tabelis peaks olema seadme ID kajastatud.. Rikke ID st on natuke vähe kasu

sql:
  1. SELECT * FROM seade LEFT JOIN seade_rike ON seade.id = seade_rike.seadme_id


ehk siis midagi sellist
php:
  1. <?php
  2. $query = mysql_query('SELECT * FROM seade LEFT JOIN seade_rike ON seade.id = seade_rike.seadme_id');
  3. ?>
  4. <select name="seade_rike_seade_seeria_nr">
  5. <?php
  6. while ($row=mysql_fetch_assoc($query)) { //mysql_fetch_assoc on natuke kiirem kui mysql_fetch_array, kuna annab vähem andmeid tagasi(array annab igat väärtust 2*, mis on veits mõttetu)
  7.         ?>
  8.         <option<?php echo($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr)?' selected="selected"' :'';
  9.         ?>><?php echo $row['seade'];
  10.         ?>(<?php echo $row['seade_seeria_nr']; ?>)</option>
  11. }
  12. ?>
  13. </select>


viimati muutis mikk150 06.09.2012 11:00:12, muudetud 5 korda
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 06.09.2012 10:25:18 vasta tsitaadiga

mikk150 kirjutas:
seade rike tabelis peaks olema seadme ID kajastatud.. Rikke ID st on natuke vähe kasu

SELECT * FROM seade LEFT JOIN seade_rike ON seade.id = seade_rike.seadme_id


Tulemus see, et valikukast on tühi.
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk150
HV kasutaja

liitunud: 04.05.2006



Autoriseeritud ID-kaardiga
sõnum 06.09.2012 10:42:40 vasta tsitaadiga

Raulj kirjutas:
mikk150 kirjutas:
seade rike tabelis peaks olema seadme ID kajastatud.. Rikke ID st on natuke vähe kasu

SELECT * FROM seade LEFT JOIN seade_rike ON seade.id = seade_rike.seadme_id


Tulemus see, et valikukast on tühi.

ilmselt puudub sul seade_rike tabelis seadme_id veerg... tee juurde, seo need tabelid omavahel ära

edit:// see kontroll võib ka vabalt nahka teha. korja see ära... eelmises postituses vähe parem kood sulle ka pandud

mul on üks küsimus ka, kas dropdown peaks kuvama kõik katkised seadmed, ja nende serialid või kõik seadmed ja mis katki?? sellest oleneb ka päringu suund...
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 06.09.2012 11:08:10 vasta tsitaadiga

Põhimure siis selles, et sul pole korralikku andmemudelit isegi hetkel ja sa ei tea mida ja kuidas andmebaasist pärida.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 06.09.2012 12:07:32 vasta tsitaadiga

mikk150 kirjutas:
Raulj kirjutas:
mikk150 kirjutas:
seade rike tabelis peaks olema seadme ID kajastatud.. Rikke ID st on natuke vähe kasu

SELECT * FROM seade LEFT JOIN seade_rike ON seade.id = seade_rike.seadme_id


Tulemus see, et valikukast on tühi.

ilmselt puudub sul seade_rike tabelis seadme_id veerg... tee juurde, seo need tabelid omavahel ära

edit:// see kontroll võib ka vabalt nahka teha. korja see ära... eelmises postituses vähe parem kood sulle ka pandud

mul on üks küsimus ka, kas dropdown peaks kuvama kõik katkised seadmed, ja nende serialid või kõik seadmed ja mis katki?? sellest oleneb ka päringu suund...


Tegin tabeleid nüüd vähe ringi ja panin ühte tabelisse. Seega nüüd kahe tabeli asemel võetakse väärtus ühest tabelist. Aga oleks ikkagi vaja nii, et rippmenüü valib nimekirjast juba valitud nimekirja. Hetkel kood selline, millega on rippmenüü tühi:

php:
  1. <? $query = mysql_query("SELECT * FROM seade_rike"); echo "<select name='seade_rike_seade_seeria_nr'>"; while ($row=mysql_fetch_array($query)) { if ($row['seade_rike_seade_seeria_nr']) { echo "<option"; if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) { echo " selected=\"true\" "; } echo ">". $row['seade_rike_seade_seeria_nr'] ." (".$row['seade_seeria_nr'].")</option>"; } } echo "</select>"; ?>
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 06.09.2012 12:32:45 vasta tsitaadiga

Kui sa nüüd läksid ühe tabeli peale, siis päringu pead tegema sellise, et ei käiks kogu tabelit läbi. Eeldan, et kõik seadmed pole rikkis pidevalt, siis paned rikke _nr =0 ja otsid ainult neid ridu, kus see pole 0

SELECT * FROM seade_rike WHERE seade_rike_seade_seeria_nr > 0


koodi ära pane segiläbi väljatrükki ja if lauseid, pane üks rida väljatrükki ja ifid lahenda ennem ära.
PHP algus kirjuta kood php ga, sest mõned serverid ei toeta ainult <? algust.

<?php
$query = mysql_query("SELECT * FROM seade_rike WHERE seade_rike_seade_seeria_nr > 0");

echo "<select name='seade_rike_seade_seeria_nr'>";

while ($row=mysql_fetch_array($query)) {
if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) {$sel ='selected';}else{$sel ='';}
echo '<option value="'.$row['seade_rike_seade_seeria_nr'].'" '.$sel.'> '.$row['seade_rike_seade_seeria_nr'].' ('.$row['seade_seeria_nr'].') </option>';
}
echo "</select>";
  ?>


sa tahad kangekaelselt value väljast loobuda.

option vorming on selline ja selected ei ole mingi true seal.

<option value="wefwefwef" selected> tere </option>

_________________


viimati muutis andrusny 06.09.2012 12:35:32, muudetud 1 kord
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 06.09.2012 12:35:43 vasta tsitaadiga

Väga piinlik, et vahepeal läks keerukaks, kuid nüüd on nii, et tabelist seade_rike lahtrist seade_rike_seade_seeria_nr võetakse siis dropi väärtus ning olekski vaja lihtsalt, et valitud väärtus dropist välja valitakse. Kuidas see peaks välja nägema?
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 06.09.2012 12:50:54 vasta tsitaadiga

Väga lihtsustatud drop valiku näide, pane käima ja saad aru kuidas toimib.

<?php
$sel = Array();
if(isset($_POST['valik'])){$sel[$_POST['valik']]='selected';}
echo'
<form action="?" method="post">
<select name="valik">
   <option value="1" '.$sel[1].'> V1</option>
   <option value="2" '.$sel[2].'> V2 </option>
   <option value="3" '.$sel[3].'> V3</option>
</select>
';
?>
<input type="submit" value="saada">

</form>


või siis koos tsükliga

<?php
$sel = Array();
if(isset($_POST['valik'])){$sel[$_POST['valik']]='selected';}
echo'
<form action="?" method="post">
<select name="valik">';
for($i=1;$i<10;$i++){
echo '<option value="'.$i.'" '.$sel[$i].'> V'.$i.'</option>';
}
echo'   
</select>
';
?>
<input type="submit" value="saada">

</form>

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Raulj
Kreisi kasutaja
Raulj

liitunud: 27.01.2002




sõnum 06.09.2012 13:51:08 vasta tsitaadiga

andrusny kirjutas:
Väga lihtsustatud drop valiku näide, pane käima ja saad aru kuidas toimib.

<?php
$sel = Array();
if(isset($_POST['valik'])){$sel[$_POST['valik']]='selected';}
echo'
<form action="?" method="post">
<select name="valik">
   <option value="1" '.$sel[1].'> V1</option>
   <option value="2" '.$sel[2].'> V2 </option>
   <option value="3" '.$sel[3].'> V3</option>
</select>
';
?>
<input type="submit" value="saada">

</form>


või siis koos tsükliga

<?php
$sel = Array();
if(isset($_POST['valik'])){$sel[$_POST['valik']]='selected';}
echo'
<form action="?" method="post">
<select name="valik">';
for($i=1;$i<10;$i++){
echo '<option value="'.$i.'" '.$sel[$i].'> V'.$i.'</option>';
}
echo'   
</select>
';
?>
<input type="submit" value="saada">

</form>


Kumbki neist ei toimi ju minu puhul sest soovides muuta seade_rike_seade_seeria_nr lahtri väärtust (mis muutmise lehel rippmenüüst üles otsitakse) või seade_rike_seade_seeria_nr lahtrisse vahepeal tulla ports uusi väärtusi (lisatakse teiselt lehelt), mida rippmenüü peaks ka kuvama (ning nende seest juba olemasoleva valiku valima. Või ma eksin? Üsna segaseks on asi juba läinud icon_smile.gif
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 06.09.2012 17:01:21 vasta tsitaadiga

Jah kahjuks ei ole need valmis koodid sinu jaoks, on vaid näide kuidas asi töötab ja sa pead ise oma andmed sisse sinna panema.Mulle lihtsalt tundus, et sa ei tea formist ja selle elementidest midagi ja tegin sulle näidis koodi.

For tsüklit sul ei tule, sul on selle asemel while tsükkel, pead sinna counteri lisama, et seda varianti kasutada, või siis kasutad oma varianti võrdled saadetud väärtust, kuid siis pead value sisse ikkagi väärtuse panema. Sa pead vist ikkagi values hoidma mingit tabeöo väärtust, sest sa ei taha ju ainult droop menyyd tööle saada, sul on selle menüüga vast vaja midagi teha ka.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk150
HV kasutaja

liitunud: 04.05.2006



Autoriseeritud ID-kaardiga
sõnum 06.09.2012 17:37:45 vasta tsitaadiga

andrusny kirjutas:
Kui sa nüüd läksid ühe tabeli peale, siis päringu pead tegema sellise, et ei käiks kogu tabelit läbi. Eeldan, et kõik seadmed pole rikkis pidevalt, siis paned rikke _nr =0 ja otsid ainult neid ridu, kus see pole 0

SELECT * FROM seade_rike WHERE seade_rike_seade_seeria_nr > 0


koodi ära pane segiläbi väljatrükki ja if lauseid, pane üks rida väljatrükki ja ifid lahenda ennem ära.
PHP algus kirjuta kood php ga, sest mõned serverid ei toeta ainult <? algust.

<?php
$query = mysql_query("SELECT * FROM seade_rike WHERE seade_rike_seade_seeria_nr > 0");

echo "<select name='seade_rike_seade_seeria_nr'>";

while ($row=mysql_fetch_array($query)) {
if ($row['seade_rike_seade_seeria_nr'] == $seade_rike_seade_seeria_nr) {$sel ='selected';}else{$sel ='';}
echo '<option value="'.$row['seade_rike_seade_seeria_nr'].'" '.$sel.'> '.$row['seade_rike_seade_seeria_nr'].' ('.$row['seade_seeria_nr'].') </option>';
}
echo "</select>";
  ?>


sa tahad kangekaelselt value väljast loobuda.

option vorming on selline ja selected ei ole mingi true seal.

<option value="wefwefwef" selected> tere </option>


Kui mina oleksin brauser, siis ma karjuks selle koodi peale... selected attribuut tahab endale alati väärtust selected... pange see endale kõrva taha...
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga
sõnum 06.09.2012 22:51:36 vasta tsitaadiga

HTML4 lubab mõlemat varianti http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2,samuti ei hakka browserid kummagi kirjapildi peale karjuma.
Kommentaarid: 78 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
Renka
HV Guru
Renka

liitunud: 01.04.2002



Autoriseeritud ID-kaardiga
sõnum 06.09.2012 22:55:07 vasta tsitaadiga

napoleon kirjutas:
HTML4 lubab mõlemat varianti http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2,samuti ei hakka browserid kummagi kirjapildi peale karjuma.
Samamoodi lubab ka HTML 5 mõlemat varianti.

XHTML tahtis key->value paari ainsana saada.

http://www.w3schools.com/html5/att_option_selected.asp kirjutas:
Note: The selected attribute is a boolean attribute, and can be set in the following ways:
<option selected>
<option selected="selected">
<option selected="">

_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 07.09.2012 13:56:52 vasta tsitaadiga

Renka, parem viidata ametlikule spetsifikatsioonile, on esinenud kohati, et w3schools on valeinfot jaganud.

http://www.w3.org/TR/html-markup/option.html
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  Dropdown mitme SQL valikuga PHP-s
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.