Visualizzazione risultati 1 fino 18 di 18

Discussione: [php] Fatal error: Only variables can be passed by reference (asort())

  1. #1
    Guest

    Exclamation [php] Fatal error: Only variables can be passed by reference (asort())

    La seguente funzione mi restituisce questo errore, premetto che in locale funziona tutto perfettamente

    Codice PHP:
    asort($articolo[2]);
    l'errore è

    Codice:
    Fatal error:  Only variables can be passed by reference
    Chi ha qualche consiglio da darmi???
    sinceramente non so nemmeno se il codice è giusto, perchè praticamente riordino un array multidimensionale quindi non so se è il modo migliore per farlo

  2. #2
    Guest

    Predefinito

    Bè, per prima cosa prova a stampare $articolo[2]


    ciao!

  3. #3
    Guest

    Predefinito

    Ammazza che velocità :D, $articolo[2] mi da array dato che è un array multidimensionale

  4. #4
    Guest

    Predefinito

    Eh sì, dovresti usare print_r($articolo[2]);
    Edit: hai detto multidimensionale? E' qui il problema: queste funzioni per l'ordinamento funzionano solo su array ad una dimensione.
    Per gli altri c'è array_multisort()


    Ciao!
    Ultima modifica di debug : 11-11-2008 alle ore 17.30.27

  5. #5
    Guest

    Predefinito

    bene, quello che contiene è Array ( [1] => 3 ) a questo punto mi viene il dubbio, essendoci un solo valore è possibile che dia errore per quello?

    Edit: allora ho dato un occhiata alla funzione, dovrei fare così?

    Codice PHP:
    array_multisort($articolo[2], SORT_DESC, SORT_NUMERIC);
    Ultima modifica di toolpirateswar : 11-11-2008 alle ore 17.35.53

  6. #6
    Guest

    Predefinito

    Ho fatto un paio di prove, il problema sembra essere il fatto che non passi una variabile "semplice" che rappresenti un array.
    Infatti, provando ad assegnare lo stesso array ad una nuova variabile, e passando quest'ultima alla funzione in questione tutto funziona correttamente.


    Ciao!

  7. #7
    Guest

    Predefinito

    Non mi da più l'errore, ma non produce nemmeno il risultato che dovrebbe produrre

    Edit, forse però non ho capito cosa devo fare, perchè io ho fatto così

    Codice PHP:
    $provvisoria = $articolo[2];

    asort($provvisoria);

    foreach(
    $provvisoria as $key => $value)
    Ultima modifica di toolpirateswar : 11-11-2008 alle ore 17.46.35

  8. #8
    Guest

    Predefinito

    EDIT: sì, hai fatto ciò che intendevo, ma:

    Citazione Originalmente inviato da toolpirateswar Visualizza messaggio
    bene, quello che contiene è Array ( [1] => 3 ) a questo punto mi viene il dubbio, essendoci un solo valore è possibile che dia errore per quello?



    Ciao!

  9. #9
    Guest

    Predefinito

    Perchè ti spiego, in pratica questa parte mi serve per riordinare degli articoli in base ad un numero associato ad essi, per fare un menù con capitolo e sotto capitoli ordinati, in pratica se io metto come ho scritto mi fa il menù col capitolo, ma quando schiaccio su di esso e dovrebbe aprirsi il sotto capitolo sparisce tutto, in locale non lo fa, in locale se clicco sul capitolo sotto mi scrive il nome dei vari sotto capitoli, che tra parentesi non danno errori

  10. #10
    Guest

    Predefinito

    Senza vedere nessuno script è difficile dirti qualcosa.
    Hai letto il mio quote sopra? Intendevo dire che non puoi vedere risultati di ordinamento se l'array che ordini ha un solo elemento!


    Ciao!

  11. #11
    Guest

    Predefinito

    Quello che mi scazza è che in locale funziona tutto perfettamente

    Codice PHP:
    for($i=0; $i<$num; $i++) // $num è il numero di risultati
    {
    $articolo[2][$i] = mysql_result($domanda,$i,"posizione");// posizione contiene dei numeri
    }

    asort($articolo[2]);

    $i=0;
    foreach(
    $articolo[2] as $key => $value)
    {
    $articolo2[$i] = $articolo[0][$key];// $articolo[0] contiene i titoli degli articolo
    $i++
    }
    Questo è quello che deve fare lo script, manca la parte di stampa degli articoli
    Ultima modifica di toolpirateswar : 11-11-2008 alle ore 18.08.46

  12. #12
    Guest

    Predefinito

    Prova così:
    Codice PHP:
    $provvisoria=$articolo[2];
    asort($provvisoria);
    while(list(
    $key,$value)=each($provvisoria)){
    echo(
    $kei.' '.$value.'<br>');
    }

  13. #13
    Guest

    Predefinito

    Ma porca vacca, il problema me lo da lì, ma non è così, perchè usando

    Codice PHP:
    $provvisoria=$articolo[2];

    asort($provvisoria);

    foreach(
    $provvisoria as $key => $value)
    {
    echo
    $key.' '.$value.'<br>';
    }
    I risultati sono giusti, ma quando clicco sul link e me lo ricarica fa casini

  14. #14
    Guest

    Predefinito

    Definisci "fa casini", magari illustrando qualche esempio.


    Ciao!

  15. #15
    Guest

    Predefinito

    Penso di essere arrivato alla soluzione, mi sono ricordato, se non ricordo male che quì se c'è un nome di un campo del db e una variabile passata con GET o con POST e il nome è uguale viene sovrascritta, se non mi ricordo male, era una cosa del genere, mi aveva già fatto sclerare per giorni la prima volta

    Edit, infatti cambiando il nome della variabile get tutto funziona a meraviglia, grazie mille di esservi impegnati per trovare una soluzione, anche se alla fine l'qrrore che veniva fuori era frutto di quest'altro errore, e quindi quello su cui abbiamo lavorato non era un errore

    Codice PHP:
    asort($articolo[2]);
    si può fare e funziona, il fatto è che non so per quale motivo quì su altervista non si possono avere nome delle tabelle e variabili di tipo get con lo stesso nome
    Ultima modifica di toolpirateswar : 11-11-2008 alle ore 18.41.08

  16. #16
    Guest

    Predefinito

    ti riferisci alla direttiva register_global, che settata su Off disabilita l'accesso alle variabili passate via get/post/cookie senza l'uso dei rispettivi array superglobali $_GET/_POST/_COOKIE


    Ciao!

  17. #17
    Guest

    Predefinito

    Io mi riferisco al fatto che se setto una variabile con
    Codice PHP:
    $_GET['articolo']
    e poi faccio una ricerca sul db, il risultato di
    Codice PHP:
    mysql_result($domanda,$i,"articolo");
    mysql_result mi da come risultato il valore contenuto nell'array superglobale $_GET['articolo'], forse è il contario, comunque fatto stà che uno assume il valore dell'altro, per risolvere il problema basta o cambiare la colonna del db, ma è un casino, o semplicemente cambiare il nome della variabile get, e il gioco è fatto, tutto ciò è detto per chi magari si trova con lo stesso problema

  18. #18
    Guest

    Predefinito

    Guarda non uso quasi mai mysal_results() ma a me utilizzando le classiche mysql_query() e mysql_fetch_array() non ha mai dato questo tipo di problemi.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •