Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    ordinamento risultati prima dell'echo

    Nel mio db mysql,tabella 'cani' ho i seguenti record:
    id Nome idpadre idmadre
    1 Quest 9 6
    6 Inca
    9 Dexter

    Il mio scopo è attraverso lo script pedigree.php costruire il pedigree di Quest.
    Uso la seguente query:

    codice:
    $query="SELECT id, Nome FROM cani WHERE id='$idpadre' OR id='$idmadre'" ;//
    while($row=mysql_fetch_array($query)){
    $id=$row['id'];
    $nome=$row['Nome'];
    }
    Vorrei come risultato avere due array uno per il padre e uno per la madre.
    Poi li richiamo per stamparli:
    <table><tr>
    <td>qui devo fare l'echo del nome del padre</td></tr>
    <tr>
    <td>qui devo fare l'echo del nome della madre</td></tr>
    </table>



    Qualche aiuto?
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    579
    Codice PHP:
    $query "SELECT dati, che, ti, interessano FROM cani";
    $res mysql_query($query) or die (mysql_error());

    while(
    $row mysql_fetch_array($res))
    {
      echo 
    '';
      echo 
    " <table><tr> 
    <td>"
    .$row['idpadre']."</td>";
      echo 
    '';

    questa è la cosa migliore da fare.
    ciao
    l'uomo è tutto ciò che non può essere

    http://www.ebug.it Discussioni da web Designer

    http://www.ebug.it/?p=354 e Dart Fener dove lo mettiamo lol

  3. #3
    ecco quello che scrivi è giusto e comprensibile però quello che mi interessa fare vedere è il nome del padre e la riga seguente quella della madre così(in unpedigree il maschio sta sopra e la femmina sotto):

    codice:
    $query = "SELECT dati, che, ti, interessano FROM cani";
    $res = mysql_query($query) or die (mysql_error());
    
    while($row = mysql_fetch_array($res))
    {
      echo '';
      echo " <table><tr>
    <td>".$row['nome']."</td>";
      echo '';
    }
    Però così facendo non ho:

    1)la sicurezza che i risultati mi siano restituiti nell'ordine corretto; dovreste aiutarmi a trovare un metodo per fare questo cioè se $idpadre(ce l'ho in precedenza)= $row['id'] allora ciò vuoldire che la SELECT ha trovato il valore cercato e faccio echo $row['nome'], che corrisponde a quel $row['id'].

    Dai che ci arrivo sen'altro col vostro aiuto
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    579
    1)per ordinarli utilizza ORDER BY id (se il campo che si autoincrementa)
    2)il resto nn l'ho capito cosa chiedi.
    ti consiglio di studiare un pò di sql
    ti consiglio anche questa guida:
    www.rakosystem.altervista.org/sql.php
    in particolare
    http://www.rakosystem.altervista.org/lezione.php?sql=6
    l'uomo è tutto ciò che non può essere

    http://www.ebug.it Discussioni da web Designer

    http://www.ebug.it/?p=354 e Dart Fener dove lo mettiamo lol

  5. #5
    niente ORDER BY perchè non c'è logica nella successione degli id dei cani. Altre idee?? Thank you
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    579
    in che senso c'è logica?????
    scusa nn comprendo cosa tu voglia dire
    l'uomo è tutto ciò che non può essere

    http://www.ebug.it Discussioni da web Designer

    http://www.ebug.it/?p=354 e Dart Fener dove lo mettiamo lol

  7. #7
    con l'ORDER BY ordinerei i risultati secondo id crescente o decresente, che non è una logica che segue il db, La madre di quest è 6 e il padre ha id 9 ma potrebbe essere il contrario per un altro cane. Però nel pedigree il maschio viene sempre prima della femmina.
    l'ordinamento lo devo fare a monte della SELECT in quanto nella select gli do un WHERE (id=$idpadre OR id=$idmadre);

    vero è che se gli dessi subito dopo il fetch il while e l'echo
    non avrei la certeza che i risultati siano nell'ordine giusto(o che li abbia trovati) ma devo fare prima un controllo.
    E' questo controllo che non so come si possa fare, cioè la logica è questa:
    per ogni riga successiva del set di risultati se $row['id']=$idpadre allora stampa $row['nome']
    $row['id']=$idmadre allora stampa $row['nome']

    Non so però come fare questo, ma credo che sia possibile.
    Mi sono spiegato?
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  8. #8
    ragionando, ragionando dunque il mysql_fetch_array cosa fa? processa ogni riga e sposta il puntatore interno a quella successiva. Ok? La select mi da due righe.
    Con il ciclo while fatto su questa funzione ho per la prima riga:
    $idmadre=$row[id];
    $nomepadre=$row[nome];

    Per la seconda riga
    $idmadre=$row[id];
    $nomemadre=$row[nome];

    Ora cosi come sono non posso fare subito l'echo perchè non ho la garanzia che padre mi venga restituito prima di madre, cosa che io voglio. Quindi ora devo controllare (lo posso fare perchè nome padre e nomemadre sono univocamente identificati dall'id confrontabile coi valori che già avevo prima della query.
    Alla fine devo stampare:
    <?php echo '<table><tr><td>'.$nomepadre.'</td></tr>
    <tr><td>'.$nomemadre.'</td></tr></table>';?>

    Qualche aiuto?
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  9. #9
    Mi è venuto in mente di fare così ditemi se è corretto:
    carico la pagina cane.php?pid=9&mid=6

    codice:
    <?PHP $idpadre=$HTTP_GET_VARS('pid');
    $idmadre=$HTTP_GET_VARS('mid');//aggiungerò poi un controllo anti-injection
    
    //prima generazione
    $sqlquery="SELECT id, nome FROM cani WHERE (id='$idpadre' OR id='$idmadre')";
    $phpquery =mysql_query($sqlquery) or die(mysql_error());
    
    //inizializzo un array e a ogni ciclo metto il nome //identificato dalla chiave id
    $genitori=array();
    
    while($record=mysql_fetch_array( $phpquery)){
    $genitori[] = ($row['id']=>$row['nome']);
    }
    //qui non so se ha senso 
    $nomepadre = $genitori['$idpadre'];
    $nomemadre = $genitori['$idmadre'];
     
    echo '<table><tr><td>'.$nomepadre.'</td></tr>
    <tr><td>'.$nomemadre.'</td></tr></table>';?>
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

  10. #10
    up
    www.staffords.it
    php work in progress database di staffordshire bull terrier(razza di cani)
    http://tonyz.altervista.org/

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.