Jump to content
php.lv forumi

par JOIN un koda vienkāšošanu


bra

Recommended Posts

Hi,

Kārtējo reizi esmu nonācis strupceļā tādēļ vēršos pie Jums.

 

šoreiz viena no manām problēmām ir šāds ten skripts http://paste.php.lv/1877

Zinu ka esksitētē Tās JOIN ( LEFT | RIHT ) gribēju šo te koda gabaliņu kautkā novienkāršot t.i. lai nav tik garš ideja sekojoša

 

savācam datus no main, kur ir kāds id($startid) + izšpļujam nosaukumu, tad no itemtypes savācam datus, kur sadid = main id, tad savācam datus no items, kur

sadid = itemtypes id, un vis beidot vadam visu ārā.

 

Tad vel man ir jautājums par preg_replace kas tas par zvēru un ko nozīmē tie [^a-z] utt

 

Pldies jau iepriekš

Mārtiņs Brass

Link to comment
Share on other sites

Īsti nezinu kāda tev ir DB struktūra, bet laikam šādi:

<?php
 function pro_showitems($startid){
   $startid = intval($startid);
   $q = mysql_query("SELECT * FROM main JOIN itemtypes ON main.id=itemtypes.sadid ".
                    "JOIN items ON items.sadid=itemtpyes.id WHERE main.sadid='$startid' ".
                    "ORDER BY main.id, itemtypes.id, items.id");
   if (!$q) { 
     echo mysql_error(); 
   } else { 
     $skiats_itemu = 0;
     while ($row = mysql_fetch_array($q)) {
       $skaits_itemu++;
       echo '<div class="box">';
       echo '<h2>'.$row['name'].'</h2>';
       echo '<img src="menulogo/'.$row['bilde'].'" width="100" height="100" />';
       echo '<p>nosaukums</p>';
       echo '<div class="go">';
           $arr = array(
               'menu=read',
               'id='.$row['id'],
               'rid='.$row['id'],
               'type='.$row['type'],
               'name='.$_GET['name'],
               'name2='.$row['name'],
               'pid='.$row['pid'],
               'name3='.$row['name'],
               'itemid='.$row['id'],
               'name3='.$row['name']);
           echo '<a href="?'.implode('&', $arr).'">';
           echo '<img src="img/pluss.gif" alt="Vairāk" /></a>';
       echo '</div>';
     }
   }
 }
?>

P.S. iemācies identēt kodu.

Link to comment
Share on other sites

Paldies par sorci, šis tas nestrādā kā es vēlējos panākt, bet tas nekas, bet Ideja JOINam ir kādā?

 

Un kapēc tur tie punkti pa vidu?

Atvainojos par savu muļību, bet ko nozīmē identēt kodu?

Link to comment
Share on other sites

Identēt kodu - likt atstarpes/atkāpes pie atteicīgiem elementiem?

Kas labāka lasās, šis:

for ($i=0; $i<1; $i++) {
if ($i>5) {
echo $i;
}
}

vai šis:

for ($i=0; $i<1; $i++) {
  if ($i>5) {
    echo $i;
  }
}

Domāju, ka otrais, ne?

 

JOIN ideja, īsi sakot: taisīt dekarta reizinājumu no abām tabulām, atlasot tikai tos ierakstus, kuri atbilst ON nosacījumam.

Ja ir divas tabulas:

A(col1, col2)
-------
a 1       
b 2
c 3

un tabla:

B(col3, col4)
------
1 viens
2 divi
4 četri

tad SELECT * FROM A JOIN B ON col2=col3 dos rezultātu:

col1 col2 col3  col4
-----------------------
a      1    1  viens
b      2    2   divi

 

Un par kādiem punktiem iet runa? Punkts taču ir stringa konkatenācijas simbols, to taču tu zini, ne?

Link to comment
Share on other sites

zināt tad zināju, tikai nesapratu kādēļ šis tur?, bet laikam tikai pieraxta dēļ.

 

Tikai par to JOIN doto piemēru lieta tāda ka netiek atgriests viens, bet vairāki itemi, un navigācīja aiziet kalīgā tūtā, bet tur laikam man mašan jāurbjas cauri tai Join štellei

Paldies Tev par uzklausīšanu un atbildes sniegšanu.

Mārtiņš Brass

Edited by bra
Link to comment
Share on other sites

×
×
  • Create New...