Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    94

    [help] produrre file output php-mysql

    salve gente..
    allora ho una tabella su mysql fatta cosi.. con un enormità di righe, e 3 colonne:

    Step | Fornitori | Clienti
    1 | 1 | 2
    1 | 2 | 1
    1 | 2 | 4
    2 | 2 | 1
    2 | 1 | 4

    .......
    voglio sapere in quali step (prima colonna) compare la stessa coppia di
    valori per i campi Fornitori e Clienti.
    Per esempio: la coppia di valori 2 1 si verifica allo step 1 (seconda
    riga) e allo step 2 (quarta riga), io vorrei creare in output attraverso
    script php, un file di testo fatto cosi:

    Fornitori Clienti [numero step in cui si verifica tale coppia di valori]

    facendo riferimento alla tabella di esempio sopra:
    1 2 [1]
    2 1 [1,2]
    2 4 [1]
    2 1 [2]
    1 4 [2]

    chi può darmi qualche idea????
    ringrazio tutti anticipatamente

  2. #2
    nell'esempio tuo,
    1 2 [1]
    2 1 [1,2]
    2 4 [1]
    2 1 [2]
    1 4 [2]

    hai inserito alla riga 2 che gli steps sono [1,2] e la stessa coppia di valori l'hai inserita nella riga 4 , ma con step [2].

    Non riesco a capire se per ogni riga con coppia fornitori,clienti vuoi ottenere tutti gli steps.

    il file da generare quindi potrebbe essere cosi:
    1 2 [1]
    2 1 [1,2]
    2 4 [1]
    1 4 [2]

    Cioe' 4 righe di cui la seconda con + steps, e non 5 righe come nell'esempio sopra?

    fammi sapere
    ______________________________________

    Progresso Web.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    94
    ciao,grazie per la risposta..

    esatto.. il file da generare sarebbe questo:

    1 2 [1]
    2 1 [1,2]
    2 4 [1]
    1 4 [2]


    mio errore..

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    94
    up!
    UP!!

  5. #5
    prova cosi:

    codice:
    <?
    mysql_connect("localhost","","") or die("Errore connessione");
    mysql_select_db("prova_db");
    
    $query="SELECT fornitori,clienti,step,count(step) as num FROM prova group BY fornitori,clienti;";
    $res=mysql_query($query);
    while ($row=mysql_fetch_assoc($res))
    {
    	$wstep=$row["step"];
    	if ( $row["num"] > 1 )
    	{
    	 $q="select step from prova where fornitori=".$row["fornitori"]." AND clienti=".$row["clienti"].";";
    	 $r=mysql_query($q);
    	 $wstep="";
    	 $virgola="";
    	 WHILE ($row1=mysql_fetch_assoc($r))
    	 {
    	  $wstep.=$virgola.$row1["step"];
    	  $virgola=",";
    	 } 
    	}
        // queste sono le righe da inserire nel file 
        echo $row["fornitori"]." ".$row["clienti"]." ".$wstep."
    ";
    }
    ?>
    manca l'inserimento nel file di testo, ma ora purtroppo devo scappare.

    ciao
    ______________________________________

    Progresso Web.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    94
    grande !!!

    ho provato ed è proprio quello che mi serviva..

    l'unica cosa ora e capire come produrre il file di output..
    che istruzioni dovrei usare??

    p.s. mi servono le parentesi quadre tra gli step
    nel senso :

    1 2 [step,step,step]

    ti chiedo un'ultima cosa e poi ti santifico!! :rollo: :rollo:

    la tabella in questione chiamata "Prova" : step|fornitori|clienti io la ricavo da una precedente query su più tabelle incrociate.
    Se mi creo una vista per la tabella "prova" e poi faccio eseguire lo script che mi hai dato potrebbe andare bene?


    grazie mille..

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    94
    un ultima cosa...

    mettiamo il caso che vorrei aumentare di 1, il contenuto numerico di ogni riga di una colonna, ci sarebbe il modo??

    tipo se ho:

    colonna1
    0
    1
    4
    2
    6

    posso farla diventare attraverso script

    colonna1
    1
    2
    5
    3
    7

    ??

    grazie ancora..

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    94
    ciao...
    allora per le quadre [], ho risolto, e anche per l'aumento dei numeri nelle colonne..
    per questo tipo di dati devo usare INT,CHAR,VARCHAR??
    allora il mio file php completo è il seguente:

    dopo connessione a database..


    $query0="select max(IDArtifact) from mtxartifactsdatfile1;";
    $res0=mysql_query($query0);
    while ($row0=mysql_fetch_assoc($res0))
    {
    $wtotart=$row0["max(IDArtifact)"];
    $aumentamax=1;
    $wtotart2=$wtotart+$aumentamax;
    echo '*Vertices'." ".$wtotart2."
    ";
    }

    $query1="select IDArtifact from mtxartifactsdatfile1 ORDER by IDArtifact;";
    $res1=mysql_query($query1);
    for ($i=0; $i<=10; $i++)
    {
    while ($row1=mysql_fetch_assoc($res1))
    {
    $widart=$row1["IDArtifact"];
    $aumenta=1;
    $widart2=$widart+$aumenta;
    $virg1="\"";
    $virg2="\"";
    $art='art.';
    echo $widart2." ".$virg1.$art.$i++.$virg2." ".'[1-*]'."
    ";
    }
    }

    echo '*Arcs'."
    ";

    $query="SELECT fornitori,clienti,step,count(step) as num FROM forni group BY fornitori,clienti;";
    $res=mysql_query($query);
    while ($row=mysql_fetch_assoc($res))
    {
    $wstep=$row["step"];

    if ( $row["num"] >= 1 )
    {
    $q="select step from forni where fornitori=".$row["fornitori"]." AND clienti=".$row["clienti"].";";
    $r=mysql_query($q);
    $wstep="";
    $virgola="";
    $quadra1="";
    $quadra2="";
    WHILE ($row1=mysql_fetch_assoc($r))
    {
    $wstep.=$virgola.$row1["step"];
    $virgola=",";
    $quadra1="[";
    $quadra2="]";

    $forn=$row["fornitori"];
    $aumenta1=1;
    $forn2=$forn+$aumenta1;
    $clien=$row["clienti"];
    $aumenta1=1;
    $clien2=$clien+$aumenta1;
    }
    }

    echo $forn2." ".$clien2." ".'1'." ".$quadra1.$wstep.$quadra2."
    ";
    }


    il risultato prodotto è proprio quello che voglio io:

    *Vertices 12
    1 "art.0" [1-*]
    2 "art.1" [1-*]
    3 "art.2" [1-*]
    4 "art.3" [1-*]
    5 "art.4" [1-*]
    6 "art.5" [1-*]
    7 "art.6" [1-*]
    8 "art.7" [1-*]
    9 "art.8" [1-*]
    10 "art.9" [1-*]
    11 "art.10" [1-*]
    12 "art.11" [1-*]
    *Arcs
    1 3 1 [1]
    1 4 1 [1,1,3]
    1 7 1 [2,2]
    1 8 1 [2]
    2 3 1 [1,1,2,3]
    2 4 1 [1]
    2 6 1 [2]
    5 8 1 [2]
    5 9 1 [3]
    6 7 1 [2]
    6 10 1 [3]
    7 9 1 [2]
    8 9 1 [3]
    9 11 1 [3]
    9 12 1 [3]
    9 5 1 [1,1,2]
    10 12 1 [3,3]

    siccome dovrò far girare quel codice per milioni di righe secondo voi cosi com'è è abbastanza efficiente?si può migliorare???

    intanto provo a capire come buttare tutto su file di testo..

    grazie a tutti..

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.