Visualizzazione risultati 1 fino 14 di 14

Discussione: [php/mysql]ordinare risultati in 2 colonne

  1. #1
    L'avatar di powser
    powser non è connesso Moderatore
    Data registrazione
    29-12-2003
    Residenza
    Ragusa
    Messaggi
    2,917

    Predefinito [php/mysql]ordinare risultati in 2 colonne

    Spero di aver postato nella sezione giusta (ormai tutte le discussioni che incontro cominciano così)

    Spiego il mio problema, dovrei incolonnare i dati di un db su una tabella con 2 colonne faccio un esempio:

    nome1 || nome2
    sito1 || sito2
    ______________
    nome3 || nome4
    sito3 || sito4
    etc etc...

    detto in parole povere
    Codice HTML:
    <tr>
    <td>nome1<br>sito1</td>
    <td>nome2<br>sito2</td>
    </tr>
    <tr>
    <td>nome3<br>sito3</td>
    <td>nome4<br>sito4</td>
    </tr> etc etc
    Grazie per l'aiuto a tutti
    "I have something to say, it's better to burn out than to fade away..." Victor Kruger/The Kurgan

    My Site

    La risposta alla tua domanda, la trovi su http://forum.altervista.org basta fare una ricerca!

  2. #2
    Guest

    Predefinito

    se ho capito bene devi fare cosi:
    crei una tabella con 2 campi:
    Codice:
    CREATE TABLE nome_tabella (
    id int(10) UNSINGED AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(255),
    sito VARCHAR(255)
    );
    poi incolonni i risultati cosi:
    Codice PHP:
    $a = 1;
    $query = mysql_query("SELECT * FROM nome_tabella", $db);
    echo
    "<table><tr>\n";
    while(
    $row = mysql_fech_object($query) )
    {
    echo
    "<td>{$row->nome}<br>{$row->sito}</td>\n";
    if(
    $a == 2 )
    {
    echo
    "</tr>\n<tr>\n";
    $a = 1;
    }
    $a++;
    }
    echo
    "</tr></table>";
    ciao ^__^
    Ultima modifica di jostock : 17-01-2006 alle ore 15.47.18

  3. #3
    L'avatar di powser
    powser non è connesso Moderatore
    Data registrazione
    29-12-2003
    Residenza
    Ragusa
    Messaggi
    2,917

    Predefinito

    ok funziona Grazie
    Codice PHP:
    $a = 1;
    $query = mysql_query("SELECT * FROM nome_tabella", $db);
    echo
    "<table><tr>\n";
    while(
    $row = mysql_fech_object($query) )
    {
    echo
    "<td>{$row->nome}<br>{$row->sito}</td>\n";
    if(
    $a == 2 )
    {
    echo
    "</tr>\n<tr>\n";
    $a = 0;
    }
    $a++;
    }
    echo
    "</tr></table>";
    ci voleva lo 0 al posto dell'1

    ora un'altra domanda, e se voglio farlo in ordine decrescente??
    con un ORDER BY ..... DESC non funziona perchè mi da sempre lo stesso risultato cioè l'ultimo dato inserito nel db!
    Grazie
    Ultima modifica di powser : 17-01-2006 alle ore 19.36.35
    "I have something to say, it's better to burn out than to fade away..." Victor Kruger/The Kurgan

    My Site

    La risposta alla tua domanda, la trovi su http://forum.altervista.org basta fare una ricerca!

  4. #4
    Guest

    Predefinito

    prova con order BY ASC

    ciao ^__^

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da powser
    ... ora un'altra domanda, e se voglio farlo in ordine decrescente??
    con un ORDER BY ..... DESC non funziona perchè mi da sempre lo stesso risultato cioè l'ultimo dato inserito nel db!
    Grazie
    Più in generale, questa è la query che devi eseguire:

    SELECT * FROM nome_tabella ORDER BY campo1 [ASC | DESC] [, campo2 [ASC | DESC]]

    Puoi specificare uno solo tra i valori ASC (ordine crescente, opzionale) o DESC (ordine decrescente da specificare). Se specifichi più campi, i dati sono ordinati secondo il primo campo e, dove questi hanno lo stesso valore, sono ordinati per il secondo campo.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    L'avatar di powser
    powser non è connesso Moderatore
    Data registrazione
    29-12-2003
    Residenza
    Ragusa
    Messaggi
    2,917

    Predefinito

    Citazione Originalmente inviato da dementialsite
    Più in generale, questa è la query che devi eseguire:

    SELECT * FROM nome_tabella ORDER BY campo1 [ASC | DESC] [, campo2 [ASC | DESC]]

    Puoi specificare uno solo tra i valori ASC (ordine crescente, opzionale) o DESC (ordine decrescente da specificare). Se specifichi più campi, i dati sono ordinati secondo il primo campo e, dove questi hanno lo stesso valore, sono ordinati per il secondo campo.

    Stammi bene...
    su una tabella di 14 dati inseriti, mi scirve 14 volte ogni dato se uso l'ORDER BY o decrescente o crescente è la stessa cosa!
    Citazione Originalmente inviato da jostok
    prova con order BY ASC

    ciao ^__^
    avevo provato tutti e due i modi
    "I have something to say, it's better to burn out than to fade away..." Victor Kruger/The Kurgan

    My Site

    La risposta alla tua domanda, la trovi su http://forum.altervista.org basta fare una ricerca!

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da powser
    ... su una tabella di 14 dati inseriti, mi scirve 14 volte ogni dato se uso l'ORDER BY o decrescente o crescente è la stessa cosa! ...
    Strano, eppure e' quella la sintassi da scrivere... certo, avendo anch'io avuto dei problemi con delle query oltre il "SELECT ... FROM ... WHERE ..." ti potrei consigliare di farti da te l'algoritmo di ordinamento (se ti puo' essere utile, ti puoi riferire a qualsiasi campo all'interno della tabella con la sintassi $query[nr_riga][chiave_tabella])

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  8. #8
    L'avatar di powser
    powser non è connesso Moderatore
    Data registrazione
    29-12-2003
    Residenza
    Ragusa
    Messaggi
    2,917

    Predefinito

    Ok, vedrò cosa mi esce fuori, grazie per le dritte
    comunque se qualcuno ha un'altra soluzione... ben venga
    cià
    "I have something to say, it's better to burn out than to fade away..." Victor Kruger/The Kurgan

    My Site

    La risposta alla tua domanda, la trovi su http://forum.altervista.org basta fare una ricerca!

  9. #9
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    usa un mysql_fetch_array
    e crea le query tipo:
    $query="SELECT * FROM nome_tabella ORDER BY id ASC";
    $query="SELECT * FROM nome_tabella ORDER BY id DESC";

    il mysql_fetch_array ti crea una array associativo per ogni campo,lo metti in un while e ti stampa tutto in base all'ordine che vuoi..
    ti fai tipo:

    $risultato = mysql_query($query, $database);
    $contatore=0;
    echo"<tr>";
    while($blabla = mysql_fetch_array($risultato)){
    $nome=$blabla['nome'];
    $sito=$blabla['sito'];
    $contatore=$contatore+1;
    echo"<td>$nome<br>$sito</td>
    if($contatore==2){
    echo"</tr>";
    echo"<tr>";
    $contatore=0;}
    }
    </tr>


    cosi' dovrebbe fungere,ciao
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  10. #10
    Guest

    Predefinito

    Visto che tutti ci hanno provato... io provo a darti una soluzione secondo me più semplice...
    Utilizzando la stessa tabella proposta prima, utilizza questo codice:

    <table ...>
    <tr>
    <td>colonna1</td>
    <td>colonna2</td>
    <?
    $result = mysql_query ("SELECT * FROM nome_tabella ORDER BY nome DESC;", $connessione) or die("Blabla");
    for ($i=0;$i<db_num_rows($result);$i++) {
    $elemento = db_fetch_array ($result);
    if ($i % 2 == 0) echo "</tr><tr>";
    ?>
    <td><?=$elemento["nome"] ?><br><?=$elemento["sito"] ?></td>
    <?
    }
    ?>
    </tr>
    </table>

    In questo modo stamperai le varie righe in modo decente senza casini vari... mi sembra piuttosto lineare il codice.

    Se vuoi ordinarti per conto tuo i risultati, puoi utilizzare quest'algoritmo:

    Ti prepari i risultati in questo modo

    $elementi = array();
    $result = mysql_query ($query, $connessione) or die ("blabla");
    for ($i=0;$i<mysql_num_rows($result);$i++) {
    $elementi[$i] = mysql_fetch_array ($result);
    }
    for ($i=0;$i<count($elementi)-1;$i++) {
    for ($k=$i+1;$k<count($elementi);$i++) {
    if ($elementi[$i]["campo"] < $elementi[$k]["campo"]) {
    $temp = $elementi[$i];
    $elementi[$i] = $elementi[$k];
    $elementi[$k] = $temp;
    }
    }
    }

    In questo modo ordinerai i risultati in ordine decrescente rispetto a "campo" che può essere nome o sito o quello che ti pare. Mentre se vuoi ordinarlo in ordine decrescente, puoi invertire il segno nella if da < a >.

  11. #11
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Citazione Originalmente inviato da ivano85
    Visto che tutti ci hanno provato... io provo a darti una soluzione secondo me più semplice...
    Utilizzando la stessa tabella proposta prima, utilizza questo codice:

    <table ...>
    <tr>
    <td>colonna1</td>
    <td>colonna2</td>
    <?
    $result = mysql_query ("SELECT * FROM nome_tabella ORDER BY nome DESC;", $connessione) or die("Blabla");
    for ($i=0;$i<db_num_rows($result);$i++) {
    $elemento = db_fetch_array ($result);
    if ($i % 2 == 0) echo "</tr><tr>";
    ?>
    <td><?=$elemento["nome"] ?><br><?=$elemento["sito"] ?></td>
    <?
    }
    ?>
    </tr>
    </table>

    In questo modo stamperai le varie righe in modo decente senza casini vari... mi sembra piuttosto lineare il codice.

    Se vuoi ordinarti per conto tuo i risultati, puoi utilizzare quest'algoritmo:

    Ti prepari i risultati in questo modo

    $elementi = array();
    $result = mysql_query ($query, $connessione) or die ("blabla");
    for ($i=0;$i<mysql_num_rows($result);$i++) {
    $elementi[$i] = mysql_fetch_array ($result);
    }
    for ($i=0;$i<count($elementi)-1;$i++) {
    for ($k=$i+1;$k<count($elementi);$i++) {
    if ($elementi[$i]["campo"] < $elementi[$k]["campo"]) {
    $temp = $elementi[$i];
    $elementi[$i] = $elementi[$k];
    $elementi[$k] = $temp;
    }
    }
    }

    In questo modo ordinerai i risultati in ordine decrescente rispetto a "campo" che può essere nome o sito o quello che ti pare. Mentre se vuoi ordinarlo in ordine decrescente, puoi invertire il segno nella if da < a >.
    questo credo che sia il migliore
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  12. #12
    Guest

    Talking

    Citazione Originalmente inviato da Xsescott
    questo credo che sia il migliore
    Grazie ... beh, 4 anni di php serviranno pure a qualcosa, no?

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da ivano85
    Visto che tutti ci hanno provato... io provo a darti una soluzione secondo me più semplice...
    Utilizzando la stessa tabella proposta prima, utilizza questo codice:

    <table ...>
    <tr>
    <td>colonna1</td>
    <td>colonna2</td>
    <?
    $result = mysql_query ("SELECT * FROM nome_tabella ORDER BY nome DESC;", $connessione) or die("Blabla");
    for ($i=0;$i<db_num_rows($result);$i++) {
    $elemento = db_fetch_array ($result);
    if ($i % 2 == 0) echo "</tr><tr>";
    ?>
    <td><?=$elemento["nome"] ?><br><?=$elemento["sito"] ?></td>
    <?
    }
    ?>
    </tr>
    </table>

    In questo modo stamperai le varie righe in modo decente senza casini vari... mi sembra piuttosto lineare il codice.

    Se vuoi ordinarti per conto tuo i risultati, puoi utilizzare quest'algoritmo:

    Ti prepari i risultati in questo modo

    $elementi = array();
    $result = mysql_query ($query, $connessione) or die ("blabla");
    for ($i=0;$i<mysql_num_rows($result);$i++) {
    $elementi[$i] = mysql_fetch_array ($result);
    }
    for ($i=0;$i<count($elementi)-1;$i++) {
    for ($k=$i+1;$k<count($elementi);$i++) {
    if ($elementi[$i]["campo"] < $elementi[$k]["campo"]) {
    $temp = $elementi[$i];
    $elementi[$i] = $elementi[$k];
    $elementi[$k] = $temp;
    }
    }
    }

    In questo modo ordinerai i risultati in ordine decrescente rispetto a "campo" che può essere nome o sito o quello che ti pare. Mentre se vuoi ordinarlo in ordine decrescente, puoi invertire il segno nella if da < a >.
    questo codice mi sembra molto complicato e poi le funzioni db_* non esitono neanche...
    non provo neanche ad usarlo...

    ciao ^__^

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da jostock
    questo codice mi sembra molto complicato e poi le funzioni db_* non esitono neanche...
    non provo neanche ad usarlo...

    ciao ^__^
    mmm... si scusami... intendevo mysql_ al posto di db_

    vabbè... fai come vuoi...

Regole di scrittura

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