Algorythmus

Wolfsbein

Erfahrenes Mitglied
Algorithmus

Hallo.
Ich will aus einer Datenbank etwas auslesen und in einer Tabelle mit drei Spalten alphabetisch ausgeben. Die erste Spalte zuerst, dann die zweite... Das was ich geschrieben habe gibt nur zwei Spalten aus und arbeitet von links nach rechts, also genau das was es nicht soll.
Code:
$i=1;
   while ($result_array=mysql_fetch_array($result))
   {
       echo "<td width=\"150\">";
       echo getLink($result_array["ID"]);
       echo $result_array["LNAME"];
       echo "&nbsp;";
       echo $result_array["FNAME"];
       echo "</a></td>\n";
       // Erzeugt Tabelle mit zwei Spalten
       global $i;
       $i++;
       if ($i%2)
       {
           echo "</tr><tr>";
       }
   }
   echo "</tr></table>";

Dann wollt ich noch fragen, welchen Zeichesatz ich in der mySQL Datenbank einstelln muss, damit beim alphabetischen Sortieren Umlaute korrekt sortiert werden?
 
Also ich hoffe ich versteh dich richt:

3 Spalten
beudetet
| 1.spalte | 2.spalte | 3.spalte |

du willst also

| id | LNAME | FNAME |



if($i%2)

diese Zeile Code bescherrt einem TRUE bei
1,3,5,7,9....
das heisst du willst demnach nach jeden 2. Schleifendurchlauf ein </tr><tr> durchfuehren ?
Sprich gehen wir das mal durch:

i ist 1
<td>id (getLink ist eine deiner funktionen>
LNAME
FNAME
</a></td>


Das ist der Fehler !
mach es folgendermassen :

PHP:
 echo "<td width=\"150\">";
       echo getLink($result_array["ID"]);
       echo $result_array["LNAME"]."</td><td>";
       echo " ";
       echo $result_array["FNAME"]."</td><td>";;
       echo "</a></td>\n";

Dann haut das hin. Aber ehrlich gesagt :Woflsbein ist der Code doch etwas sehr kryptisch.

Les deine Datenbank doch mit:
Select id, LNAME, FNAME from ...
aus
und nutze solch ein code
PHP:
  while ($result_array=mysql_fetch_array($result))
   {?>
  <tr>
  <td>
  <a href="<? echo $result_array["ID"]; ?></td>
  <td><? echo $result_array["LNAME"]; ?></td>
  <td><? echo $result_array["FNAME"]; ?></td>
  </tr>
    <?
    }

Ich bette grundsaetzlich bei der Ausgabe PHP in HTML ein und nicht umgekehrt. Ist uebersichtlicher und ansonsten das selbe.

gruss holy
 
Ähh das hast du jetzt etwas nicht richtig verstanden. Der Name soll jeweils in eine Spalte und die ID taucht nur im Link auf. Das müsste eigentlich aus dem Code ersichtlich sein.
Es soll also so aussehen:
AA BB CC
AB BC CD
etc. ...
 
Oehm sorry aber mit
AA BB CC
AB BC CD

kann ich nicht viel anfangen :)
Sollte eventuell
A = ID
B = LNAME
C = FNAME

sein ?

Ohne das jemand genau weiss was du bezwecken willst kann man dir nicht helfen. Bitte denk dran das es mir aus einem Codeschnipsel nicht ersichtlich sein kann was du denn genau haben willst :)

Also AA BB CC sagt nicht viel aus :p
mir zumindest nichts
 
In die erste Zeile Spalte1 kommt der erste Name, in die zweite Zeile Spalte 1 kommt der zweite Name...
in die erste Zeil Spalte2 kommt der xte Name, in die zweite Zeile Spalte2 kommt der xte +1 Name...
in die erste Zeile Spalte3 kommt der yte Name, in die zweite Zeile Spalte3 kommt der yte + 1 Name...
Vielleicht ist es so verständlicher?
 
ahh okido

1.Name | x.name | y.name
2.Name | X+1 name| y+ 1name
3.Name | X+2 name| y+2 name

Was ist X und was ist Y ???

Willst du nun 3 namen ueber 3 Zeilen verteilen und dann die naechste spalte fuellen ?

Wenn ja:

PHP:
$blub = array("1.name","2.name","3.name","4.name","5.name","6.name","7.name");
$anzahl =count($blub);
$spalten = $anzahl / 3;
settype($spalten, integer);
      for ($i = 0; $i < $anzahl; $i++)
		   {
		       if($i%3==0){
			   echo "<td>" . $blub[$i] . "<br>";
			   echo "<td>" . $blub[$i+1] . "<br>";
			   echo "<td>" . $blub[$i+2] . "<br>";
			   echo "</tr><tr>";
		       }
		   }

Sprich dein komplettes DB ergebnis in ein Array packen und es so auslesen.

hoffe ich habe dich nun richtig verstanden :)
 
Ich mache jetzt folgendes:
Code:
function getArray()
   {
       global $result;
       while ($result_array=mysql_fetch_array($result,  MYSQL_ASSOC))
      {
           $i=0;
           $name=$result_array["LNAME"];
           $name.="&nbsp;";
           $name.=$result_array["FNAME"];
           //echo "$name\n";
           $blub[$i]=$name;
           //echo "$blub[$i] \n";
           $i++;
      }

      return $blub;
   }
Das Array $blub hat aber nur einen Wert?
Wenn ich das zweite echo einfüge, werden aber alle Namen innerhalb der Schleife angezeigt.
Ich glaube fast ich lasse die alte Lösung stehen :mad:.
 
also ich habe den code den ich dir gegeben habe getestet der geht schon !

mysql_fetch_array gibt dir einen Datensatz (sprich eine DB Zeile) als asoziatieves Array zurueck.
Das heisst wenn du die 2. Daten ausliest ist in dem Array $result die vorgaenger Zeile verloren.

Das bedeuted du musst den Datensatz array einem extra array zuordnen :)

sprich:
$i = 0;
while ($result=mysql_fetch_array{...
$ausGabe[$i] = datensatz 1
$ausGabe[$i+1] = datensatz 2
$ausGabe[$i+2] = datensatz 3
$i += 3;
}

naja so haut das hin !
 
Ja, aber ich möchte in einer Zelle mehere Daten aus einem Datensatz einfügen. Und in jeder Zelle ist ein anderer Datensatz. Das ist ja das eigentlich Problem, dass das ganze verkompliziert.
 

Neue Beiträge

Zurück