Visualizzazione dei risultati da 1 a 8 su 8

Discussione: ritornare un array

  1. #1

    ritornare un array

    Salve ragazzi, è da molto che non posto,quindi credo di aver dimenticato parecchio di PHP,
    la domanda che volevo farvi è la seuente:
    da una function per passare un array in php come si procede ?
    Dal mio codice non stampa nulla, eccolo
    FILE comboBox.php
    Codice PHP:
    function comboProfessione(){                   
              
              
    $query="SELECT id,descrizione FROM professione";         
              
    $dati=mysql_query($query) OR DIE(mysql_error());      
              while(
    $arrayCombo=mysql_fetch_array($dati));                              
         
    return 
    $arrayCombo;  
    }  

    function 
    confronto($professioni,$professione){          
        if(
    $professioni==$professione)         
          return   
    "selected";     

    formmodifica che richiama il file comboBox.php

    Codice PHP:


    include("../config.php");
    include(
    "../selezione.php");
    include(
    "../utility/comboBox.php");


    $a=comboProfessione();
    while(list(
    $dato1,$dato2)=each($a)){
    echo 
    $dato1;



    Non mi stampa niente , sbaglio qualcosa????
    Saluti
    Roberto Dungino

  2. #2
    nella funzione apri un while che non viene utilizzato. passa solo il resource id number e usalo per scorrere il result set oppure raccogli tutto il result set in un array multifunzione e poi passa quello. Personalmente controllerei che la query nella funzione mi renda almeno un risultato e poi passerei il resource id number ($dati) ad $a.

    Codice PHP:
    $a=comboProfessione();

    while(
    $row mysql_fetch_row($a))  {

        echo 
    $row[0];



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Il problemaè quando effettua il return dell'array, sei sicuro che le function in php possono ritornare anche un array?
    Roberto Dungino

  4. #4
    Originariamente inviato da dungino
    Il problemaè quando effettua il return dell'array, sei sicuro che le function in php possono ritornare anche un array?
    certo che si. e nel tuo caso ritorna anche due record per ogni result set.... (indice associativo e numerico) ma quel while "incompiuto" non e' corretto per come lo utilizzi. Se non ci sono record rende false e comunque, al meglio, stoppa il while dopo il primo record raccolto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    while($arrayCombo=mysql_fetch_array($dati));

    questa istruzione non mi riempie l'array?
    In caso contrario come devo fare ?
    Roberto Dungino

  6. #6
    Originariamente inviato da dungino
    while($arrayCombo=mysql_fetch_array($dati));

    questa istruzione non mi riempie l'array?
    In caso contrario come devo fare ?
    che c'entra il while messo a quel modo??? Ammettiamo che hai un solo record composto da due campi:

    Codice PHP:
    function comboProfessione(){                   
              
              
    $query="SELECT id, descrizione FROM professione";         
              
    $dati=mysql_query($query) OR DIE(mysql_error());      
              
    $arrayCombo=mysql_fetch_assoc($dati);

    return 
    $arrayCombo;  
    }  

    $a=comboProfessione();
    print_r($a); 
    se invece hai piu' risultati ti converrebbe fare come ho detto prima. esporti $dati ed esegui il while fuori dalla funzione.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Ho risolto, il problema non è il while ma il funzionamento di mysql_fetch_array().
    Il while così com'è messo va bene, ma mysq_fetch_array() non restituisce un array associativo, ma cerca di sfruttare l'array associativo come appoggio, in realtà quando si esce dalla condizione, ossia quando mysql_fetch_array() restituisce false esce dal ciclo e l'ultimo valore ritornato è null, quindi abbiamo un array di un elemento con valori null.
    E' nel while che va riempito l'array e poi restituito al main chiamante.
    Roberto Dungino

  8. #8
    Originariamente inviato da dungino
    Ho risolto, il problema non è il while ma il funzionamento di mysql_fetch_array().
    Il while così com'è messo va bene, ma mysq_fetch_array() non restituisce un array associativo, ma cerca di sfruttare l'array associativo come appoggio, in realtà quando si esce dalla condizione, ossia quando mysql_fetch_array() restituisce false esce dal ciclo e l'ultimo valore ritornato è null, quindi abbiamo un array di un elemento con valori null.
    E' nel while che va riempito l'array e poi restituito al main chiamante.
    la cosa non e' precisissima.

    mysql_fetch_array() rende UN record del result set (lo stesso record) con DUE indici: uno numerico e l'altro associativo che corrispondono al risultato rispettivamente di mysql_fetch_row() e mysql_fetch_assoc(). Quando arriva alla fine del buffer di accumulo del result set rende un NULL ed il ciclo while termina.

    Ti ho precisato che il while a quel modo c'entrava nulla perche' scorre tutto il result set fino ad arrivare al NULL sovrascrivendo tutto il precedente. Quindi o trasferisci in un array multidimensionale sempre con un ciclo while, oppure esporti il riferimento dell'id number della risorsa resa da mysql_query ed estrai dopo i tuoi valori dal result set, fuori dalla funzione.

    Tieni presente sempre che mysql_fetch_array() rende DUE indici per ogni record, quindi i valori estratti saranno raddoppiati.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.