Avatar billede dizzim Nybegynder
22. oktober 2004 - 22:11 Der er 7 kommentarer og
1 løsning

Tjeck om tal i array er ens med tal i db + lidt ekstra

Hej,
Jeg er i gang med at lave et større system, en del af dette skal tjekke om et tal i databasen ens med et tal i et array. Og hvis de er ens skal den fastsætte en anden variabels værdi (der ændre baggrundsfarven i cellen tallet står i).
De felter i tabellen i db'en der skal tjekkes hedder følgende:
etet, etto, ettre, etfire, etfem,
toet, toto, totre, tofire, tofem,
treet, treto, tretre, trefire og trefem.

Der er dog en sidste ting, hvis at alle tallene der står i en celle i tabellen der starter med "et" er ens med tal der står i arrayet skal den aktivere et stykke kode (som jeg nok selv skal stå for). Det samme gælder for alle tallene der står i tabeller der starter med "et" og dem der starter med "tre".

Men hvordan?

(jeg regner med at svaret består af noget i kode + lidt forklaring hvis der er noget nogle mere avancerede ting, og ikke bare en "rough".)

På forhånd tak for hjælpen!
(jeg brugere koden fra dette spørgsmål: http://www.eksperten.dk/spm/552697 hvis det er til nogen hjælp)
Avatar billede Slettet bruger
22. oktober 2004 - 23:44 #1
Jeg synes, jeg kan høre en, der råber banko bag ved dig ;-)

Har du tallene korrekt fordelt som en korrekt bankoplade? (så behøver man nemlig ikke at checke alle tal mod alle felter. f.eks vil tal under 10 altid være i det første felt i en række.)
Avatar billede dizzim Nybegynder
23. oktober 2004 - 12:53 #2
Det er der nok noget om ;P

Men nej, det er de ikk. Jeg har fundet ud af at der er fem tal på hver række og så har jeg bare lavet et felt til hver af de tal. Det eneste der er sikkert er at et tal i fx. totre altid vil være lavere end et tal i tofire og tofem. osv.
Avatar billede Slettet bruger
23. oktober 2004 - 15:09 #3
Det vil sige, at du har et array på op til ca 40-60 tal som allesammen skal testes mod hvert felt i hver række i databasen. Det bliver både tungt at skrive, og endnu mere tungt at køre.

$felter=array(
  array('etet', 'etto', 'ettre', 'etfire', 'etfem'),
  array('toet', 'toto', 'totre', 'tofire', 'tofem'),
  array('treet', 'treto', 'tretre', 'trefire', 'trefem'))

$res=mysql_query("SELECT * FROM tabel");
while($r=mysql_fetch_assoc($res)){
  echo "<table>";
  $antalraekker=0;
  foreach($felter as $raekke){
    echo "<tr>";
    $antalfelter=0;
    foreach($raekke as $felt){
      echo "<td style='background:";
      if(in_array($r[$felt],$liste){
        echo "green";
        $antalfelter++;
      } else {
        echo "white";
      }
      echo "'>{$r[$felt]}</td>";
    }
    if(5==$antalfelter){
      // Vi har en række
      $antalraekker++;
    }
    echo "<tr>";
  }
  if(3==$antalraekker){
    // Vi har pladen fuld
  }
  echo "</table>";
}
Avatar billede dizzim Nybegynder
23. oktober 2004 - 19:25 #4
Takker det virker efter et par mindre typo's blev retter ;).
Der er god en enkelt fejl jeg ikk lige kan fixe...
Hvis der slet ikke er noget i array bliver felternes baggrund helt blå og der står dette i kilden:

<td width='25' height='15' align='center' bgcolor='<br />
<b>Warning</b>:  Wrong datatype for second argument in call to in_array in <b>/customers/artifi.org/artifi.org/httpd.www/preview/v2/sjovogspas/bingo/bingo.php</b> on line <b>50</b><br />
#F3F3F3'>89</td>

line 50:      if(in_array($r[$felt],$liste)){
              echo "#FF0000' class='greenbody";
              $antalfelter++;
            } else {
              echo "#F3F3F3";
            }

Jjeg har som du kan se lavet lidt om på tabellerne men princippet er jo stadig det samme.

Lige for at få et overblik:

$felter=array(
  array('etet', 'etto', 'ettre', 'etfire', 'etfem'),
  array('toet', 'toto', 'totre', 'tofire', 'tofem'),
  array('treet', 'treto', 'tretre', 'trefire', 'trefem'));

$ip = getenv("REMOTE_ADDR");

$connection = mysql_connect("localhost", "user", "pass");
        mysql_select_db("db");
        $res = mysql_query("SELECT * FROM bingo WHERE ip = '$ip' ORDER BY id DESC");
       
while($r=mysql_fetch_assoc($res)){
  echo "<br><table width='300' bgcolor='#FF0000' cellpadding='0' cellspacing='0' border='0' align='center'>    <tr>
        <td width='300' height='2' bgcolor='#232323' colspan='11'></td></tr>";
  $antalraekker=0;
  foreach($felter as $raekke){
    echo "<tr><td width='50' height='15' class='greenbody' bgcolor='#232323'>| intet</td>";
    $antalfelter=0;
    foreach($raekke as $felt){
      echo "<td width='1' height='15' bgcolor='#232323'></td>
            <td width='25' height='15' align='center' bgcolor='";
      if(in_array($r[$felt],$liste)){
        echo "#FF0000' class='greenbody";
        $antalfelter++;
      } else {
        echo "#F3F3F3";
      }
      echo "'>{$r[$felt]}</td>";
    }
    if(5==$antalfelter){
      echo "en række baby!!!";
      $antalraekker++;
    }
    echo "    <tr>
        <td width='300' height='1' bgcolor='#232323' colspan='11'></td>
    </tr>";
  }
  if(3==$antalraekker){
    echo "fuld plade baby!!!";
  }
  echo "<tr>
        <td width='300' height='25' colspan='11' valign='top' bgcolor='#F3F3F3'><b>Kontrol-kode:</b> $comment <br> <div align='right' class='subtxt'>tilføjet: $date</div></td>
    </tr><tr><td width='300' height='2' bgcolor='#232323' colspan='11'></td>
    </tr></table><br><br><br>";
}
            mysql_close($connection);   
?>
Avatar billede dizzim Nybegynder
23. oktober 2004 - 19:42 #5
lige en ting til:
Jeg kan heller ikk hente andre ting ud fra db'en? fx. vil jeg gerne poste den dato plaen er blevet tilføjet. men det kan jeg ikke? den tilføjer bare ikk noget?
Avatar billede Slettet bruger
23. oktober 2004 - 23:33 #6
Start scriptet med

$liste=isset($_POST['liste'])?$_POST['liste']:array();

Så skulle fejlen med tom liste forsvinde.

De ekstra data for feltet burde blive udskrevet, hvis du retter til:

echo "<tr>
        <td width='300' height='25' colspan='11' valign='top' bgcolor='#F3F3F3'><b>Kontrol-kode:</b> {$r['comment']} <br> <div align='right' class='subtxt'>tilføjet: {$r['date']}</div></td>
    </tr><tr><td width='300' height='2' bgcolor='#232323' colspan='11'></td>
    </tr></table><br><br><br>";
Avatar billede dizzim Nybegynder
23. oktober 2004 - 23:46 #7
takker igen!
bar' lig' et svar og pointene er dine
Avatar billede Slettet bruger
24. oktober 2004 - 00:37 #8
Jamen så læger jeg et lige så stille og forsigtigt her...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester