Autor Zpráva
pvt
Profil *
Zdravím,

jaký postup by jste navrhli když budu mít na začátku 11 čísel které se mění (přidáním prvního a odebráním posledního) po každém vložení přes formulář
následně s něma bude nutné provést následující:
každé čilo najít v jednom ze tří polí čísel a vytáhnout předchozí a následující (a zachovat vyhledávané) tím pádem můžeme ve výsledku mít až 33 čísel (málo pravděpodobné)
následně najít jestli nějaká se nacházení v posloupné řadě za sebou 6krát nebo alespoň 4krát (např. 2,3,4,5 nebo 9,10,11,12,13,14)
nakonec vypsat všechny existující řady, ale zachovat prvních 11 čísel pro další jejich změnu a znovu přepočítání

1) Jak uložit prvních jedenáct - databáze, pole, soubor? tak aby nikam nezmizeli ani po refresh stránky
2) tři "pole" čísel - použít pole? jak vyhledat a vypsat?
3) jak seřadit všechny výsledná čísla (33) a podbarvit v nich ty které jedou bez vynáchvky 4 nebo 6 za sebou?
4) máte ještě nějaké rady k tomu?
abc
Profil
Zdravím též, mé názory:
1) SESSION
2) pole
3) seřazení - sort
výpis - po seřazení procházet cyklem a kontrolovat, zda je předchozí od 1 menší než stávající -> navyšovat počítadlo, když počítadlo dosáhne 4 nebo 6, pak je vypsat
juriad
Profil
Jak dlouho ta čísla mají být dostupná?
Mají se ukládat pro každého uživatele zvlášť?
Mají jednotliví uživatelé přehled o všech číslech?
Kdo provádí změnu čísel?
Z jakého rozsahu jsou ta čísla?
Co myslíš těmi řadami?

Dokud přesněji nepopíšeš svůj problém, obávám se, že všechny rady se budou týkat jen nějaké interpretace, která může být na míle vzdálená od tvého záměru.
pvt
Profil *
Odkaz na zadání první verze: http://ctrlv.cz/oRSrN (není moc srozumitelný, sorry)
Uživatel je jen jeden, čísla dostupná tak 3-5 hodin
čísla od 0 do 36
změnu čísel provádí uživatel
řady jsou v dokumentu (viz. odkaz)
nebyl by lepší js - poběží to v safari na iphonu ?


To zadání je v podstatě základ jeět+tam pak přibyde jedna řada a podbarvování 3 barvami jednotlivý čísla z již podbarvených - zatím není dnes jdu zas do rána dělat cvičné výpočty na druhou fázi
pvt
Profil *
cca. finální zadání už by se to moc změnit nemělo - http://ctrlv.cz/mSSPZ


nejhloupejsi ukol do školy - zabezpečení )) jenom ruční výpočty mě sežraly den
pvt
Profil *
už mám napsané něco také a ani mne to nechce vypsat všechny čísla (sousedy všech 11)
<?php
session_start();
if ($_POST["num"] != null){
 $_SESSION["allnum"]= "";
 $nove = $_POST["num"];
 $puvodni = $_SESSION["cisla"];
 if ($_SESSION["cisla"] != null){
  $_SESSION["cisla"]= "".$nove.".".$puvodni."";
 }
 else {
  $_SESSION["cisla"]= "".$nove."";
 }
 $pole=explode(".","".$_SESSION["cisla"]."");
 if ($pole[11] != null){
  $_SESSION["cisla"]= "".$pole[0].".".$pole[1].".".$pole[2].".".$pole[3].".".$pole[4].".".$pole[5].".".$pole[6].".".$pole[7].".".$pole[8].".".$pole[9].".".$pole[10]."";
 }
 $c = 0;
 do {
  if ($pole[10] != null){
   $radaa = array("34", "31", "28", "25", "22", "19", "16", "13", "10", "7", "4", "1");
   $klic = array_search("".$pole[$c]."", $radaa);
   if ($klic != null) {
    $a = $klic-1;
    $c = $klic+1;
    if($radaa[$a] != null and $radaa[$klic] != null and $radaa[$c] != null){
     $puvodce = $_SESSION["allnum"];
     $nove = "".$radaa[$a].".".$radaa[$klic].".".$radaa[$c]."";
     if ($_SESSION["allnum"] != null){
      $_SESSION["allnum"]= "".$nove.".".$puvodce."";
     }
     else{
      $_SESSION["allnum"]= "".$nove."";
     }
    }
    elseif($radaa[$a] != null and $radaa[$klic] != null){
     $puvodce = $_SESSION["allnum"];
     $nove = "".$radaa[$a].".".$radaa[$klic]."";
     if ($_SESSION["allnum"] != null){
      $_SESSION["allnum"]= "".$nove.".".$puvodce."";
     }
     else{
      $_SESSION["allnum"]= "".$nove."";
     }
    }
    elseif ($radaa[$klic] != null and $radaa[$c] != null){
     $puvodce = $_SESSION["allnum"];
     $nove = "".$radaa[$klic].".".$radaa[$c]."";
     if ($_SESSION["allnum"] != null){
      $_SESSION["allnum"]= "".$nove.".".$puvodce."";
     }
     else{
      $_SESSION["allnum"]= "".$nove."";
     }
    }
   }
   if ($klic == null) {
    $radab = array("35", "32", "29", "26", "23", "20", "17", "14", "11", "8", "5", "2");
    $klic = array_search("".$pole[$c]."", $radab);
    if ($klic != null) {
     $a = $klic-1;
     $c = $klic+1;
     if($radab[$a] != null and $radab[$klic] != null and $radab[$c] != null){
      $puvodce = $_SESSION["allnum"];
      $nove = "".$radab[$a].".".$radab[$klic].".".$radab[$c]."";
      if ($_SESSION["allnum"] != null){
       $_SESSION["allnum"]= "".$nove.".".$puvodce."";
      }
      else{
       $_SESSION["allnum"]= "".$nove."";
      }
     }
     elseif($radab[$a] != null and $radab[$klic] != null){
      $puvodce = $_SESSION["allnum"];
      $nove = "".$radab[$a].".".$radab[$klic]."";
      if ($_SESSION["allnum"] != null){
       $_SESSION["allnum"]= "".$nove.".".$puvodce."";
      }
      else{
       $_SESSION["allnum"]= "".$nove."";
      }
     }
     elseif ($radab[$klic] != null and $radab[$c] != null){
      $puvodce = $_SESSION["allnum"];
      $nove = "".$radab[$klic].".".$radab[$c]."";
      if ($_SESSION["allnum"] != null){
       $_SESSION["allnum"]= "".$nove.".".$puvodce."";
      }
      else{
       $_SESSION["allnum"]= "".$nove."";
      }
     }
    }
    if ($klic == null) {
     $radac = array("36", "33", "30", "27", "24", "21", "18", "15", "12", "9", "6", "3");
     $klic = array_search("".$pole[$c]."", $radac);
     if ($klic != null) {
      $a = $klic-1;
      $c = $klic+1;
      if($radac[$a] != null and $radac[$klic] != null and $radac[$c] != null){
       $puvodce = $_SESSION["allnum"];
       $nove = "".$radac[$a].".".$radac[$klic].".".$radac[$c]."";
       if ($_SESSION["allnum"] != null){
        $_SESSION["allnum"]= "".$nove.".".$puvodce."";
       }
       else{
        $_SESSION["allnum"]= "".$nove."";
       }
      }
      elseif($radac[$a] != null and $radac[$klic] != null){
       $puvodce = $_SESSION["allnum"];
       $nove = "".$radac[$a].".".$radac[$klic]."";
       if ($_SESSION["allnum"] != null){
        $_SESSION["allnum"]= "".$nove.".".$puvodce."";
       }
       else{
        $_SESSION["allnum"]= "".$nove."";
       }
      }
      elseif ($radac[$klic] != null and $radac[$c] != null){
       $puvodce = $_SESSION["allnum"];
       $nove = "".$radac[$klic].".".$radac[$c]."";
       if ($_SESSION["allnum"] != null){
        $_SESSION["allnum"]= "".$nove.".".$puvodce."";
       }
       else{
        $_SESSION["allnum"]= "".$nove."";
       }
      }
     }
    }
   }
  }
  $c++;
 }
 while($c<11);
}
echo $_SESSION["cisla"]; 
echo "<br>";
echo $_SESSION["allnum"]; 
?>
<form method="post" action="#">
<input type="text" name="num"/>
<input type="submit" value="Odeslat" />
</form>
pvt
Profil *
už mám napsané něco také a ani mne to nechce vypsat všechny čísla (sousedy všech 11)
<?php
session_start();
if ($_POST["num"] != null){
 $_SESSION["allnum"]= "";
 $nove = $_POST["num"];
 $puvodni = $_SESSION["cisla"];
 if ($_SESSION["cisla"] != null){
  $_SESSION["cisla"]= "".$nove.".".$puvodni."";
 }
 else {
  $_SESSION["cisla"]= "".$nove."";
 }
 $pole=explode(".","".$_SESSION["cisla"]."");
 if ($pole[11] != null){
  $_SESSION["cisla"]= "".$pole[0].".".$pole[1].".".$pole[2].".".$pole[3].".".$pole[4].".".$pole[5].".".$pole[6].".".$pole[7].".".$pole[8].".".$pole[9].".".$pole[10]."";
 }
 $c = 0;
 do {
  if ($pole[10] != null){
   $radaa = array("34", "31", "28", "25", "22", "19", "16", "13", "10", "7", "4", "1");
   $klic = array_search("".$pole[$c]."", $radaa);
   if ($klic != null) {
    $a = $klic-1;
    $c = $klic+1;
    if($radaa[$a] != null and $radaa[$klic] != null and $radaa[$c] != null){
     $puvodce = $_SESSION["allnum"];
     $nove = "".$radaa[$a].".".$radaa[$klic].".".$radaa[$c]."";
     if ($_SESSION["allnum"] != null){
      $_SESSION["allnum"]= "".$nove.".".$puvodce."";
     }
     else{
      $_SESSION["allnum"]= "".$nove."";
     }
    }
    elseif($radaa[$a] != null and $radaa[$klic] != null){
     $puvodce = $_SESSION["allnum"];
     $nove = "".$radaa[$a].".".$radaa[$klic]."";
     if ($_SESSION["allnum"] != null){
      $_SESSION["allnum"]= "".$nove.".".$puvodce."";
     }
     else{
      $_SESSION["allnum"]= "".$nove."";
     }
    }
    elseif ($radaa[$klic] != null and $radaa[$c] != null){
     $puvodce = $_SESSION["allnum"];
     $nove = "".$radaa[$klic].".".$radaa[$c]."";
     if ($_SESSION["allnum"] != null){
      $_SESSION["allnum"]= "".$nove.".".$puvodce."";
     }
     else{
      $_SESSION["allnum"]= "".$nove."";
     }
    }
   }
   if ($klic == null) {
    $radab = array("35", "32", "29", "26", "23", "20", "17", "14", "11", "8", "5", "2");
    $klic = array_search("".$pole[$c]."", $radab);
    if ($klic != null) {
     $a = $klic-1;
     $c = $klic+1;
     if($radab[$a] != null and $radab[$klic] != null and $radab[$c] != null){
      $puvodce = $_SESSION["allnum"];
      $nove = "".$radab[$a].".".$radab[$klic].".".$radab[$c]."";
      if ($_SESSION["allnum"] != null){
       $_SESSION["allnum"]= "".$nove.".".$puvodce."";
      }
      else{
       $_SESSION["allnum"]= "".$nove."";
      }
     }
     elseif($radab[$a] != null and $radab[$klic] != null){
      $puvodce = $_SESSION["allnum"];
      $nove = "".$radab[$a].".".$radab[$klic]."";
      if ($_SESSION["allnum"] != null){
       $_SESSION["allnum"]= "".$nove.".".$puvodce."";
      }
      else{
       $_SESSION["allnum"]= "".$nove."";
      }
     }
     elseif ($radab[$klic] != null and $radab[$c] != null){
      $puvodce = $_SESSION["allnum"];
      $nove = "".$radab[$klic].".".$radab[$c]."";
      if ($_SESSION["allnum"] != null){
       $_SESSION["allnum"]= "".$nove.".".$puvodce."";
      }
      else{
       $_SESSION["allnum"]= "".$nove."";
      }
     }
    }
    if ($klic == null) {
     $radac = array("36", "33", "30", "27", "24", "21", "18", "15", "12", "9", "6", "3");
     $klic = array_search("".$pole[$c]."", $radac);
     if ($klic != null) {
      $a = $klic-1;
      $c = $klic+1;
      if($radac[$a] != null and $radac[$klic] != null and $radac[$c] != null){
       $puvodce = $_SESSION["allnum"];
       $nove = "".$radac[$a].".".$radac[$klic].".".$radac[$c]."";
       if ($_SESSION["allnum"] != null){
        $_SESSION["allnum"]= "".$nove.".".$puvodce."";
       }
       else{
        $_SESSION["allnum"]= "".$nove."";
       }
      }
      elseif($radac[$a] != null and $radac[$klic] != null){
       $puvodce = $_SESSION["allnum"];
       $nove = "".$radac[$a].".".$radac[$klic]."";
       if ($_SESSION["allnum"] != null){
        $_SESSION["allnum"]= "".$nove.".".$puvodce."";
       }
       else{
        $_SESSION["allnum"]= "".$nove."";
       }
      }
      elseif ($radac[$klic] != null and $radac[$c] != null){
       $puvodce = $_SESSION["allnum"];
       $nove = "".$radac[$klic].".".$radac[$c]."";
       if ($_SESSION["allnum"] != null){
        $_SESSION["allnum"]= "".$nove.".".$puvodce."";
       }
       else{
        $_SESSION["allnum"]= "".$nove."";
       }
      }
     }
    }
   }
  }
  $c++;
 }
 while($c<11);
}
echo $_SESSION["cisla"]; 
echo "<br>";
echo $_SESSION["allnum"]; 
?>
<form method="post" action="#">
<input type="text" name="num"/>
<input type="submit" value="Odeslat" />
</form>
jenikkozak
Profil
Mám několik poznámek ke stávajícímu skriptu:
- to připojování prázdných řetězců kromě toho, že nemá žádný význam, skript znepřehledňuje.
- bude výhodnější do SESSION ukládat pole. Ne ho převádět na řetězec a pak zpět. Na oříznutí pole můžeš využít funkci array_slice.
- mít tři prakticky shodné pasáže ve skriptu není dobré pro správu. Buď si vytvoř na zpracování funkci, nebo ta tři pole projdi v cyklu.
- nedělej to, že nějaký prvek pole převedeš na proměnnou, abys ho jednou použil jako proměnnou a pak zase jako prvek pole. Tím skript znepřehledňuješ.
Mám na mysli toto:
$puvodce = $_SESSION["allnum"];
$_SESSION["allnum"]= "".$nove.".".$puvodce."";
- Prvek $_SESSION["allnum"] na začátku resetuješ. Díky tomu máš zajištěné, že existuje a nemusíš se s ním bát pracovat. I když neobsahuje žádnou hodnotu, můžeš k němu připojit další řetězec. Takže tam nepotřebuješ podmínku jeho prázdnoty.
pvt
Profil *
už jsem zas dál jak províst vyhledání shody hodnot v poli a zachování pouze jedné?


aby v poli nebylo víckrát stejné číslo
jenikkozak
Profil
Použij funkci array_unique.
pvt
Profil *
ted už to mám v poli viz. http://ctrlv.cz/FOfV5
serazené a přes unique vyrazené jak mezi tím najít 4 nebo 6 čísel jdoucích za sebou bez přerušení?


např. 1,2,3,4,5,6
DobráKlávesnice
Profil *
Budeš postupně procházet pole (třeba přes foreach). Uděláš si nějaké počítadlo a pomocnou proměnnou.

$pocitadlo = 0;
$zacatekRady = null;
foreach($pole as $klic=>$prvek) {
  if($pole[$klic-1]+1 == $prvek) {
    if($pocitadlo == 0) $zacatekRady = $klic-1;
    $pocitadlo ++;

    if($pocitadlo == 4) {
      echo "Řada začíná na klíči $zacatekRady a je dlouhá $pocitadlo prvků.";
      break;    
   }
  }
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: