Visualizzazione risultati 1 fino 13 di 13

Discussione: Array in una select

  1. #1
    Guest

    Predefinito Array in una select

    Salve a tutti,

    sto facendo delle prove su uno script ho un piccolo problema dove sicuramente mis to eprdendo in un bicchier d'acqua

    la cosaè semplice

    ho una variabile chiamamola $x che contine una serie di elementi diciamo tutti gli id degli utenti

    e fin lì ci sono stampandola a video mi da tutti gli id 12345678910 etc.

    ora se io voglio fargli fare un estrazione in automatico dal database mi rpende solo l'ultima

    ad esempio

    SELECT Nome FROM Utenti Where ID='$x"

    però quando sviluppo la quey mi dà solo il nome dell'id 10

    Credetemi che sto cercando da tutt ele aprti e su molti manuali sta cosa ma nonr iesco a trovarla

    suggerimenti?

    Dimenticavo: la select ovviamente deve estrarmi tutti i valori rispetto a gli ID

    questo il codice
    Codice:
    $query = "SELECT AVG(Eta) as tot_eta FROM Utenti  WHERE ID='$x' ;
        $result = mysql_query($query);
    
    	if($result) {
      $row = mysql_fetch_array($result);
     $medeta=round($row['tot_eta'],1);
    in questo caso mi estrae solo l'ultima età media dell'ultimo id

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Vedi negli esempi: http://php.net/manual/en/function.mysql-fetch-array.php

    Devi usare un loop per estrarre più dati ( il modo più comune è usare un while )

  3. #3
    Guest

    Predefinito

    ci ho provaato con un foreach ad esempio

    Codice PHP:
    foreach($x as $linea){

    $query = "SELECT AVG(Eta) as tot_eta FROM Utenti WHERE ID='$linea' ;
    $result = mysql_query($query);


    }
    ma mi dà 0 come valore
    Ultima modifica di musicanapoli : 27-09-2010 alle ore 01.23.03 Motivo: Codice racchiuso tra i tags

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

    Predefinito

    Citazione Originalmente inviato da Monital Visualizza messaggio
    Salve a tutti,

    sto facendo delle prove su uno script ho un piccolo problema dove sicuramente mis to eprdendo in un bicchier d'acqua

    la cosaè semplice

    ho una variabile chiamamola $x che contine una serie di elementi diciamo tutti gli id degli utenti

    e fin lì ci sono stampandola a video mi da tutti gli id 12345678910 etc.

    ora se io voglio fargli fare un estrazione in automatico dal database mi rpende solo l'ultima

    ad esempio

    SELECT Nome FROM Utenti Where ID='$x"

    però quando sviluppo la quey mi dà solo il nome dell'id 10

    Credetemi che sto cercando da tutt ele aprti e su molti manuali sta cosa ma nonr iesco a trovarla

    suggerimenti?

    Dimenticavo: la select ovviamente deve estrarmi tutti i valori rispetto a gli ID

    questo il codice
    Codice:
    $query = "SELECT AVG(Eta) as tot_eta FROM Utenti  WHERE ID='$x' ;
        $result = mysql_query($query);
    
    	if($result) {
      $row = mysql_fetch_array($result);
     $medeta=round($row['tot_eta'],1);
    in questo caso mi estrae solo l'ultima età media dell'ultimo id
    non ho capito.
    quante tabelle hai? gli id stanno nella stessa tabella dove stà l'attributo Età?(a quanto pare si)
    id è chiave primaria per rappresentare gli utenti?

    insomma ho capito che devi fare una media sull'età degli utenti, considera che se fai una media, sull'intera tabella, l'operatore avg restiuirà sempre lo stesso valore..
    se poi lo fai per ogni id è del tutto insensato, dato che la media va fatta almeno su 2 valori.

    a meno che, ci sono più tabelle o che id non è chiave primaria, e vuoi fare qualcos'altro che non ho capito.. spiegati meglio..
    "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
    Guest

    Predefinito

    allora si ineffetti ti ho tratto in inganno

    la cosa è molto complessa


    provoa fare un esempios emplice che calza a pennello

    gli id sono gli identificativi degli alunni la tabella è unica ed e divisa cosi

    id nomealunno eta classe

    allora io voglio fare l'età media delle classi conun unico script
    Codice:
    $query = "SELECT AVG(Eta) as tot_eta FROM Alunni WHERE classe='$x' ;
        $result = mysql_query($query);
    
    	if($result) {
      $row = mysql_fetch_array($result);
     $medeta=round($row['tot_eta'],1);
    ora in $x sono presenti tutte le classi già estratte da un altra tabella in base agli id. indi in $x stampandola esce:

    PrimaSecondaTerzaQuartaQuinta etc.

  6. #6
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    SE ho capito quello che vuoi fare devi usare "IN"
    SELECT AVG(Eta) as tot_eta FROM Alunni WHERE classe IN ('$x')

    La variabile x sarà qualcosa del genere 3,4,5,6 generata in precedenza
    Per esempi sull'operatore IN
    http://www.w3schools.com/sql/sql_in.asp
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

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

    Predefinito

    Come dice binary o usi IN o usi =ANY che sono praticamente identici.

    Ad esempio se usi l'interrogazione di binarysun, puoi annidare la select che hai fatto in precedenza per prelevare i valori dalla tabella che contiene le classi:, tipo se l'altra tabella che raccoglie le classi ad esempio è fatta cosi:

    id | classe | anno | num_alunni etc etc---


    ovviamente classe e anno sono unique, cioè non puoi avere due valori per gli attributi classe e anno uguali.

    quindi l'alternativa, puoi fare una cosa del tipo
    SELECT classe,AVG(Eta) as tot_eta FROM Alunni WHERE classe IN ('select classe from Classi where anno="2010"');

    alternativa identica:
    SELECT classe,AVG(Eta) as tot_eta FROM Alunni WHERE classe=ANY('select classe from Classi where anno="2010"');

    oppure se non si ha un'altra tabella e vuoi recuperare informazioni direttamente in base alle classi, puoi raggruppare e fare media.
    SELECT classe,AVG(Eta) as tot_eta FROM Alunni GROUP by classe;

    altrimenti, se il numero di classi contenuto in $x è un valore variabile e non riguarda sempre tutte le classi, la select che fai per la $x la puoi annidare come nel primo o nel secondo esempio.

    ciao
    Ultima modifica di Xsescott : 29-09-2010 alle ore 01.05.53
    "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

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da Xsescott Visualizza messaggio

    altrimenti, se il numero di classi contenuto in $x è un valore variabile e non riguarda sempre tutte le classi, la select che fai per la $x la puoi annidare come nel primo o nel secondo esempio.

    ciao
    ecco questo è il caso in $x sono presenti tutte le classi

    proverò come suggerito in pratica dovrebbe essere così

    Codice:
    SELECT classe,AVG(Eta) as tot_eta FROM Alunni WHERE classe IN ('select classe from Classi where anno="$x"');
    giusto?

    se così fosse

    continuando il codice

    Codice:
    $query = "SELECT classe,AVG(Eta) as tot_eta FROM Alunni WHERE classe IN ('select classe from Classi where anno="$x"');"
        $result = mysql_query($query);
    
    	if($result) {
      $row = mysql_fetch_array($result);
     $medeta=round($row['tot_eta'],1);
    $medeta dovrebbe restituirmi tutte le età medie?

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

    Predefinito

    Da dove prelevi le classi contenute nella variabile $x?
    "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

    Citazione Originalmente inviato da Xsescott Visualizza messaggio
    Da dove prelevi le classi contenute nella variabile $x?
    da un altra tabella e mi viene restituito come array

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

    Predefinito

    posta la query che fai a questa tabella, e dimmi che campi hai e qual'è la chiave primaria.
    "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

    Predefinito

    Allora ripredno questo topic per non aprirne un altro perchè è sempre los tesso problema

    purtroppo causa lavoro non sono più riuscito a emttermi su e ne approfitto delle ferie.

    A proposito Auguri di buone feste a tutti

    allora penso di essere a buon punto con il mio script e sopra credo di esse stato molto confusionario quindi ho sintetizzato quelloc he mi serve


    devo fare una selct su più elementi
    qua estraggo i dati principali

    Codice PHP:
    $sql = "SELECT ID FROM Persone";
    $res = mysql_query($sql);
    $i=0;
    while (
    $r = mysql_fetch_array($res, MYSQL_ASSOC)) {
    $i++;

    foreach(
    $r as $mana) {



    }
    }
    allora in $mana ci sono tutti gli id in questo caso da 1 a 30 preciso che con un echo mi appaiono così
    1234567891011121314151617181920
    ora devo fare un altra select per estrarre il nome in base all'id

    Codice PHP:
    $query = "SELECT Nome FROM Persone WHERE ID = '$mana' ";
    $risultato = mysql_query($query) or die("Query fallita: " . mysql_error() );

    while (
    $linea = mysql_fetch_array($risultato, MYSQL_ASSOC)) {

    echo
    "\t<tr>\n";



    foreach (
    $linea as $valore_colonna) {
    echo
    "$valore_colonna";

    }
    }
    Ovviamente non va ho prova anche con


    Codice PHP:
    $query = "SELECT Nome FROM Persone WHERE ID IN( '$mana') ";
    ma niente mi restituisce solo l'ultima riga



    credo sia più chiaro così

    Aiutatmi prima che impazzisco le sto provando tutte

  13. #13
    Guest

    Predefinito

    risolto grazi los tesso epr i vari spunti


    Codice PHP:
    <?php

    $colonne
    = 3;
    mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
    @
    mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");


    $sql = "SELECT * FROM Manager";
    $res = mysql_query($sql);

    if((
    $righe = mysql_num_rows($res))>0)
    {

    echo
    "<table>\n";

    for(
    $i = 0; $i < $righe; $i++) {
    $r = mysql_fetch_array($res);
    if(
    $i % $colonne == 0) {
    echo
    "<tr>\n";
    }
    $xxx=$r['ID_Squadra'];
    echo
    " <form name=\"form1\" method=\"post\" action=\"principale.php\" >";

    echo
    "<td>
    <button name=\"soc\" type=\"submit\" style=\"width:200px;\" Value=\"
    $xxx\">
    <img src=\"../loghi/"
    . $r['ID_Squadra'].".gif\" width=\"25\" height=\"25\" title=\"\" vspace=\"5\"
    alt=\"invia adesso\" align=\"absmiddle\">
    <b><font class=\"rif\" >"
    .$r['ID_Squadra']."</b>


    </button>
    </td>\n"
    ;

    if((
    $i % $colonne) == ($colonne - 1) || ($i + 1) == $righe) {
    echo
    "</tr>\n";
    }

    }
    echo
    "</table>\n";
    echo
    "</form>";
    }
    ?>


    </form>
    sono un piccolo genio dedito a fare lo "schiavo"

Regole di scrittura

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