Oppure

Loading
04/03/14 17:03
Qwertj
Perchè parti da 1? In PHP (e circa in ogni linguaggio di programmazione), gli array sono 0-based

In quanto al secondo problema... Perchè iteri due volte su $_GET['secondo']? Così scrivi N^2 <input>! :noway:

Io avrei scritto molto semplicemente
//prima acquisizione
if ($_GET['primo'] > 0) {
	echo "<hr>";
	for($i = 0; $i <= (int)$_GET['primo']; ++$i) {
		echo "Inserisci il $i valore della fissa<br>", 
			 '<input name="valorea[', $i, ']" type="text" value="1.00"><br>';
	}
} elseif((int)$_GET['primo']) { //valuta a vero se != da zero
	echo "Inserisci un valore corretto.<br>";
}

//seconda acquisizione       
if ((int)$_GET['secondo'] > 0) {
	echo "<hr>";
	for($i = 0; $j <= (int)$_GET['secondo']; ++$j){
		echo "Inserisci i valori della $i doppia <br> ",
			 '<input name="valoreb[',$i,'][0]" type="text" value="2.00"><br>',
			 '<input name="valoreb[',$i,'][1]" type="text" value="3.00"><br>';
	}
} elseif((int)$_GET['secondo']) { //valuta a vero se != da zero
	echo "Inserisci un valore corretto.<br>";
}


Gli <input> "doppi" sono a loro volta array, che puoi accedere poi come un array qualsiasi
Altrimenti vai a sovrascrivere altri valoreb[$i] e viene fuori un caos assurdo e grazie che non funziona nulla

(Hai fatto un corso per indentare il codice così? :-|)
aaa
04/03/14 17:41
alfredom15
Chiedo scusa per l' orrore che ho prodotto Ahahah , purtroppo come già detto sono autodidatta sul php , ancora non finisco a leggere il tuo post però mi sono accorto subito della "stupidaggine" creata e ho fatto così:

  //***************************************PRIMA ACQUISIZIONE ***************************************
  if ($_GET['primo'] > 0)
  {
  echo "<hr>";
    for($i=1; $i <= $_GET['primo']; $i++){
	echo "Inserisci il $i valore della fissa<br>";
      echo '<input name="valorea['.$i.']" type="text" value="1.00"><br>';
    }
	}
			elseif($_GET['primo'] ==0)
	{}
	else 
	{
	echo "Inserisci un valore corretto.<br>";
	}
	
	
	
	
	 //**********************************SECONDA  ACQUISIZIONE ***************************************
	
	  if ($_GET['secondo'] > 0)
  {
  
 echo"<hr>";
 	  for($i=1; $i <= $_GET['secondo']; $i++){
	echo "Inserisci i valori della $i doppia <br> ";
     echo '<input name="valoreb['.$i.']" type="text" value="2.00"><br>';
	 echo '<input name="valorec['.$i.']" type="text" value="3.00"><br>';
	}
	}
	elseif($_GET['secondo'] ==0)
	{
	}
	else {
	echo "Inserisci un valore corretto.<br>";
	}



 //***************************************PRIMA STAMPA ***************************************
   if ($_SESSION['primo'] > 0){
$i = 0;
$ris1=1;
while(isset($_POST["valorea"][++$i]))
 {
    echo "La $i quota fissa e' " . htmlspecialchars($_POST["valorea"][$i]);
	echo "<br>";
	$ris1=$ris1*($_POST["valorea"][$i]);
}
echo "<br>Per un totale di " ;
echo round($ris1,2);
echo "<br><br> ";
$_SESSION['ris1'] = $ris1;}
else{echo "<br>"; 
echo "Nessuna quota singola<br>";}




 //***************************************SECONDA STAMPA ***************************************
 
 
    if ($_SESSION['secondo'] > 0){
$i = 0;
$ris2=0;
while(isset($_POST["valoreb"][++$i]))
 {
 echo "Le quote della $i doppia sono " . htmlspecialchars($_POST["valoreb"][$i]);
  echo " e ";
    echo  htmlspecialchars($_POST["valorec"][$i]);
	echo "<br>";
}
echo "<br>";
$_SESSION['ris2'] = $ris2;}
else
{echo "<br>";  
 echo "Nessuna quota doppia<br>";}

Ultima modifica effettuata da alfredom15 04/03/14 17:46
aaa
04/03/14 19:30
Qwertj
Ok meglio ^^
Un codice scritto bene (visualmente) è sempre meglio di un codice raffazzonato, impara a indentare
en.wikipedia.org/wiki/…
Personalmente preferisco 1TBS, resta comunque tra i primi tre perchè di fatto gli altri ormai non li usa più nessuno senza prendere degli insulti.
aaa
04/03/14 20:30
alfredom15
SI sono d' accordo , però diciamo che all' inizio esce spontaneo utilizzare un codice più spartano.
Comunque ho quasi finito il mio script , mi rimane un ultimo step in cui mi sono bloccato , e per l' ennesima volta mi rivolgo a voi (credo che in questo momento mi vogliate inultare :rofl: ) , sono arrivato al punto che una volta preso tutti questi valori all' interno di queste textbox (singole , doppie , triple e quadruple) devo fare diversi calcoli , incrociando i valori nelle text doppie , triple e di quelle quadruple.
Nel caso i valori siano singoli (una textbox sola) , i valori si moltiplicano sempre .
Per intenderci come il sistema di una schedina di scommesse.

Ho già trovato il codice per identificare il numero di combinazioni possibili con questo codice
:

//*******************SE IL VALORE E' UNO , NON CAMBIA IL NUMERO DI COMBINAZIONI*****
 //***************************************PRIMO CONTO (2 text) ***************************************
$cont = 1; 
$mol1=1;
if ( $_SESSION['secondo'] > 0)
{
for ($a=1; $a <= $_SESSION['secondo']; $a++){
$mol1=$mol1*2;
}

 //***************************************SECONDO CONTO(3 text) ***************************************
$mol2=$mol1;
if ( $_SESSION['terzo'] > 0)
{
for ($b=1; $b <= $_SESSION['terzo']; $b++){
$mol2=$mol2+$mol2*2;
}
}

 //***************************************TERZO CONTO(4 text) ***************************************
$mol3=$mol2;
if ( $_SESSION['quarto'] > 0)
{
for ($c=1; $c <= $_SESSION['quarto']; $c++){
$mol3=$mol3*4;
}



ORA PERO , NELLA PAGINA SUCCESSIVA DOVREI CALCOLARE UNA COSA DEL GENERE :
ESEMPIO:

TEXTBOX SINGOLE

1) text-a : 1  <-- (valore)
2) text-a : 2

TEXTBOX DOPPIE

3) text-a : 3
3) text-b : 4

TEXTBOX TRIPLE

4) text-a : 5
4) text-b : 6 
4) text-c : 7

TEXTBOX QUADRUPLE

5) text-a : 8 
5) text-b : 9 
5) text-c : 10
5) text-d : 11

risultati : 

risultato 1 : 1-a*2-a*3-a*4-a*5-a; (1*2*3*5*8)

risultato 2 : 1a*2a*3-b*4-a*5-a (1*2*4*5*8)

risultato 3: 1a*2a*3-a*4-b*5-a (1*2*3*6*8)



E così via , lasciando i valori dentro le textbox singole , sempre invariati , moltiplicando con tutti gli altri numeri , in tutte le combinazioni , senza ripetersi. Spero di essermi spiegato bene..
Capisco che le mie sono richieste difficili da elaborare ,se qualcuno sia così gentile da aiutarmi ne sarei grato , però in ogni caso vi ringrazio in anticipo. :hail::hail:
Ultima modifica effettuata da alfredom15 04/03/14 20:33
aaa
04/03/14 20:38
Qwertj
Non ho capito nulla.
aaa
04/03/14 21:06
alfredom15
Postato originariamente da Qwertj:

Non ho capito nulla.


Scusami se mi sono spiegato male.
Allora ricapitolando un attimo :

-1.php : Faccio inserire 4 valori in 4 relative textbox :
il primo valore serve a generare tante textbox quante il valore inserito. (le chiamo "singole" per intenderci)
il secondo valore serve a generare tante COPPIE di textbox quanto il valore inserito. (le chiamo "doppie" per intenderci)
il terzo valore serve a generare tanti TRIS di textbox quante il valore inserito.(le chiamo "triple" per intenderci)
ll quarto valore serve a generare tante volte quattro textbox quante il valore inserito. (le chiamo "quadruple" per intenderci)

-2.php : Vengono generate le textbox e l' utente può inserire i valori in queste textbox.

-3.php : Leggo tutti questi valori inseriti dall' utente , li stampo a video , e chiedo conferma dei valori inseriti.

Io ho bisogno di questo :

-4.php : Viene fatto la moltiplicazione tra i valori presenti nelle textbox singole , poi il valore totale viene moltiplicato con i valori presenti nelle doppie , nelle triple e nelle quadruple , però non tutti insieme , ma in maniera che ci calcolano tutte le combinazioni possibili.

Cerco di semplificare l' esempio più possibile:

-1.php : L' utente nella prima text  inserisce 1 , nella seconda 1 , nella terza e nella quarta 0 .

-2.php : Vengono generate 1 textbox (singola) + 2 textbox (una doppia).  L' utente nella singola scrive 2 e nelle doppie scrive 3 e 4.

-3.php : Stampo a video : Hai inserito 2 nella singola , Hai inserito 3 e 4 nella doppia.

-4.php : Sono disponibili due combinazioni , stampo a video :  

prima combinazione : 2*3 = 6
seconda combinazione : 2*4 = 8 


Scusami se non mi riesco a spiegare , spero di essere stato il più chiaro possibile , anche se non è semplice.
Grazie
Ultima modifica effettuata da alfredom15 04/03/14 21:08
aaa
05/03/14 13:56
Qwertj
Ok adesso credo di aver capito

Chiamando N1 il numero di <input> singoli, N2 il numero di <input> doppie, ecc, dovresti iterare N1*N2*N3*N4 volte, annidando i cicli, e ogni volta stampare il prodotto a[i1]*b[i2]*c[i3]*d[i4]

Per intenderci
$n1 = count(a) + 1;
$n2 = count(b) + 1;
$n3 = count(c) + 1;
$n4 = count(d) + 1;
for($i1 = 0; $i1 < $n1; ++$i1) {
    for($i2 = 0; $i2 < $n2; ++$i2) {
        for($i3 = 0; $i3 < $n3; ++$i3) {
            for($i4 = 0; $i4 < $n4; ++$i4) {
                echo a[$i1] * b[$i2] * c[$i3] * d[$i4], '<br />';
            }
        }
    }
}

Con il +1 fa sempre almeno una combinazione, ma non so come intendi gestire questi casi
aaa
05/03/14 14:45
alfredom15
Innanzitutto ti volevo ringraziare per la disponibilitá, Il punto é che ipotizzando di avere Una situazione del genere :
1) Singola

2) Doppia
3) Doppia

4)Tripla 
5)Tripla
6)Tripla

7)Tripla
8)Tripla
9) Tripla 

Cio che serve a me é questo :

1*2*4*7
1*2*4*8
1*2*4*9
1*2*5*7
1*2*5*8
1*2*5*9
1*2*6*7
1*2*6*8
1*2*6*9
1*3*4*7
1*3*4*8
1*3*4*9
1*3*5*7
1*3*5*8
1*3*5*9
1*3*6*7
1*3*6*8
1*3*6*9

FINE

Devo fare in modo che i valori che scorrono , sono quelli dell' ultimo insieme di textbox , e una volta terminati , scorre di uno il valore dell' insieme precedente , per ripartire a scorrere l' ultimo, fino a generare tutte le combinazioni. Ovviamente non conosco il numero di insiemi di textbox (Nella prima pagina l' utente lo inserisce) quindi inserendo quattro puntatori , gli insieme dello stesso tipo (doppia , tripla e singola ) scorrerebbero insieme , invece io devo selezionare SOLO l' ultimo insieme.
Dall' esempio sopra , credo si capisca meglio.

Scusami se,non mi sono spiegato e ti ringrazio ancora per l aiuto. :k:
Ultima modifica effettuata da alfredom15 05/03/14 15:33
aaa