Newsgroup: it.comp.www.php
Titolo: ripetere un'azione...come?!

ciao ragazzi!eccomi qua con un nuovo quesito!^__^
allora dovrei fare una cosa del tipo
ho una tabella
id__subid__msg
faccio una query se il risultato è magiore di 0 visualizzo il messaggio(msg)
e faccio un'altra query selezionando i valori che hanno come subid l'id del
msg appena visualizzato se il risultato è maggiore di 0 rifaccio tutto,e
così via fin quando mi da 0 risultati,qualcuno sa come fare?!la query è
sempre la stesa cambia soltato l'id che  sarà nella variabile $row[id] ciao
ciao!

così via..............
Forse con una funzione ricorsiva?
--
..perché avevamo un cannone nel cortile.
De Andrade


Puoi spiegarmi meglio e/o rimandarmi a qlc sul manuale?


Purtroppo non posso farti l'esempio concreto, dovresti
adattarlo tu:
Una funzione ricorsiva è una funziona il cui corpo contiene
una chiamata a se stessa. Ad esempio, per scorrere una
struttura ad albero, come una directory con le sue
sottodirectory, l'uso di una funzione ricorsiva è
praticamente indispensabile.
Quindi:
function query($id) {
 .
 .
 .
 .
 $row[id]=mysql....
 $result=query($row[id]);
 if (!result) {
	return 0;
	}
 else 
     ..
..
}
Non so quello che devi fare in concreto e di preciso, pero'
forse qualcosa puoi ricavarci.
L'uso delle funzioni ricorsive non è legato al PHP, ma alla
programmazione in generale (anche se alcuni linguaggi, come
il Fortran, non supportano le chiamate ricorsive).
Un classico esempio di funzione ricorsiva è il calcolo del
fattoriale n! (ad esempio 5! = 5*4*3*2*1=120...il ! indica
proprio la rapidità con cui tale funzione, definita in N,
cresce).
function fattoriale(n) {
	if (n!=1) {	
		res=n*fattoriale(n-1);
		}
	else
		return res;
}
$res=function(5);
Il codice dovrebbe essere corretto (non ne sono
sicuro...anzi!:) )
In pratica, viene tutto gestito con uno stack (LIFO).
 
Per eventuali precisazioni la comunità è invitata ad
intervenire!:)
-- 
WEbdOM webmaster di
Metronic.It mobile phone philosophy

[cut]
: L'uso delle funzioni ricorsive non è legato al PHP, ma alla
: programmazione in generale (anche se alcuni linguaggi, come
: il Fortran, non supportano le chiamate ricorsive).
[cut]
a me pare che in Fortran si possano scrivere funzioni ricorsive...
esempio:
RECURSIVE FUNCTION factorial(n) RESULT(res)
        INTEGER res, n
        IF(n.EQ.1) THEN
           res = 1
        ELSE
           res = n*factorial(n-1)
        END IF
     END
--
CIAO!
Gusher


Probabilmente.
Io mi riferivo alla versione Fortran 77, se non addirittura
a quella Fortran 90 con compilatore Workbench della
Microsoft. 
Se lo dici tu, le successive sicuramente permettono le
funzioni ricorsive tramite la parola chiave recursive:))


  else {
query();                <<<<<< così??????così richiama la funzione no?!?!?!


: Probabilmente.
: Io mi riferivo alla versione Fortran 77, se non addirittura
: a quella Fortran 90 con compilatore Workbench della
: Microsoft.
si, già con la 77 è possibile.
--
CIAO!
Gusher

> }
return 0;
}// fine funzione
In pratica, alla funzione devi passare l'id con cui
effettuare la query (ad esempio select * from tab where
id=$id)
Se ottieni un valore nullo (non so cosa intendi tu...forse
quando non ci sono record che soddisfano al query?), allora
fai un return...in questo modo, la funzione esce e torna
alla chiamata precedente, che uscirà a sua volta e così
via...
In ogni chiamata puoi visualizzare un campo prelevato con
un'istruzione print $row[msg]. fa qualche prova e cerca di
adattare il tutto alle tue esigenze. 
Spero che questa volta io sia stato un po' più preciso:)
