CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |

22.06.2009, 12:27:52
|
Anfänger
|
|
Registriert seit: Jun 2009
Alter: 87
Beiträge: 17
|
|
PHP Array_multisort/Mehrfachdimensionales Array
Hallo PHP-Künstler,
als Anfänger habe ich ein Problem mit der Textzeile.
Diese soll für ein Multisort von Zeilen in Spalten umgestellt werden.
Meine Textzeilen habe folgendes Aussehen:
20090614|Maier Anna|100|1. Mahnung|o
20090612|Meier Jo|120|bezahlt|bar
20090612|Meyer Vivi|130|B.Ueberweisung|y
20090530|Meier Herbert|10|bar|mtl.
$array = file("$DOCUMENT_ROOT/../htdocs/Daten/name_xyz.txt");
$anzahl_zeile = count($array);
foreach ( $array as $key => $zeile )
{
list ($datum, $name, $betrag, $bemerkung, $kz) = explode("|" , $zeile);
$datum[$key] = strtolower ( $zeile['datum'] );
$name[$key] = strtolower ($zeile['name']);
$betrag[$key] = strtolower ($zeile['betrag']);
$bemerkung[$key]= strtolower ($zeile['bemerkung']);
$kz[$key] = strtolower ($zeile['kz']);
.
.
switch ( $_GET['sortierung'] ) {
case ( "d" ):
array_multisort( $datum, SORT_ASC, $name, SORT_ASC, $array );
echo "nach switch d"; // nur fuer Test
break;
Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in C:\xampp\htdocs\………………Name_out_2.php on line 58
Irgendwie ist etwas mit dem Aufsplitten der Textzeile in list()
oder dem nachfolgenden Code falsch.
Wie müsste dies für ein mehrdimensionalen Arrays aussehen ?
Ein Tipp oder sollte Jemand ein Script für ein ähnliche Aufgabe haben, bitte E-Mailen.
Thank you and Greatest Blessings (sagt man hier)
Huberg
|

22.06.2009, 12:46:30
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
AW: PHP Array_multisort/Mehrfachdimensionales Array
Ach komm...
Wonach soll sortiert werden?
Aus deinem Code ist wenig zu erkennen. Ihn durchzulesen habe ich auch wenig Lust.
1. Keine Code Erleuchtung
2. Bis zur unkenntlichkeit zerschnibbelt.
PHP-Code:
error_reporting(-1);
ini_set('display_errors', TRUE);
function transform_line(&$item)
{
$keys = array('datum','name','betrag','bemerkung','kz');
$item = trim($item);
$item = strtolower($item);
$item = array_combine($keys, explode("|",$item));
}
function by_datum($a, $b)
{
if ($a['datum'] == $b['datum'])return 0;
return ($a['datum']<$b['datum'])?-1:1;
}
$array = file("$DOCUMENT_ROOT/../htdocs/Daten/name_xyz.txt");
array_walk($array,'transform_line');
usort($array,'by_datum');
*ungetestet*
Geändert von DokuLeseHemmung (22.06.2009 um 12:49:09 Uhr)
|

22.06.2009, 23:51:04
|
Anfänger
|
|
Registriert seit: Jun 2009
Alter: 87
Beiträge: 17
|
|
AW: PHP Array_multisort/Mehrfachdimensionales Array
an DokuLeseHemmung,
erst mal Danke für die schnelle Antwort. Ich hatte das Script so gekürzt, weile es mir Vorallendingen um das Umsetzen der Zeilen in Spalten (Arrays) ankam. In dem von Ihnen erstellen Antwort-Script sind viele Konstrukte enthalten, die ich als Anfänger das Erst mal sehe und nicht verstehe. Ich bin noch nicht soweit.
Hier noch mal, wie es aussehen sollte: Eingabe u.Ausgabe
Eingabe:
20090614|Maier Anna|100|1. Mahnung|o
20090612|Meier Jo|120|bezahlt|bar
20090612|Meyer Vivi|130|B.Ueberweisung|y
20090530|Meier Herbert|10|bar|mtl.
Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in C:\xampp\htdocs\Uebung_Pfeile\Name_out_4.php on line 37
Ausgabe
Datum ↓ ↑ Name↓ ↑ Betrag↓ ↑ Bemerkung Kz
20090614 Maier Anna 100 1. Mahnung o
20090612 Meier Jo 120 bezahlt bar
20090612 Meyer Vivi 130 B.Ueberweisung y
20090530 Meier Herbert 10 bar mtl.
Und hier mein Script (aber bitte nicht lachen!) - geht aber nicht , Scriptly reagiert nicht.
kommt in der naechsten Antwort.
Huberg
--------------------------------------------------------------------------------------------------------------
PHP-Code:
<?php
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
echo "Name_xyz.txt Tabelle Stand 15.6.2009";
$array = file("$DOCUMENT_ROOT/../htdocs/Daten/Name_xyz.txt");
$anzahl_zeile = count($array);
//------------------------------------------------------------
foreach ( $array as $key => $zeile)
{
list($datum, $name, $betrag, $bemerkung, $kz) = explode("|" , $zeile);
echo "<br/>"; // nur fuer Test
echo "<pre>"; // nur fuer Test
print_r ($zeile); // nur fuert Test
}
foreach ($array as $nr => $inhalt) {
$datum[$nr] = ($inhalt[datum]);
$name[$nr] = ($inhalt[name]);
$betrag[$nr] = ($inhalt[betrag]);
$bemerkung[$nr] = ($inhalt[bemerkung]);
$kz[$nr] = ($inhalt[kz]);
}
switch ( $_GET['sortierung'] ) {
case ( "d" ):
array_multisort( $datum, SORT_ASC, $name, SORT_ASC, $array );
echo "nach switch d"; // nur fuert Test
break;
case ( "da" ):
array_multisort( $datum, ORT_DESC, $name, SORT_DESC, $array );
echo "nach switch da"; // nur fuert Test
break;
case ( "b" ): array_multisort( $datum, SORT_ASC, $name, SORT_ASC, $array );
echo "nach switch b"; // nur fuert Test
break;
case ( "ba" ): array_multisort( $name, SORT_DESC, $array );
echo "nach switch ba"; // nur fuert Test
break;
DEFAULT:
array_multisort( $datum, SORT_ASC, $name, SORT_ASC, $array ) ;
}
ausgabe_tabelle ($array);
function ausgabe_tabelle ($array)
{
echo '<table border="1" cellpadding="6" cellspacing="0">';
echo '<tr bgcolor="#6CF8E6">';
echo '<th>';
echo 'Datum ';
echo '<a href="Name_out_4.php?sortierung=d">↓ </a>';
echo ' ';
echo '<a href="Name_out_4.php?sortierung=da">↑ </a>';
echo '</th>';
echo '<th>';
echo 'Name';
echo '<a href="Name_out_4.php?sortierung=b">↓ </a>';
echo ' ';
echo '<a href="Name_out_4.php?sortierung=ba">↑ </a>';
echo '</th>';
echo '<th>';
echo 'Betrag';
echo '<a href="Name_out_4.php?sortierung=o">↓ </a>';
echo ' ';
echo '<a href="Name_out_4.php?sortierung=oa">↑ </a>';
echo '</th>';
echo '<th>';
echo 'Bemerkung ';
echo '</th>';
echo '<th>';
echo ' Kz';
echo '</th>';
echo '</tr>';
// -------------------------------------------------------------------
foreach ( $array as $records )
{
list ($datum, $name, $betrag, $bemerkung, $kz)= explode("|" , $records);
$zeilenr++;
echo '<tr'; echo farbwechsel ( $zeilenr ); echo ">";
// echo '<td>'; echo $zeilenr. "."; echo '</td>';
echo '<th>';
echo $datum;
echo '</th>';
echo "<td> $name </td>";
echo "<td> $betrag</td>";
echo "<td> $bemerkung</td>";
echo "<td>$kz</td>";
echo '</tr>';
}
}
echo '</table>';
// -----------------------------------------------------------
function farbwechsel ( $zeilenr )
{
if ( bcmod ( $zeilenr , '2' ) == 0 )
{
$hintergrundfarbe = ' bgcolor="#ACC8F0" ';
}
else
{ $hintergrundfarbe = ' bgcolor="#DDE8F9" '; }
return ( $hintergrundfarbe );
}
?>
Geändert von vt1816 (23.06.2009 um 00:41:49 Uhr)
Grund: nach Restart jetzt das Sript & [mod: Verhaltensregeln im SelfPHP-Forum]
|

23.06.2009, 00:44:59
|
 |
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: PHP Array_multisort/Mehrfachdimensionales Array
Zitat:
Zitat von huberg
[...]
Und hier mein Script (aber bitte nicht lachen!) - geht aber nicht , Scriptly reagiert nicht.
kommt in der naechsten Antwort.
Huberg
|
Wenn Du hier in Deinem hohen Alter (71???; wenn's dann stimmt - Respekt!!) weiterhin Hilfe erwartest, dann benutze zukünftig die entsprechenden Tag's!
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|

27.06.2009, 23:44:57
|
Anfänger
|
|
Registriert seit: Jun 2009
Alter: 87
Beiträge: 17
|
|
AW: PHP Array_multisort/Mehrfachdimensionales Array
Hallo Web-Künstler,
Eure Unterstützung war gleich Null. Also diesmal werde ich mich nicht bedanken. Aber das ist gut so. Jetzt habe ich mir selber geholfen. Und war gezwungen mich in das Thema ein zuarbeiten. Ich verstehe jetzt das Thema Arrays auch besser.
Das Script vom 22.6.2009 ist voller Fehler - besser nicht anschauen. Hier ist aber die Lösung: Eine Text-Datei einlesen und sortiert nach Spalten ausgeben. Die Tabelle bietet auch die Möglichkeit mehrer Spalten durch Ancliken (Pfeil up u. down) erneut zu sortieren. Array-multisort ist wohl ein heikles Thema für viele. Habe nichts Vergleichbares gefunden. Ein Teil stammt aus: www.php-kurs.com.
Den Input /Output werde ich als Anhang versuchen beizufuegen.
An das SELFPHP-Management, auch wenn ich fast bei Euch zum Alzheimer-Ast zähle, Eure Plattform gefällt mir, Ihr macht eine gute Arbeit.
Farmer (aber mehr Rentner) in Afrika
Huberg
Mein Script:
PHP-Code:
<?php // Version Name_627.php
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
echo "name_xyz.txt Daten Stand 27.6.2009";
$array = file("$DOCUMENT_ROOT/../htdocs/Daten/name_xyz.txt");
$anzahl_zeilen = count($array);
echo "<br/>"; echo "<br/>";
echo 'array vor der Sortierung und vor der Trennung mit explode' ;
echo "<pre>";
print_r ($array); // nur fuer Test
echo "array in 5 Spalten (arrays) zerlegt " ;
echo "<br/>"; echo "<br/>";
for ($i = 0; $i < $anzahl_zeilen ; $i++)
{
// Zeilen in Spalten speichern -----------------------------
$line = explode ("|" , $array[$i]) ;
$datum[$i] = strtolower ($line[0] );
$name[$i] = strtolower ($line[1]);
$betrag[$i] = strtolower ($line[2]);
$bemerkung[$i]= strtolower ($line[3]);
$kz[$i] = strtolower ($line[4]);
print_r ($datum[$i]); // nur fuer Test
print_r ($name[$i] );
print_r ($betrag[$i] );
print_r ($bemerkung[$i] );
print_r ($kz[$i] );
}
switch ( $_GET['sortierung'] )
{
case ( "d" ):
array_multisort($datum, SORT_ASC, $name, SORT_ASC,$betrag, SORT_ASC, $bemerkung, SORT_ASC );
echo "nach switch/case d"; // nur fuer Test
break;
case ( "da" ):
array_multisort($datum, SORT_DESC, $name, SORT_DESC, $betrag, SORT_DESC, $bemerkung, SORT_ASC );
echo "nach switch/case da"; // nur fuer Test
break;
case ( "b" ):
array_multisort( $name, SORT_ASC, $datum, SORT_ASC, $betrag,SORT_ASC,$bemerkung, SORT_ASC );
echo "nach switch/case b"; // nur fuer Test
break;
case ( "ba" ):
array_multisort( $name, SORT_DESC,$datum, SORT_DESC,$betrag, SORT_DESC,$bemerkung, SORT_DESC );
echo "nach switch/case ba"; // nur fuer Test
break;
case ("o"):
array_multisort( $betrag, SORT_ASC,$name, SORT_ASC,$datum, SORT_ASC,$bemerkung, SORT_ASC);
echo "nach switch/case o"; // nur fuer Test
break;
case ("oa"):
array_multisort( $betrag, SORT_DESC,$name, SORT_DESC,$datum, SORT_DESC,$bemerkung, SORT_DESC);
echo "nach switch/case oa"; // nur fuer Test
break;
DEFAULT:
array_multisort($datum, SORT_ASC, $name, SORT_ASC,$betrag, SORT_ASC, $bemerkung, SORT_ASC );
}
ausgabe_tabelle ( $datum, $name, $betrag, $bemerkung, $kz, $anzahl_zeilen);
// ------------------------------------------------------------------
function ausgabe_tabelle ( $datum, $name, $betrag, $bemerkung, $kz, $anzahl_zeilen)
{
echo '<table border="1" cellpadding="6" cellspacing="0">';
echo '<tr bgcolor="#6CF8E6">';
echo '<th>';
echo 'Datum ';
echo '<a href="Name_627.php?sortierung=d">↓</a>';
echo ' ';
echo '<a href="Name_627.php?sortierung=da">↑</a>';
echo '</th>';
echo '<th>';
echo 'Name ';
echo '<a href="Name_627.php?sortierung=b">↓</a>';
echo ' ';
echo '<a href="Name_627.php?sortierung=ba">↑</a>';
echo '</th>';
echo '<th>';
echo 'Betrag ';
echo '<a href="Name_627.php?sortierung=o">↓</a>';
echo ' ';
echo '<a href="Name_627.php?sortierung=oa">↑</a>';
echo '</th>';
echo '<th>';
echo 'Bemerkung ';
echo '</th>';
echo '<th>';
echo ' Kz';
echo '</th>';
echo '</tr>';
// -------------------------------------------------------------------
for ($i = 0; $i < $anzahl_zeilen; $i++)
{
// var_dump($datum); // nur fuer Test
$zeilenr++;
echo '<tr';
echo farbwechsel ( $zeilenr );
echo '>';
echo '<td>';
echo $datum[$i];
echo '</td>';
echo '</td>';
echo '<td>';
echo $name[$i];
echo '</td>';
echo '</td>';
echo '<td>';
echo $betrag[$i];
echo '</td>';
echo '<td>';
echo $bemerkung[$i];
echo '</td>';
echo '<td>';
echo $kz[$i];
echo '</td>';
echo '</tr>';
} }
echo '</table>';
// -----------------------------------------------------------
function farbwechsel ( $zeilenr )
{
if ( bcmod ( $zeilenr , '2' ) == 0 ) {
$hintergrundfarbe = ' bgcolor="#ACC8F0" ';
} else
{ $hintergrundfarbe = ' bgcolor="#DDE8F9" '; }
return ( $hintergrundfarbe );
}
?>
Geändert von vt1816 (28.06.2009 um 12:33:41 Uhr)
Grund: Verhaltensregeln im SelfPHP-Forum
|

28.06.2009, 23:22:08
|
Anfänger
|
|
Registriert seit: Jun 2009
Alter: 87
Beiträge: 17
|
|
AW: PHP Array_multisort/Mehrfachdimensionales Array
Kleiner Fehler:
Um die Zeile beim Sortieren zusammen zuhalten, muss im Code noch eine Erweiterung erfolgen.
Alle Zeilen mit:
array_multisort($datum, SORT_ASC, $name, SORT_ASC,$betrag, SORT_ASC, $bemerkung, SORT_ASC,
bitte dies nachtragen:
$kz, SORT_ASC); bzw. SORT_DESC
dieses Array/Flags sorgt dafuer, dass einer der Sortierung z.B. nach Namen das Kz wieder in der richtigen Zeile steht.
huberg
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:09:08 Uhr.
|