SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.06.2009, 11:27:52
huberg huberg ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 86
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
Mit Zitat antworten
  #2  
Alt 22.06.2009, 11:46:30
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
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($keysexplode("|",$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 11:49:09 Uhr)
Mit Zitat antworten
  #3  
Alt 22.06.2009, 22:51:04
huberg huberg ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 86
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$datumSORT_ASC$nameSORT_ASC$array );
        echo 
"nach switch d";  // nur  fuert Test
        
break;
    case ( 
"da" ):
        
array_multisort$datumORT_DESC$nameSORT_DESC$array );
        echo 
"nach switch da";  // nur  fuert Test
        
break;
    case ( 
"b" ): array_multisort$datumSORT_ASC$nameSORT_ASC$array );
        echo 
"nach switch b";   // nur  fuert Test
        
break;
    case ( 
"ba" ):  array_multisort$nameSORT_DESC$array );
        echo 
"nach switch ba";    // nur  fuert Test
        
break;
        DEFAULT:
        
array_multisort$datumSORT_ASC$nameSORT_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">&darr; </a>';
        echo 
' ';
        echo 
'<a href="Name_out_4.php?sortierung=da">&uarr; </a>';
        echo 
'</th>';
        echo 
'<th>';
        echo 
'Name';
        echo 
'<a href="Name_out_4.php?sortierung=b">&darr; </a>';
        echo 
' ';
        echo 
'<a href="Name_out_4.php?sortierung=ba">&uarr; </a>';
        echo 
'</th>';
        echo 
'<th>';
        echo 
'Betrag';
        echo 
'<a href="Name_out_4.php?sortierung=o">&darr; </a>';
        echo 
' ';
        echo 
'<a href="Name_out_4.php?sortierung=oa">&uarr; </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' ) == )
        {
        
$hintergrundfarbe ' bgcolor="#ACC8F0" ';
        }
    else
        { 
$hintergrundfarbe ' bgcolor="#DDE8F9" '; }
    return ( 
$hintergrundfarbe );
    }
?>

Geändert von vt1816 (22.06.2009 um 23:41:49 Uhr) Grund: nach Restart jetzt das Sript & [mod: Verhaltensregeln im SelfPHP-Forum]
Mit Zitat antworten
  #4  
Alt 22.06.2009, 23:44:59
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: PHP Array_multisort/Mehrfachdimensionales Array

Zitat:
Zitat von huberg Beitrag anzeigen
[...]
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!
Mit Zitat antworten
  #5  
Alt 27.06.2009, 22:44:57
huberg huberg ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 86
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($datumSORT_ASC$nameSORT_ASC,$betragSORT_ASC$bemerkungSORT_ASC );
        echo 
"nach switch/case d"//  nur fuer Test
        
break;
    case ( 
"da" ):
        
array_multisort($datumSORT_DESC$nameSORT_DESC$betragSORT_DESC$bemerkungSORT_ASC );
        echo 
"nach switch/case da"//  nur fuer Test
        
break;
    case ( 
"b" ):
        
array_multisort$nameSORT_ASC$datumSORT_ASC$betrag,SORT_ASC,$bemerkungSORT_ASC );
        echo 
"nach switch/case b";  //  nur fuer Test
        
break;
    case ( 
"ba" ):
        
array_multisort$nameSORT_DESC,$datumSORT_DESC,$betragSORT_DESC,$bemerkungSORT_DESC );
        echo 
"nach switch/case ba";  //  nur fuer Test
        
break;
    case (
"o"):
        
array_multisort$betragSORT_ASC,$nameSORT_ASC,$datumSORT_ASC,$bemerkungSORT_ASC);
        echo 
"nach switch/case o";    //  nur fuer Test
        
break;
     case (
"oa"):
        
array_multisort$betragSORT_DESC,$nameSORT_DESC,$datumSORT_DESC,$bemerkungSORT_DESC);
        echo 
"nach switch/case oa";   //  nur fuer Test
        
break;
    DEFAULT:
       
array_multisort($datumSORT_ASC$nameSORT_ASC,$betragSORT_ASC$bemerkungSORT_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">&darr;</a>';
    echo 
' ';
    echo 
'<a href="Name_627.php?sortierung=da">&uarr;</a>';
    echo 
'</th>';
    echo 
'<th>';
    echo 
'Name  ';
    echo 
'<a href="Name_627.php?sortierung=b">&darr;</a>';
    echo 
' ';
    echo 
'<a href="Name_627.php?sortierung=ba">&uarr;</a>';
    echo 
'</th>';
    echo 
'<th>';
    echo 
'Betrag ';
    echo 
'<a href="Name_627.php?sortierung=o">&darr;</a>';
    echo 
' ';
    echo 
'<a href="Name_627.php?sortierung=oa">&uarr;</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' ) == ) {
        
$hintergrundfarbe ' bgcolor="#ACC8F0" ';
         } else
        { 
$hintergrundfarbe       ' bgcolor="#DDE8F9" '; }
         return ( 
$hintergrundfarbe );
}
?>
Angehängte Dateien
Dateityp: doc SelfPHP-Screen_Array_multisort.doc (66,0 KB, 57x aufgerufen)

Geändert von vt1816 (28.06.2009 um 11:33:41 Uhr) Grund: Verhaltensregeln im SelfPHP-Forum
Mit Zitat antworten
  #6  
Alt 28.06.2009, 22:22:08
huberg huberg ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 86
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
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
neuling bitte hilfe bei php konfiguration anonym Apache HTTP-Server 3 21.10.2008 07:59:29
Array formatiert ausgeben Faang PHP Grundlagen 3 15.08.2008 01:47:43
$_SESSION Speichert array nicht McB_sser PHP Entwicklung und Softwaredesign 28 07.08.2008 17:59:15
Array sortierten sinfo PHP für Fortgeschrittene und Experten 4 26.11.2006 15:26:57
Einführung in PHP und Datenbanken Lómion PHP für Fortgeschrittene und Experten 7 07.02.2002 13:47:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:52:23 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt