Visualizzazione risultati 1 fino 15 di 15

Discussione: Aiuto per condizioni if & else

  1. #1
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito Aiuto per condizioni if & else

    Salve ragazzi!
    Sorry ma non sapevo che titolo assegnare (spero veda bene).
    Allora ho questo pezzo di codice che fa parte di uno script:
    Codice PHP:
    echo '<div id="forum">
    <ol>'
    ;
    $request2 = db_query("
    SELECT
    m.subject, t.ID_TOPIC, t.numReplies, t.numViews
    FROM
    {$db_prefix}messages AS m, {$db_prefix}topics AS t
    WHERE m.ID_BOARD =
    $boardid AND m.ID_MSG = t.ID_FIRST_MSG
    ORDER BY t.ID_LAST_MSG DESC
    LIMIT
    $start,$maxtopics", __FILE__, __LINE__);
    while(
    $row2 = mysql_fetch_assoc($request2))
    {
    echo
    '
    <li>
    <a href="'
    . $boardurl . '/' . $subdirname . 'lofi.php?topic=' . $row2['ID_TOPIC'] . '.0" title="' . $row2['subject'] . '">' . $row2['subject'] . '</a>
    -
    <span>('
    . $row2['numReplies'] . ' Risposte - Visto ' . $row2['numViews'] . ')</span>
    </li>'
    ;
    }
    echo
    '
    </ol>
    </div>'
    ;
    Il quale serve per stamparmi queste list: http://darkwolf.altervista.org/forum/lofi.php?board=3.0
    Codice:
    <div id="forum">
     <ol>
      <li>
       <a href="http://darkwolf.altervista.org/forum/lofi.php?topic=8.0" title="Segnalazione Errori">Segnalazione Errori</a>
        - 
       <span>(2 Risposte - Visto 471)</span>
      </li>
     </ol>
    </div>
    Funziona bene ma vorrei inserire una condizione nel caso in cui la board sia "vuota" es: http://darkwolf.altervista.org/forum...php?board=28.0
    in quanto così com'è adesso lascia solo una pagina senza contenuto e non "valida":
    Codice:
    <div id="forum">
     <ol>
     </ol>
    </div>
    (mancano i tag <li></li>)
    Quindi sarebbe meglio rimandarlo @$error (come se non avesse i permessi o la board non esistesse)
    es: http://darkwolf.altervista.org/forum...rd=999999999.0
    -
    In un altra porzione di codice (per la index) sono riuscito a fare una cosa simile:
    Codice PHP:
    echo '
    <ul>'
    ;
    while (
    $row2 = mysql_fetch_assoc($request2))
    {
    $b_count = db_affected_rows();
    if (
    $row2['numTopics'] !=0){
    echo
    '<li>
    <a href="'
    . $boardurl . '/' . $subdirname . 'lofi.php?board=' . $row2['ID_BOARD'] . '.0" title="' . $row2['name'] . '">' . $row2['name'] . '</a> - <span>(' . $row2['numPosts'] . ' Posts in ' . $row2['numTopics'] . ' Topics)</span>
    </li>'
    ;
    }else{
    echo
    '<li>
    '
    . $row2['name'] . ' - <span>(<em>Vuota</em>)</span>
    </li>'
    ;
    ma qui proprio non riesco
    Potete aiutarmi a risolvere?
    -
    NB: i link credo siano necessari a titolo di esempio, non contengono banner o simili quindi non credo possano essere considerati come "spam".
    Se così non fosse vi prego di scusarmi. Grazie :)
    Ultima modifica di darkwolf : 22-07-2008 alle ore 02.44.28 Motivo: + echo per la colorazione ;-)

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    puoi usare un flag per aprire la lista "in ritardo":
    Codice PHP:
    echo '<div>';

    $request2 = db_query( ... );
    $almeno_uno = false;

    while(
    $row2 = mysql_fetch_assoc($request2))
    {
    if (!
    $almeno_uno) {
    $almeno_uno = true;
    echo
    '<ol>';
    }
    echo
    '<li> ....</li>';
    }

    if (
    $almeno_uno)
    echo
    '</ol>';

    echo
    '</div>';
    In alternativa, invece di prendere una riga alla volta, puoi prendere tutti i risultati con un'unica chiamata a mysql_fetch_array(..., MYSQL_ASSOC), e poi fare un controllo sul numero di elementi dell'array ottenuto con count().
    Ultima modifica di dreadnaut : 22-07-2008 alle ore 02.09.30

  3. #3
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Grazie Dread, faccio qualche prova :D
    Ok funzia!!!
    http://darkwolf.altervista.org/forum...php?board=28.0
    Per impostare il redirect ($error o board=acaso) invece come posso fare?
    -
    Riedit: un ulteriore richiesta per questo script.
    Ho eliminato il numero di pagine quando non necessario ma non riesco a cambiare stile (ed eliminare <a href"..") alla pagina "attiva"
    Codice PHP:
    //Show Pages List
    // $totalpages = (int) $row['numTopics'] / $maxtopics;
    $totalpages = intval($row['numTopics'] / $maxtopics) + 1;
    if(
    $totalpages < 1)
    $totalpages = 1;

    if (
    $totalpages > 1)
    {
    echo
    '
    <div id="pagine">Pagine: '
    ;
    for(
    $i=1; $i <= $totalpages; $i++)

    {
    if(
    $i != $totalpages)
    echo
    '
    <a href="'
    . $boardurl . '/' . $subdirname . 'lofi.php?board=' . $boardid . '.' , (($i-1) * $maxtopics) . '" title="Pagina ' . $i . '">' . $i . '</a>,';
    else
    echo
    '
    <a href="'
    . $boardurl . '/' . $subdirname . 'lofi.php?board=' . $boardid . '.' , (($i-1) * $maxtopics) . '" title="Pagina ' . $i . '">' . $i . '</a>';
    }
    echo
    '
    </div>'
    ;
    Qui un esempio: http://darkwolf.altervista.org/forum...php?board=41.0 (vedi Pagine: 1, 2)
    Ultima modifica di darkwolf : 22-07-2008 alle ore 02.26.20

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

    Predefinito

    il redirect per quale caso? lista vuota?

    per il secondo problema devi tenere conto della pagina attuale e quando esegui il for nel controlli aggiungi:


    Codice:
    $paginaattuale = intval($start / $maxtopics)+1;
    
    
    if ....
    else 
       if($i == $paginaattuale && $i != $totalpages)
    echo "[".$i."],";
    else
       if($i == paginaattuale && $i == $totalpages);
    echo "[".$i."]";
    else...
    messo tra l'if e l'else.

    ciao
    Ultima modifica di Xsescott : 22-07-2008 alle ore 12.30.13
    "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

  5. #5
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    @Xsescott:
    Si intendo per la lista vuota
    Cioè è inutile stampare una pagina praticamente vuota quindi tanto vale mandarlo a $error
    Scusa forse l'ho piazzato male io ma... praticamente non ha effetto
    Codice PHP:
    echo '
    <div id="pagine">Pagine: '
    ;
    for(
    $i=1; $i <= $totalpages; $i++)
    {
    $paginaattuale = intval((($i-1) * $maxtopics) / $maxtopic);
    if(
    $i != $totalpages)
    echo
    '
    <a href="'
    . $boardurl . '/' . $subdirname . 'lofi.php?topic=' . $topicid . '.' , (($i-1) * $maxposts) , '" title="Pagina ' . $i . '">' . $i . '</a>,';
    else
    if(
    $i == $paginaattuale && $i != $totalpages)
    echo
    "[".$i."],";
    else
    if(
    $i == $paginaattuale && $i == $totalpages)
    echo
    "[".$i."]";
    else
    echo
    '
    <a href="'
    . $boardurl . '/' . $subdirname . 'lofi.php?topic=' . $topicid . '.' , (($i-1) * $maxposts) , '" title="Pagina ' . $i . '">' . $i . '</a>';
    }
    echo
    '
    </div>'
    ;
    Ultima modifica di darkwolf : 22-07-2008 alle ore 13.09.47

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    ma un redirect con header() non può essere fatto una volta cominciato l'output...

    Darkwolf, se vuoi fare le cose per bene devi fare tutte le query ed i controlli prima di iniziare a mostrare la pagina. Se tutto va bene riempi un po' di variabili con quello che deve apparire nella pagina, e poi li mostri. Altrimenti, redirezioni ad altre parti del sito.

    L'importante è sapere esattamente cosa apparirà in tutta la pagina prima mandarla in output.

  7. #7
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    ok grazie dreadnaut
    (vado a studiare in quanto non ho le idee ben chiare su come fare)
    -
    Edit: ok ho editato così:
    Codice PHP:
    if ($almeno_uno)
    echo
    '
    </ol>'
    ;
    if (empty(
    $almeno_uno))
    echo
    '
    La board è vuota'
    ;
    echo
    '
    </div>'
    ;
    archive_copy();

    -
    Riedit!
    Ok con alcune escamotage ho risolto quasi tutto
    (visto che il redirect non poteva essere fatto ho semplicemente clonato la pagina/css e quindi adesso è ok).
    Manca solo il menu di paginazione e poi è ok :)
    Ultima modifica di darkwolf : 22-07-2008 alle ore 15.57.08

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

    Predefinito

    hai notato che ho modificato il codice che ho postato?
    prova con quello, dovrebbe andare.
    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

  9. #9
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Citazione Originalmente inviato da Xsescott Visualizza messaggio
    hai notato che ho modificato il codice che ho postato?
    prova con quello, dovrebbe andare.
    ciao
    ho riprovato (dopo aver corretto due errori di sintassi del tuo codice) ma il risultato è nullo (rimane invariato)
    A me piacerebbe averlo simile a questo: http://forum.it.altervista.org/archi...x.php/f-9.html
    (quindi il controllo della virgola volendo potrei benissimo eliminarlo) :)
    Edit: aggiungo una info che potrebbe servire...
    //Max topics to show per page in a forum
    $maxtopics = "25";
    //Max posts to show per page in a topic
    $maxposts = "10";
    Ultima modifica di darkwolf : 22-07-2008 alle ore 22.43.45

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

    Predefinito

    posta tutto il codice che devo capire dove vanno a finire alcuni valori.
    "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

  11. #11
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Ti mando link via pvt ad un file txt
    (il codice è troppo lungo per postarlo interamente, inoltre non è ancora "finito" quindi voglio evitare almeno per adesso che venga distribuito) Grazie!
    Edit: invece di un *.txt meglio un bel file php con:
    Codice PHP:
    <?php
    $file
    = file_get_contents("nomefile.est");
    highlight_string("$file");
    ?>
    Ultima modifica di darkwolf : 23-07-2008 alle ore 04.30.08

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

    Predefinito

    hai ragione, mi ero perso un controllo importante:
    EDITO:
    Codice PHP:
    //Show Pages List
    $totalpages = intval($row['numTopics'] / $maxtopics) + 1;
    $paginaattuale = intval($start / $maxtopics)+1;
    if(
    $totalpages < 1)
    $totalpages = 1;

    if (
    $totalpages > 1)
    {
    echo
    '
    <div id="pagine"><strong>Pagine:</strong> '
    ;
    for(
    $i=1; $i <= $totalpages; $i++)

    {

    if(
    $i == $paginaattuale)
    echo
    "[<strong>".$i."</strong>]";
    else
    echo
    ' <a href="' . $boardurl . '/' . $subdirname . 'lofi.php?board=' . $boardid . '.' , (($i-1) * $maxtopics) . '" title="Pagina ' . $i . '">' . $i . '</a>';
    }
    echo
    '
    </div>'
    ;
    }
    ora dovrebbe andare ;)

    ciao
    Ultima modifica di Xsescott : 23-07-2008 alle ore 16.31.58
    "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

  13. #13
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Perfetto!!! -> http://darkwolf.altervista.org/forum...hp?board=23.50
    Grazie mille raga!!!
    -
    Edit:
    Codice PHP:
    //Show Pages List
    $totalpages = intval($row['numTopics'] / $maxtopics) + 1;
    $paginaattuale = intval($start / $maxtopics)+1;

    if (
    $totalpages > 1)
    {
    echo
    '
    <div id="pagine"><strong>Pagine:</strong> '
    ;
    for(
    $i=1; $i <= $totalpages; $i++)

    {
    if(
    $i != $totalpages and $i != $paginaattuale)
    echo
    '
    <a href="'
    . $boardurl . '/' . $subdirname . 'lofi.php?board=' . $boardid . '.' , (($i-1) * $maxtopics) . '" title="Pagina ' . $i . '">' . $i . '</a>';

    else
    if(
    $i == $paginaattuale and $i != $totalpages)
    echo
    "
    [<strong>"
    .$i."</strong>]";
    else
    if(
    $i == $paginaattuale and $i == $totalpages)
    echo
    "
    [<strong>"
    .$i."</strong>]";

    else
    echo
    '
    <a href="'
    . $boardurl . '/' . $subdirname . 'lofi.php?board=' . $boardid . '.' , (($i-1) * $maxtopics) . '" title="Pagina ' . $i . '">' . $i . '</a>';
    }
    echo
    '
    </div>'
    ;
    }
    Ho rimosso le "virgole" quindi credo di poter eliminare un pò di codice dico bene???
    Potresti postarmelo (vorrei evitare di incasinare il tutto)
    Ultima modifica di darkwolf : 23-07-2008 alle ore 16.34.39

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

    Predefinito

    ho editato il codice su.
    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

  15. #15
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Mo è completo, grazie mille davvero
    Mi sono permesso di inserire un riferimento nel css (poi verrà trasferito nelle note di rilascio)
    -
    Edit: mi è venuta l'idea di modificare la index in modo che mostri le board secondarie leggermente più a destra rispetto a quelle principali :D
    -
    Ok raga sono riuscito a fare tutto quanto, c'è solo questo pezzo di codice che così composto non mi piace:
    Codice PHP:
    if ($row2['childLevel'] == 0)
    $boardsec = '';
    else
    if (
    $row2['childLevel'] == 1)
    $boardsec = '&nbsp;&nbsp;';
    else
    if (
    $row2['childLevel'] == 2)
    $boardsec = '&nbsp;&nbsp;&nbsp;&nbsp;';
    else
    if (
    $row2['childLevel'] == 3)
    $boardsec = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    else
    if (
    $row2['childLevel'] == 4)
    $boardsec = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    else
    if (
    $row2['childLevel'] == 5)
    $boardsec = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    Inoltre così funzionerà al massimo per 5livelli di sottodirectory (penso più che necessari per ogni forum ma... non si sa mai) :)
    Preferirei mettere un ordine incrementale... ma nonostante le prove fatte non riesco (l'unica che conoscevo era * (moltiplicazione) ma a quanto ho capito funzia solo per "numeri"
    Beh per adesso mi accontento in attesa di ulteriori info
    -
    Ehi raga tutto risolto :)
    Come dissi, l'unica che conoscevo utile era la moltiplicazione ed ho sfruttato proprio quella:
    Codice PHP:
    //Indentatura liste per le categorie secondarie (30pixel per ogni livello)
    $padd = ($row2['childLevel']) * 30;
    if (
    $padd == 0)
    $subst = '<li>';
    else
    $subst = '<li style="padding-left:' . $padd . 'px;">';
    Quindi se non è una primaria crea il <li> con style 30 >> 60 ecc ecc...
    altrimenti un semplice <li>
    Non sarà pulitissimo ma funziona benone
    Ultima modifica di darkwolf : 27-07-2008 alle ore 17.40.21 Motivo: Pulizia completa del post!!!

Regole di scrittura

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