Werte zuweisen

Sven4972

Mitglied
Hallo,

folgendes habe ich vor.

Ich habe eine Textdatei die ich auslese und den Inhalt Variablen zuweise.
Diese Variablen schreibe ich dann in eine Datenbanktabelle.
Es werden für jede Textdatei 3 DB-Einträge gemacht.

In der Tabelle gibt es eine Spalte mit der Platzierung, in die die Werte 1,2 oder 3 geschrieben werden soll.

Der Wert der dort eingetragen werden soll, hängt von dem ab was in den Variablen
$gesamt1, $gesamt2 und $gesamt3 steht.

Die Variablen enthalten Zahlen und sollen mit der größten beginnend den Werten 1,2 und 3 zugewiesen werden.

Wie kann ich jetzt am besten der Platzierung die Werte 1,2 und 3 zuweisen?


LG Sven
 
Hi,

ich würde das vermutlich so ungefähr machen:
PHP:
    $file = 'textdatei.txt';
    
    $lines = file( $file );
    
    asort( $lines );
    
    $i = 0;

    $sqlQuery = array();

    foreach( $lines as $key => $val )
    {
        $i++;
        $sqlQuery[$i] = '   INSERT INTO
                                table
                            (
                                platzierung,
                                inhalt
                            )
                            VALUES
                            (
                                '.$i.',
                                '.$val.'
                            )';
        mysql_query( $sqlQuery[$i] );
    }
    $sqlQuery = '';
 
Hallo,

ich habe das Ganze jetzt mal wie folgt:

PHP:
// Nick, Spielpunkte, Gewonnen, Verloren, Gesamt
  $a[0]=array($spieler1, $spielpunkte1, $gewonnen1, $verloren1, $gesamt1);
  $a[1]=array($spieler2, $spielpunkte2, $gewonnen2, $verloren2, $gesamt2);
  $a[2]=array($spieler3, $spielpunkte3, $gewonnen3, $verloren3, $gesamt3);

  foreach($a as $v) {$s0[]=$v[0]; $s1[]=$v[1]; $s2[]=$v[2]; $s3[]=$v[3]; $s4[]=$v[4];}

  array_multisort($s4, SORT_ASC, SORT_NUMERIC, 
                  $s1, SORT_ASC, SORT_REGULAR, 
                  $s2, SORT_ASC, SORT_REGULAR, 
                  $s3, SORT_ASC, SORT_REGULAR,
                  $s0, SORT_ASC, SORT_REGULAR, $a);

  for ($i=0; $i<count($a); $i++)
  {
  echo $a[$i][0] . "; " . $a[$i][1] . "; " . $a[$i][2] . "; " . $a[$i][3] . "; " . $a[$i][4] . "<br>";
  }

Jetzt wird schön nach gesamt sortiert.

Wie kann ich die Sortierung in Variablen schreiben, so das ich sie weiterverarbeiten kann?


LG Sven
 
Sven4972 hat gesagt.:
Wie kann ich die Sortierung in Variablen schreiben, so das ich sie weiterverarbeiten kann?
Was willst denn damit noch machen?
Abgelgt sind Deine Werte doch schon. Du läßt sie ja mit echo ausgeben. Anstelle dessen kannst Du sie doch auch auf jede beliebige Art weiterverwenden, z.B.
PHP:
$variable1 = $a[i][0];
$variable2 = $a[i][1];
...
Was allerdings Blödsinn ist, weil sich von der Verwendbarkeit eigentlich nix ändert, das wären unnötige Codezeilen.

Wie willst Du die denn weiterverwenden?
 
Hallo,

das Echo habe ich nur zur Kontrolle gemacht, um zu schauen ob richtig sortiert wird.

Die Daten sollen dann in eine Tabelle in einer MySQL-DB eingetragen werden.


LG Sven
 
Na dann z.B. mit
PHP:
$SQL = "INSERT INTO zieltabelle (gesamt1,gesamt2,gesamt3,gesamt4) VALUES (";
$SQL .= $a[i][0]",";
$SQL .= $a[i][1]",";
$SQL .= $a[i][2]",";
$SQL .= $a[i][3]")";
Und das dann abschicken.
Bitte unbedingt die Werte auf SQL-Tauglichkeit prüfen lassen
Habe jetzt nur mal grob ein Schema dargestellt, wie es funktionieren könnte, ohne Prüfung der Werte halt. Ist aber wichtig!
 
Hallo,

die Ausgabe mit dem Probeecho ergibt folgendes:

Code:
otto; -10; 7; 6; 160
Bjoern; 150; 6; 3; 540
Ulkwitz; 663; 13; 0; 1673

Wenn ich es jetzt so mache:

PHP:
$test1 = $a[$i][0];
$test2 = $a[$i][1];
$test3 = $a[$i][2];
$test4 = $a[$i][3];
$test5 = $a[$i][4];

Dann funktioniert es für den ersten Eintrag.

Wie kann ich jetzt aber die 2. und 3. Zeile ebenfalls zuordnen?

Wenn ich mit

PHP:
$test5 = $a[$i][5];

weitermache, bleibt die Variable leer.


LG Sven
 
Das muß natürlich genau wie das echo in die Schleife, denn Deiner Ausgabe zufolge müßte
Code:
$a[0][0] = "otto";
$a[0][1] = -10;
$a[0][2] = 7;
$a[0][3] = 6;
$a[0][4] = 160;

$a[1][0] = "Bjoern";
$a[1][1] = 150;
$a[1][2] = 6;
$a[1][3] = 3;
$a[1][4] = 540;

$a[2][0] = "Ulkwitz";
$a[2][1] = 663;
$a[2][2] = 13;
$a[2][3] = 0;
$a[2][4] = 1673;
sein...

Du hast ja ein mehrdimensionales Array, welches Du auch schon für die echo-Ausgabe in einer Schleife anwendest. Das Gleiche machst Du mit den Einträgen in die Datenbank! Für jede Zeile, also jedes $a[$i] wird der INSERT-Befehl mit den Werten $a[$i][0] bis $a[$i][4] neu aufgebaut und abgesendet.
 
Zurück