Jump to content
php.lv forumi

Ieviesusies kļūda nolasot <select> tagu


CrossUp

Recommended Posts

Esmu izveidojis formu, kurā jāizvēlas opcija no <select> formas. Vērtības tiek ņemtas no datubāzes, un tiek padotas uz kontrolieri, izmantojot $this->input->post(); funkciju.

Mans kods:

<div class="row-fluid">
                <ul class="thumbnails">
                    <?php if(count($galleries) >= 1): ?>                      
                        <?php foreach($galleries as $gallery): ?>
                            <?php $length = mb_strlen($gallery->title, "UTF-8"); ?>             
                            <?php $options[] = str_split_unicode($gallery->title, $length, $length); ?>
                        <?php endforeach; ?>
                    <?php endif; ?>
                    <?php if(isset($project_images) && count($project_images)): ?>
                    <?php foreach($project_images as $image): ?>   
                        <li class="span2">
                        <a class="thumbnail" href="<?php echo $image->url; ?>" data-lightbox="<?php echo $image->lightbox; ?>" title="<?php echo $image->title; ?>">
                        <img src="<?php echo $image->thumb_url; ?>" width="160" height="120"/>
                        </a>        
                        
                        <?php echo form_open_multipart();?>
                        
                        <?php if(isset($image->lightbox)): ?>
                        <?php $value = str_split_unicode($image->lightbox, mb_strlen($image->lightbox, "UTF-8"), mb_strlen($image->lightbox, "UTF-8")); ?>
                        <?php else: $value = array(); ?>
                            <?php endif; ?>
                        <?php echo form_dropdown('light[]', $options, $value, 'class="btn-small dropdown-toggle" 
                            data-toggle="dropdown"'); ?>
  
                        </br>
                        <?php $title_data = array(
                            'name' => 'title[]',
                            'value' => set_value('title', $image->title),
                            'class' => 'input-small', 
                            'placeholder' => 'Nosaukums'
                            ); ?>
                        <?php echo form_input($title_data); ?>
                        <?php 
                        echo anchor('admin/pictures/delete/' . $image->id, 'Dzēst', array(
                            'onclick' => "return confirm('Tiešām vēlies dzēst attēlu?');"
                             )); ?><?php echo btn_trash('admin/pictures/delete/' . $image->id); ?>
                        </li>
                    <?php endforeach; ?>
                    <?php endif; ?>  
                    
                </ul> 
            </div>
   
            <tr>
                <td>
                    <?php echo form_submit('save', 'Saglabāt', 'class="btn btn-primary"'); ?>
                    <?php form_close(); ?>
                </td>
            </tr>

Attiecīgās vērtības tiek attēlotas kā pienākas, tikai atgriež visur vērtību 0, parastā form_input() funkcija atgriež ievadītās vērtības. Ja ir iespējams izveidot savādāku dropdown menu, kur būtu iespēja izvēlēties vērtību, piemēram ar <ul> un <li> tagiem veidotu lūdzu padodiet man kādu informāciju par to, vēlos palasīt iespējas.

Link to comment
Share on other sites

Virsrakstā tu piemini <select> tagu, taču kodā to neredzu, ka ar to kaut ko darītu...

 

Varbūt tu saki, ka gribi veidot custom izskata dropdown menu ? Ir gatavi jquery risinājumi tam, google: jquery custom select

 

Biju mēģinājis arī visu rakstīt ar <select> un <options> tagiem, rezultāts bija 0 vērtību vietā nekāda vērtība, jeb ' '. Šodien skatoties tevis iedotos paraugu variantus sapratu kāpēc tā. Pie <options> taga nevajag aizpildīt value=" " vērtību. Īsti nezinu kāpēc tā, bet man jau tagad šķiet, ka būs problēma ar pēcapstrādi, proti, brīdī kad tiks izvēlēta opcija iekš <options> taga un nospiests 'save' informācju saglabās DB. Nākamreiz, kad atvērs šo lapu tiem diviem būtu jāsakārtojas pēc izvēlēto opciju nosaukumiem augošā secībā un default vērtībai tad jābūt nevis no visa lielā saraksta pirmajai (kā tas ir šobrīd), bet gan jau tai izvēlētajai vērtībai.

Edited by CrossUp
Link to comment
Share on other sites

Ir izdevies visu vajadzīgo informāciju iegūt, apstrādāt un saglabāt DB. Problēma arī uzpeldēja tieši kā biju paredzējis. Select tagā nerādās tā vērtība kuru esmu saglabajis DB, bet gan sākot ar latviešu alfabēta mazāko burtu (a = 1, ž =33). Kārtošana un lauka pareizā vērtības attēlošana ir ļoti svarīga projekta sastāvdaļa. Ideja kā šo varētu labot būtu sadalīt pa uzskatāmām <tr><td> daļām tos nosaukumus alfabēta secībā un tad var palikt sākotnējā vērtība kāda ir, ieguvums būs vizuāli uzskatāms un nepārprotams sadalījums. Ja man tas izdosies un kāds gribēs redzēt rezultātu ierakstīšu.

Link to comment
Share on other sites

Neviens to sviestu negribēs, tu tur kaut kādu drūmo sviestu tagad grūd.

Tu vēl joprojām neesi pateicis, kur un kā tu to selektu nolasi un kāds vispār ir HTML output, jo no tām funkcijām neko nevar saprast.

Cik var saprast no to funkciju izvietojuma, HTML struktūra tev ir pilnīgā pakaļā, ko EdgarsK jau pieminēja.

Link to comment
Share on other sites

Neviens to sviestu negribēs, tu tur kaut kādu drūmo sviestu tagad grūd.

Tu vēl joprojām neesi pateicis, kur un kā tu to selektu nolasi un kāds vispār ir HTML output, jo no tām funkcijām neko nevar saprast.

Cik var saprast no to funkciju izvietojuma, HTML struktūra tev ir pilnīgā pakaļā, ko EdgarsK jau pieminēja.

 

Selektu nolasu šādi:

if($this->input->post('save')){
$data = $this->input->post('save');
$lightbox = $data['lightbox'];
$title = $data['title'];

Tiek atgriesti 2 masīvi ar izvēlēto select taga option vērtību un ierakstīto title vērtību. Mana kļūda pirms tam bija pie <option> taga, es tam norādīju vērtību <option value="vērtība"> tāpēc man atgrieza 0 vai ' '.

Man tas kods patiesībā ir gaužām vienkāršs. Pirmajā if pārbaudē pārbauda vai ir kāds galerijas ieraksts DB, lai tālāk (pagaidām nav izdarīts) vizuāli atdalītu galerijas vienu no otras un foreach ciklā no std objekta iegūstu vērtības masīvā str_split_unicode funkciju pats sarakstīju, lai iegūtu UTF-8 vērtības iekšā tā selekta (es nezinu kāds ir default un vai pietiek ar <meta> noteikto). Nākamajā, jeb otrajā, jeb pēdējā if pārbaudē skatās vai projektam ir kaut 1 iesūtīta bilde, ja ir tad izveido smukus div'us ar bildes thumb'u, to select'u un 1 teksta input lauku.

Tiem, kas nezina, tad, piemēram, $image->thumb_url; nozīmē $vienuma_vērtība->attiecīgā_vērtība_DB, jo šādi es iegūsti maksimāli dinamisku html attēlojumu (vismaz man šķiet, ka 'drūmais sviests' ir dinamiska lapa.

Par to formu. Es viņu atveru 'viducī', jo neuzskatu par vajadzīgo arī to bildi ietvert formā. Tur domāts pa lielam tikai tas select's un 1 input's, aizveru viņu pašā apakšā tikai dēļ tā pogas novietojuma. Tā kā struktūra, manuprāt ir secīgi

'Ja ir kāda galerija, dalām itemus galerijās, ja nav tad atstājam nesakārtotu

-> attēlojam bildes

-> atveram input formu

-> pievienojam galerijas select'u

-> pievienojam teksta input'u

-> aizsūtam formu uz kontrolieri

-> aizveram formu

Doma ir imitēt CI image crud, tikai uz php bāzētu.

post-10130-0-33983600-1398331333_thumb.jpg

Edited by CrossUp
Link to comment
Share on other sites

Vai tu kaut ko zini par pareizu HTML struktūru? Tu nevari atvērt formu table>tr>td un aizvērt 3 rowus zemāk, tas ir invalid DOM. Formai jābūt atvērtai UN aizvērtai vai nu vienā un tajā pašā tr>td, vai vispār ārpus tabulas.

Atver savai lapai view page source pārlūkā un paskaties, kādu struktūru tu reāli izvadi.

Pie reizes iemet http://validator.w3.org/, paskaties, kas vēl tev tur nav kārtībā.

 

Starp citu, kas tā mūsdienās par modi baidīties no $_GET/$_POST?

Link to comment
Share on other sites

Biju mēģinājis arī visu rakstīt ar <select> un <options> tagiem, rezultāts bija 0 vērtību vietā nekāda vērtība, jeb ' '. Šodien skatoties tevis iedotos paraugu variantus sapratu kāpēc tā. Pie <options> taga nevajag aizpildīt value=" " vērtību. Īsti nezinu kāpēc tā, bet man jau tagad šķiet, ka būs problēma ar pēcapstrādi, proti, brīdī kad tiks izvēlēta opcija iekš <options> taga un nospiests 'save' informācju saglabās DB. Nākamreiz, kad atvērs šo lapu tiem diviem būtu jāsakārtojas pēc izvēlēto opciju nosaukumiem augošā secībā un default vērtībai tad jābūt nevis no visa lielā saraksta pirmajai (kā tas ir šobrīd), bet gan jau tai izvēlētajai vērtībai.

Nu Tev vienkārši ieselektētajam option tagam ir jāiedod atribūts selected="selected" , tas ir vienīgais veselīgais veids, kā to darīt.

 

Pārējo jau sarakstīja citi biedri, bet pamēģini varbūt arī izmantot php short tagus templeitiem, citadi tie daudzie <?php izskatās pēc izvarošanas scēnas. Un <?php echo 'some' ?> vietā var izmantot <?='some' ?> Ja nemaldos, short tagi ies defaultā kaut kādā no jaunajām php versijām, nevis būs atkarīgi no ini settinga.

Edited by gurkjis
Link to comment
Share on other sites

Vai tu kaut ko zini par pareizu HTML struktūru? Tu nevari atvērt formu table>tr>td un aizvērt 3 rowus zemāk, tas ir invalid DOM. Formai jābūt atvērtai UN aizvērtai vai nu vienā un tajā pašā tr>td, vai vispār ārpus tabulas.

Atver savai lapai view page source pārlūkā un paskaties, kādu struktūru tu reāli izvadi.

Pie reizes iemet http://validator.w3.org/, paskaties, kas vēl tev tur nav kārtībā.

 

Starp citu, kas tā mūsdienās par modi baidīties no $_GET/$_POST?

 

Godīgi saku, ka nezinu kāda tieši skaitās 'pareiza' struktūra, kur to varu iemācīties? Ja w3schools.org, tad man tas laikam nederēs, jo man ir nepieciešama html korelācija ar php un js, ja tur to arī piedāvā esmu gatavs pamacīties, bieži pats jūtu, ka krītu uz muļķīgām kļūdām. Līdz šim šķita, ka html ir tikai attēlojums un php apstrāde, tākā baigi nozīmīgs html apstrādes ziņā nav, šķita, ka forma pati par sevi ja ir atvērta tur var grūst vienalga kādu html izkārtojumu ja vien viņa ir pareizā brīdī aizsūtīta un aizvērta, laikam esmu kļūdījies.

Projektu rakstu augstskolas vajadzībām (kvalifikācijas darbs), izmantoju wamp, sūtot to failu uz validatoru viņš atgriež kļūdas paziņojumu: 'Sorry! This document cannot be checked.' tas extention '.php' dēļ varētu būt ? Ja samainu tikai extention uz '.html' tas neko neiespaidos citos failos, kas mijiedarbojas ar to (bail kaut ko sabojāt) ?

Es neizmantoju $_GET jo īsti nezinu ko tas dara, ja vajadzētu tad noskaidrotu, $_POST neizmantoju šajai apstrādei, jo codeigniter piedāvā iebūvēto funkciju, kas dara to pašu, izmantoju iesūtīto bilžu apstrādei, jo CI nepiedāvā vairāku bilžu augšupielādi un nācās pašam kaut ko izmeistarot, kur $_POST noderēja.

Tiek pieļautas tik daudz, jūsuprāt, rupjas kļūdas, jo es ar html, php, css, js esmu darbojies tikai nedaudz vairāk kā pusgadu skolas ietvaros, nevis darbā vai kā savādāk un pie šīm valodām daudz laika neesmu pavadījis, es tikai mācos, tāpēc arī ar interesi lasu jūsu ieteikumus un cenšos tos izpildīt (ar šo atbildu arī uz biedra 'gurkjis' postu).

Edited by CrossUp
Link to comment
Share on other sites

Apstrādes ziņā HTML tiešām nav nozīmīgs. Bet pie izvadīšanas pareiza HTML struktūra ir būtiska, lai tu ekrānā ieraudzītu to, ko vēlies redzēt, nevis vienkārši to, kas nu tur sanāk.

 

Projektu un augstskolai? Kvalifikācijas darbs? Kur tu mācies - LLU kartupeļu stādīšanas fakultātē, vai?

Link to comment
Share on other sites

Apstrādes ziņā HTML tiešām nav nozīmīgs. Bet pie izvadīšanas pareiza HTML struktūra ir būtiska, lai tu ekrānā ieraudzītu to, ko vēlies redzēt, nevis vienkārši to, kas nu tur sanāk.

 

Projektu un augstskolai? Kvalifikācijas darbs? Kur tu mācies - LLU kartupeļu stādīšanas fakultātē, vai?

 

Tad baigi kļūdījies es tomēr neesmu, jo redzu tieši to un kā es gribu, visu laiku kliboja apstrāde, par to 'pareizo' html struktūru es tomēr gribu ko palasīt.

Latvijas Universitātē mācoties 4. semestrī ir jāiet prakse un paralēli jāraksta kvalifikācijas darbs (programēšanas studiju programas bakalauriem), kāpēc tevi izbrīna fakts, ka skola uzdod studentiem apjomīgākus darbus?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...