Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Eseguire SQL ricorsiva

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387

    Eseguire SQL ricorsiva

    Ciao a tutti,
    mi aspetto dal seguente script che le istruzioni SQL da eseguire siano 4 (perchè ho dato 4 id_user) e me le stampa correttamente a video e mi aspetto che l'arraypasso2 sia composto da 2 elementi (perchè da 4 con gli input che gli passo diventano 2). Il problema che mi mette nell'array solo l'ultimo trovato, come se non salvasse gli elementi ricorsivamente ma li sovrascrivesse... chido per favore vostro help per capire che cambiamenti devo apportare... grazie!

    codice:
    foreach ($utente as $chiave => $valore) {
    		$id_utente = $valore["id_utente"];
    		$contatore = 0;
    		
    		$sql = "SELECT id_utente FROM utenti WHERE id_utente = $id_utente AND ";
    		foreach ($servizi as $element) {
    			$contatore++;
    			$colonna = $element;
    				if ($contatore < count($servizi)) {
    					$sql .= $colonna." = 'SI' AND ";
    				} else {
    					$sql .= $colonna." = 'SI'";
    				} // if
    		} // foreach ($servizi as $element) {
    		echo $sql."
    ";
    		$result = @$mysqli->query($sql);
    		echo $mysqli->error;
    		// controllo sul numero dei record coinvolti
    		if(@$result->num_rows > 0) {
    		// finche' trovo risultati
    			while($row = mysqli_fetch_array($result)) {
    				$utentePasso2[$i++] = array('id_utente'=>$row['id_utente']);
    			} // while 
    		} // if
    	} // foreach
    Vi do anche l'output a video:

    codice:
    SELECT id_utente FROM utenti WHERE id_utente = 1 AND sposato = 'SI' AND divorziato = 'SI'
    SELECT id_utente FROM utenti WHERE id_utente = 31 AND sposato = 'SI' AND divorziato = 'SI'
    SELECT id_utente FROM utenti WHERE id_utente = 32 AND sposato = 'SI' AND divorziato = 'SI'
    SELECT id_utente FROM utenti WHERE id_utente = 33 AND sposato = 'SI' AND divorziato = 'SI'
    E mi dovrebbe tirar fuori, dal mio database, il 31 e il 33 ma l'ultimo array è composto solo dal 33... grazie in anticipo a tutti....


  2. #2
    ciao,
    fatti stampare qualcosa a video per vedere se nell'esecuzione entra nel ciclo while, ad esempio
    Codice PHP:
    while($row mysqli_fetch_array($result)) 
    {
      echo 
    "i=".$i."; id_utente=".$row['id_utente'];
      
    $utentePasso2[$i++] = array('id_utente'=>$row['id_utente']);
    // while 

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Ciao Elia,
    no, non entra nel ciclo e non so perchè...
    Comunque ho usato un workaround... ho tirato fuori il foreach della SQL e prima faccio quello poi lo rido in pasto al secondo foreach, ora sembra funzionare........

    grazie comunque!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.