Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55

    [PHP SQL] explode e implode

    Ciao a tutti di nuovo.

    Chiedo umilmente un aiuto:

    ho una colonna nel db con nome.cognome;
    devo avere un output su schermo di nomecognome;

    SELECT * FROM tabella

    $passo1 = explode("." , $row[nomi]);
    $passo2 = implode("" , $passo1);

    echo "$passo2"

    il problema (implode a parte. devo ancora arrivarci) è che non visualizza niente.

    L'unica cosa è che se metto echo "$passo1" mi stampa sullo schermo "array",
    Mentre se scrivo echo "$passo1[0]" (o [1]) non compare niente.

    Cosa puo' essere ?

    P.S. se conoscete altre soluzioni per il medesimo scopo ... ben vengano

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Sicuro che $row['nomi'] contenga il valore di partenza ?

    Io inizierei a fare un bell'echo di quello.

    No pvt per sollecitare risposte, grazie.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55
    ciao.

    Si, ho provato e $row[nomi] lo stampa perfettamente ...

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    explode restituisce un array per l'appunto quindi per recuperare le porzioni che hai esploso devi riferirti alle chiavi.

    Codice PHP:
    $nome 'mario.rossi';
    $separa explode('.',$nome);
    echo 
    $separa[0].' '.$separa[1]; 
    Quando vuoi vedere cosa contiene il tuo array scrivi

    print_r($passo1);

    Ti consiglio comunque di usare due campi nella tabella del tuo db, uno per il nome e uno per il cognome se vuoi fare le cose bene.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55
    niente da fare ...

    non funge

    $query = "SELECT * FROM nomi WHERE id='$id'";
    $dfd = explode(".", $row[nomecognome]);
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result))
    {echo "
    <table>
    <tr>
    <td>$dfd[0]</td><td>$dfd[1]</td>

    ...

    se uso il metodo di nicola75ss mi visualizza .' '.

    cosa puo' essere ?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    L'explode lo devi fare dopo che esegui la query
    Codice PHP:
    $query mysql_query("SELECT * FROM nomi WHERE id='$id") or die(mysql_error() );
    $row mysql_fetch_assoc($query);
    $nomecognome explode('.',$row['nomecognome']);
    $altrocampo1 $row['altrocampo1'];
    $altrocampo2 $row['altrocampo2'];
    echo 
    $nomecognome[0].' '.$nomecognome[1];
    echo 
    $altrocampo1;
    // eccetera 
    Se invece li vuoi separare da sql

    codice:
    select substring_index(nomecognome,'.',1) as nome, substring_index(nomecognome,'.',-1) as cognome 
    from nomi where id = x
    Usa due campi per memorizzare nome e cognome.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55
    ciao e grazie per la velocità

    userei 2 campi, solo che importo la lista da foglio excel convertito in sql da un programmino
    apposta (importato alla fine da phpmyadmin); quindi mi trovo ad imortare migliaia di nome.cognome.

    Altrimenti dovrei fare una query che mi crea i 2 campi (nome e cognome) e mi scompone il nome.cognome.

    Che vantaggio avrei (in tutti i termini) a gestire la cosa da sql piuttosto che da php ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55
    allora...

    se uso questa forma (quella di nicola75):

    $query = "SELECT * FROM nomi WHERE id='$id'";
    $result = mysql_query($query, $db);


    $row = mysql_fetch_array($result);

    $dividi = explode('.', $row['nomecognome']);
    echo $dividi[0];
    echo $dividi[1];

    tutto ok

    Se lo metto in un ciclo while (prima del while):

    $query = "SELECT * FROM Listino WHERE id='$id'";
    $result = mysql_query($query, $db);
    $dividi = explode('.', $row['nomecognome']);
    while ($row = mysql_fetch_array($result))
    {echo "
    <tr>
    <td>Produttore:

    </td><td>$dividi[0]

    </td>
    </tr>

    ...
    ";}



    non si visualizza $dividi, ma il resto dei dati si.

    Se lo metto dopo il while, non si visualizza niente.

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Se devi estrarre solo un record non hai bisogno di ciclare. Comunque funziona lo stesso.

    Codice PHP:
    while ($row mysql_fetch_array($result))
    $dividi explode('.'$row['nomecognome']);
    {echo 
    "
    <tr>
    <td>
    $dividi[0]</td>
    <td>
    $dividi[1]</td>
    </tr>"
    ;


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.