Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    come mai count mi restituisce il doppio?

    Perchè la funzione "count" mi restituisce un numero di campi dell'array DOPPIO?

    Questo è lo script:
    Codice PHP:
    $sql "SELECT * FROM categories where id_user='$iduser'";
    $result mysql_query($sql);
    $catt mysql_fetch_array($result);

    $totarr count($catt);
    echo 
    $totarr
    io ho 16 campi (id, id_user, modifica, inserimaneto, giallom verde, rosso, blu, ...)
    ma il risultato è 32.

    Mi sapreste dire come mai?
    mi falsa un ciclo while
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    intanto essende la struttura della tabella statica pupoi fare un ciclo di 16 no?
    poi prova a fare un print_r($catt) e vedrai perchè sono 32

  3. #3
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    si l'ho fatto
    mi da anche la posizione:

    0
    bianco
    1
    verde
    2
    grigio
    3
    blu
    ...
    ...
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  4. #4
    mysql_fetch_array() restituisce un array che contiene per ogni campo 2 elementi: uno individuato con chiave numerica e uno con chiave letterale corrispondente al nome del campo.

    Per renderti conto e capire meglio, fai così:
    Codice PHP:
    $sql "SELECT * FROM categories where id_user='$iduser'"
    $result mysql_query($sql); 
    $catt mysql_fetch_array($result); 

    echo 
    '<pre>';
    print_r($catt);
    echo 
    '</pre>'
    al contrario mysql_fetch_row() ti darà l'array solo con chiavi numeriche;
    mentre mysql_fetch_assoc() ti darà l'array solo con chiavi letterali.

    quindi mysql_fetch_array() è una sorte di unione delle due funzioni precedenti.

  5. #5
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Fantastico Oly!!
    Sei stato davvero chiaro ed esauriente. E chi se lo scorda più ora!!!
    Grazie per l'aiuto ad entrambi!
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  6. #6
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Oly ho fatto così:
    Codice PHP:
    $sql "SELECT * FROM categories where id_user='$iduser'";
    $result mysql_query($sql);
    $catt mysql_fetch_assoc($result);

    $arraycat = array(0,0,0,0,'giallo','verde','rosso','blue','grigio','nero');

    $totarr count($catt);
    $nmr 4;

    while(
    $nmr<$totarr){
        if(
    $catt[$nmr]==1){
            
    $categorand[] = $arraycat[$nmr];
        }
        
    $nmr++;
    }
    shuffle($categorand);
    $random_category $categorand[0];
    echo 
    "numero totale elementi array: ".$totarr;
    echo 
    "la categoria casuale è ".$random_category
    ma mi da errore.
    Mi dice che shuffle ha bisogno di un parametro, quindi categorand non viene popolato, quindi totarr non viene valorizzato... e quindi $catt non viene valorizzato
    Con mysql_fetch_array() andava, ma con mysql_fetch_assoc non va
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  7. #7
    ... mi spieghi cosa vuoi fare in concreto?... forse facciamo prima...
    1) prima di inserire un elemento in un array lo devi creare
    $categorand= array();
    inizialmente sarà vuoto e progressivamente a seconda di ciò che succederà nel ciclo si riempirà.

    In ogni caso ciò è un NOTICE cioè un errore non molto grave. Prendi questa espressione con le molle... dato che di per sè non è grave ma le conseguenze potrebbero esserle... infatti nel tuo caso $categorand non solo non viene creato come array (vuoto) ma il ciclo while e la relativa condizione if non inseriscono nulla...
    ERGO: alla funzione shuffle stai passando una variabile non esistente!! da qui l'errore a video

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da oly1982
    1) prima di inserire un elemento in un array lo devi creare
    $categorand= array();
    tu guardi troppi film

  9. #9
    Originariamente inviato da luca200
    tu guardi troppi film
    hai ragione ... mi sono sbagliato... eppure ero convinto di questa cosa... chiedo venia.

    Cmq nel suo caso dato che l'array si valorizza sotto condizione (quindi può essere inesistente) la soluzione da me proposta è esatta... (cmq riconosco lo sbaglio e questa nn è una scusante)

  10. #10
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Dunque, il mio scopo è quello di avere un risultato RANDOM dalla tabella categoria per l'utente selezionato.

    La tabella categoria ha 4 campi prima delle categorie vere e proprie.
    Le categorie hanno valore 0 o 1.

    Praticamente mi deve restituire, a caso, un nome del campo tabella dove il valore sia 1.

    Se sono l'utente appartenente alla categoria giallo, verde e blu il risultato potrà essere o giallo o verde o blu.
    Se sono un utente appartenente alla categoria viola, il risultato sarà solamente viola.

    ...

    Ma quindi Oly che fò? ...lascio mysql_fetch_array per evitare l'errore?
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

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 © 2024 vBulletin Solutions, Inc. All rights reserved.