Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    152

    Dividere risultati per iniziale

    Salve a tutti . Spero che il titolo sia abbastanza chiaro
    Avrei bisogno di una mano .
    Faccio una query , ricevo una serie di nomi come risultato .
    Vorrei dividerli per iniziale , ovvero una cosa del genere :
    A
    attore1 , attore2, attore3 ...
    B
    Battore1, Battore2,battore3
    C
    ...

    Primo quesito . Per trovare l'iniziale del nome ho usato la funzione substr() , substr($nomeattore,0,1). Va bene , o ne esiste una + specifica ?
    Secondo quesito . Per scrivere tutti i 21 casi è proprio necessario fare 21 cicli if ? Non c'è una via + agevole ? io ho qualche prob con gli array , forse con questi si puo' fare ?
    Terzo ed ultimo quesito . Ho provato a scrivere il codice (mettendo solo il caso 'A') . Ve lo incollo :
    codice:
    $query = "SELECT DISTINCT IDattore,attore FROM attore ORDER BY attore";
    $result = mysql_query($query, $db);
    echo "<font size=\"1\">Attori Disponibili</font>
    ";
    while ($row = mysql_fetch_array($result))
    { 
    $attore = $row[attore];
    $iniziale = substr("$attore",0,1);
    if ($iniziale == 'A') {
    echo '<h3>A</h3>
    ';
    echo "$attore - "; }
    }
    Ora , come potete ben vedere per ogni nome mi appare anche "<h3>A</h3>
    " e questo non va bene
    Commmmo faccio ???
    Grazie a todos !
    Cisi
    non so

  2. #2
    Utente di HTML.it L'avatar di RokStar
    Registrato dal
    Dec 2001
    Messaggi
    937
    Puoi usare LIKE nella query.

    SELECT tuoicampi FROM tua_tabella WHERE nome_attore LIKE 'A%'

    In questo modo seleziona tutti quei record in cui il nome_attore inizia con A, se poi metti anche un ORDER BY nome_attore alla fine della query te li mette proprio in ordine.

    Per ciclarlo bene potresti fare un array contenente tutte le lettere dell'alfabeto (maiuscole) del tipo:
    Codice PHP:
    $iniziali = array("A""B""C""D".... ecc ecc); 
    e poi un foreach:
    Codice PHP:
    foreach($iniziali as $iniziale) {
      
    $QUERY "SELECT tuoicampi FROM tuatabella WHERE nome_attore LIKE '".$iniziale."%' ORDER BY nome_attore";
      
    $result mysql_query($QUERY);
      echo 
    $iniziale
    e a questo punto:
    Codice PHP:
      if (@mysql_num_rows($result)) {
          while (
    $row mysql_fetch_array($result)) {
          
    // qui metti i vari echo per l'output
          
    }
      }

    Se hai ancora dubbi chiedi.
    che ce l'hai tre e cinco? Tre e cinco?!?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    152
    hmm .. ti ringrazio , ma non mi viene fuori nessun risultato .
    Non è che devo dire che $iniziale è un elemento di $iniziali ? Boh , la butto li' .
    Grazie!!!
    non so

  4. #4
    Utente di HTML.it L'avatar di RokStar
    Registrato dal
    Dec 2001
    Messaggi
    937
    Uhm, prova a fare un echo $QUERY; per vedere cosa viene fuori.

    foreach (array as element);

    quindi foreach ($elementi as $elemento) tradotto vuol dire che per ogni valore di $elementi ti crea una variabile $elemento.
    che ce l'hai tre e cinco? Tre e cinco?!?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    152
    Grazie Rok .. allora . Prima mi ero dimenticato di dire che a video mi venivano stampate le iniziali , tutti gli elementi dell'array , dovuto a
    codice:
    echo $iniziale."
    ";
    Grazie anche per la spiegazione sull'array .. son duro .
    Aggiungendo echo $QUERY; mi vengon fuori , sotto le iniziali le query che dovrebbe fare e mi sembran giuste .
    Credo che il problema sia la scrittura dei risultati . Non ho mai lavorato (niubbo) con
    Codice PHP:
    mysql_num_rows($result)) { 
    quindi forse il problema sta proprio qui . Come faccio a stampare di volta in volra il nome dell'attore che sta nel campo nomeattore ? la butto li' row['nomeattore'] ?

    Dopo aver scrritto tutta sta cosa , mi è venuto in mente di provarci .. beh , era quello . Che bischero .
    Ti ringrazzzzio !!!
    non so

  6. #6
    Utente di HTML.it L'avatar di RokStar
    Registrato dal
    Dec 2001
    Messaggi
    937
    La funzione in questione:

    mysql_num_rows($result)

    è una funzione che conta i risultati della query eseguita e restituisce il numero di record che sono stati trovati.

    Il controllo
    if (@mysql_num_rows($result)) {

    (la @ è per evitare che vengano mostrati errori)

    serve ad evitare di iniziare il while ($row = mysql_fetch_array($result)) con un $result avente valore di FALSE, che in questo caso genererebbe un errore che verrebbe visualizzato.
    che ce l'hai tre e cinco? Tre e cinco?!?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    152
    Grazie per le spiegazioni e per l'aiuto !!
    non so

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    152
    Ne approfitto ancora un attimo .. In questo modo gli elementi dell'array sono scritti tutti , indipendentemente che ci siano attori con quell'iniziale o meno . E' complicato inserire un controllo che , nel caso non ci siano venga scritta una frase standard , tipo "presto" , o simili ?

    grazie ancora !!
    non so

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.