Visualizzazione risultati 1 fino 14 di 14

Discussione: Problema con l'estrazione dei dati da MySQL

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,234

    Predefinito Problema con l'estrazione dei dati da MySQL

    Buonasera a tutti,
    innanzi tutto chiedo scusa per il titolo (se errato) ma non sapevo cosa scrivere.
    Giungendo subito al dunque ho:
    Codice PHP:
    <?php
    $uno
    = mysql_query("SELECT nome_categoria FROM scripts WHERE tipo = 'html_javascript'");
    $due = mysql_query("SELECT nome_categoria FROM scripts WHERE tipo = 'php'");
    while(
    $temp = mysql_fetch_array($uno) AND $temp2 = mysql_fetch_array($due)){
    $html = $temp[nome_categoria];
    $php = $temp2[nome_categoria];
    echo
    "<tr>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $html\" /> <a href=\"script.php?category=$html\">$html</a></td>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $php\" /> <a href=\"script.php?category=$php\">$php</a></td>
    </tr>"
    ;
    }
    ?>
    Che mi dovrebbe estrarre tutte i records dove una riga e "html_javascript" e l'altra dove è "php".
    Il tutto funziona bene, ora dov'è il problema? Il problema è quando ho categorie dispari:

    Ammettiamo che io Abbia 3 record in "html_javascript" e 2 in "php" questo codice mi estrae solo due di "html_javascript" e due di "php" mentre se poi aggiungo una nuova categoria a php mi estrae tutto.
    In poche parole se tutte e due le categorie non hanno pari records questo codice estrae fino alla loro parità.

    Come posso risolvere?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    Al posto di:
    while($temp = mysql_fetch_array($uno) AND $temp2 = mysql_fetch_array($due)){

    metti:
    while($temp = mysql_fetch_array($uno) OR $temp2 = mysql_fetch_array($due)){


    ciao!

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,234

    Predefinito

    L'avevo già provato ma c'è un inconveniente.
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    metti prima il tuo codice, poi conta quanti sono i record di html_javascript e quanti sono i record di php; poi mettili a confronto: se è maggiore html_javascript prendi dal database i rimanenti di html_javascript (togliendo il numero pari iniziale) e li stampi con l' altro td vuoto; se è maggiore php prendi dal database i rimanenti di php (sempre togliendo il numero iniziale) e li stampi con il primo td vuoto.

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,234

    Predefinito

    Scusa potresti essere un po' più chiaro faccio un po' di fatica a comprendere.
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    Guest

    Predefinito

    Scrivi qual'è questo inconveniente, perchè il tuo sito per ora mi risulta irraggiungibile


    ciao!

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,234

    Predefinito

    Irrangiungibile? Beh faccio uno screen per fare prima:
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Guest

    Predefinito

    Se le categorie sono solo quelle due, cioè se quella pagina conterrà solo due colonne, una per JS e una per PHP, potresti dividere completamente l'estrazione delle due.
    Cioè fare un while per ognuna di esse.


    ciao!

  9. #9
    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 miki92 Visualizza messaggio
    L'avevo già provato ma c'è un inconveniente.
    Ti spiego io da dove deriva l'inconveniente: quando PHP valuta una condizione composta con OR, se trova "vera" la prima (nel tuo caso, a $temp viene assegnato un record), ignora la seconda, perché il risultato sarà comunque "vero".

    Una soluzione, peraltro quasi già descritta in qualche post precedente, è questa:
    - conti il numero di record che hai restituiti dall'una e dall'altra query
    - per un numero di volte pari al minimo dei due valori precedenti, estrai i dati da entrambi i recordset
    - seguono due cicli dai quali provi ad estrarre i record rimanenti
    In codice:
    Codice PHP:
    <?php
    $uno
    = mysql_query("SELECT nome_categoria FROM scripts WHERE tipo = 'html_javascript'");
    $due = mysql_query("SELECT nome_categoria FROM scripts WHERE tipo = 'php'");
    $n1 = mysql_num_rows ($uno);
    $n2 = mysql_num_rows ($due);
    for (
    $i = 0; $i < min ($n1, $n2); $i++){
    $temp = mysql_fetch_array($uno);
    $temp2 = mysql_fetch_array($due);
    $html = $temp[nome_categoria];
    $php = $temp2[nome_categoria];
    echo
    "<tr>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $html\" /> <a href=\"script.php?category=$html\">$html</a></td>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $php\" /> <a href=\"script.php?category=$php\">$php</a></td>
    </tr>"
    ;
    }
    while (
    $temp = mysql_fetch_array($uno)) {
    $html = $temp[nome_categoria];
    echo
    "<tr>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $html\" /> <a href=\"script.php?category=$html\">$html</a></td>
    <td style=\"width:297px\">&nbsp;</td>
    </tr>"
    ;
    }
    while (
    $temp2 = mysql_fetch_array($due)) {
    $php = $temp2[nome_categoria];
    echo
    "<tr>
    <td style=\"width:297px\">&nbsp;</td>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $php\" /> <a href=\"script.php?category=$php\">$php</a></td>
    </tr>"
    ;
    }
    ?>
    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...

  10. #10
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,234

    Predefinito

    Dementialsite ti ringrazio molto per il codice che mi hai dato, sembrerebbe funzionare bene, ma ora come vedi compare più volte la stessa categoria, possiamo unire tutte quelle uguali (naturalmente sempre distinguendo js e php) dal momento che infine portano sempre allo stesso codice?
    Apprezzi l'aiuto? Offrimi un caffè!

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

    Predefinito

    Ho provato a riguardare il codice e non mi sembra che ci siano le condizioni per generare duplicati... non è che sia la tua query a generarli?

    Dovresti provare a formularle così: SELECT DISTINCT nome_categoria... (non ricordo però se funziona anche con MySQL)

    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...

  12. #12
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,234

    Predefinito

    La mia query ora è quella postata da te. Il risultato lo si può notare ancora qui.
    Apprezzi l'aiuto? Offrimi un caffè!

  13. #13
    Guest

    Predefinito

    posta la struttura delle due tabelle con cui lavori

  14. #14
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,234

    Predefinito

    E' questo il codice:
    Codice PHP:
    <?php if(empty($_GET['category'])){
    $uno = mysql_query("SELECT nome_categoria FROM scripts WHERE tipo = 'html_javascript'");
    $due = mysql_query("SELECT nome_categoria FROM scripts WHERE tipo = 'php'"); ?>
    <table style="width: 100%">
    <tr>
    <td style="width:297px"><div class="centrale"><span class="rosso">JavaScript (JS)</span></div></td>
    <td style="width:297px"><div class="centrale"><span class="rosso">PHP</span></div></td>
    </tr>
    <?php
    $n1
    = mysql_num_rows ($uno);
    $n2 = mysql_num_rows ($due);
    for (
    $i = 0; $i < min ($n1, $n2); $i++){
    $temp = mysql_fetch_array($uno);
    $temp2 = mysql_fetch_array($due);
    $html = $temp[nome_categoria];
    $php = $temp2[nome_categoria];
    echo
    "<tr>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $html\" /> <a href=\"script.php?category=$html\">$html</a></td>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $php\" /> <a href=\"script.php?category=$php\">$php</a></td>
    </tr>"
    ;
    }
    while (
    $temp = mysql_fetch_array($uno)) {
    $html = $temp[nome_categoria];
    echo
    "<tr>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $html\" /> <a href=\"script.php?category=$html\">$html</a></td>
    <td style=\"width:297px\">&nbsp;</td>
    </tr>"
    ;
    }
    while (
    $temp2 = mysql_fetch_array($due)) {
    $php = $temp2[nome_categoria];
    echo
    "<tr>
    <td style=\"width:297px\">&nbsp;</td>
    <td style=\"width:297px\"><img src=\"immagini/directory.png\" alt=\"Directory Categoria
    $php\" /> <a href=\"script.php?category=$php\">$php</a></td>
    </tr>"
    ;
    }
    ?>
    </table>
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

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