[PHP] Problem mit Arrays.

nDeedy

Erfahrenes Mitglied
Hi, ich bin mittlerweile shcon m ende meiner Kräfte, ich raf einfach nicht, was da noch nicht richtig ist...

Und zwar es ist ein kleines script, er soll zuerst aus einer DB paar Zeilen auslesen, dann eine der zeilen jeweil in teile exploden() ;) . Dann zählen wieviell explodete teile in jedeer zeile sind und das in ein array reinmachen. Also Praktisch müsste er rechnen Zeile 1 -> 3 Zeile 2 -> 5 usw usw. Das dann wie gesagt als ein array speichern. Der array wird dann wiederrum bearbeitet und der muss dann mit foreach das ganze zusammen zählen ;) Also alleine funkzionieren alle Teile glaube ich dirchtig nur zusammen gibt's Streik :( hier ist der ausschnitt:

PHP:
//eine Funktion die den Eintrag zerlegt und zusammen zählt...
function countmulis($var)
  {
$a = explode(",", $var);
$b = count($a);
return $b;
  }

$qry = "SELECT * FROM accounts"; //Querry 
$row = mysql_query($qry);
$result = mysql_num_rows($row);
$result2 = mysql_fetch_row($row);

//diese For-Schleife macht meiner Meinung nach was falsch, 
//aber ich sitze shcon seit 3 stunden daran und finde keine Lösung... 
for ($i = 0; $i == $result; $i++)
  {
	$mulis = $result2[4];
	$b = countmulis($mulis);
	$anzahl_array[$i] = $b;
   
  }

//Das hier geht eigentlich...
foreach($anzahl_array as $v)
   {
    $summe+=$v;
   }

Ich hoffe ich konnte mich gut genug ausdrücken und mir könnte wer helfen ;)
Thx im vorraus
 
Zuletzt bearbeitet:
Mmmh... willst du etwa 4 Datensätze durchgehen?
Das klappt so nicht...mit
PHP:
for ($i = 0; $i < 4; $i++)
bleibst du immer beim selben (ersten) Datensatz hängen... mehr ist in $result2 nicht enthalten.

Schau dir im Manual mal an, wie man sich mehrere Datensätze holt;)
PHP:
<?php

$qry = "SELECT * FROM accounts";
$row = mysql_query($qry);
$result = mysql_num_rows($row);

$summe=0;
$i=0;
while($result2 = mysql_fetch_row($row))
    {
    if($i==4)
        {
        break;
        }
    $summe+=(substr_count($result2[4],',')+1);
    $i++;
    }
?>
 
Zuletzt bearbeitet:
oh mein fehler, ich habe rumprobiert wotran es liegt und vergessen es auszulöschen richtig sollte es so aussehen:

($i=0; $i == $result; $i++)
 
ehm also ich habe dein script, fatalus, nu ausprobiert ohne der If-schleife und in der zeile $summe+=(substr_count($result2[4],',')+1); habe ich ich anstatt der 4 $i eingesetzt. Das ergebnis ist 2. Müsste aber 8 sein. da in jedem eintrag sind 4 wörter die mit ner "," gtrennt sind, also läuft da immer noch was schief :(
 
Du solltest dir eher mal ueberlegen, ob du nicht dein Datenbankdesign etwas aenderst. So wie ich das sehe hast du in der Tabelle Accounts ein Feld mit vielen "Mulis" (was auch immer das ist).
Logischer waere aber eine zweite Tabelle, sagen wir mal "Account_Mulis", in denen du die Mulis abspeicherst, mit einer ID des jeweiligen Account dazu.

Dann machst du so was:

SELECT * FROM Accounts;
....
$id = $result[0];
....
SELECT * FROM Account_Mulis WHERE account_id = '$id';

Etwas mit Kommas getrennt in einer Datenbank zu speichern widerspricht einfach der eigentlichen Idee von Datenbanken. Dann koenntest du auch gleich Textdateien nehmen.
 
jo die Lösung würde natürlich auch gehen und wäre auch recht leicht ausfallen, aber ich wollte mir halt ein Tabelle sparen und alles in eine reinpacken ;) Na ja wenn keiner ne Lösung findet, mach ich's halt so, aber ich warte noch n bisschen, vielleicht gibt's hier Genies ;)

btw @ Zatic: es handelt sich hier um eine datenbank für diablo2. Ich habe sehr viele Charaktere die nur da sind um Sachen im Inventar aufzubewahren. Das sind die sogennanten Mulis ;)
 
Zuletzt bearbeitet:
Hast Du schon überprüft, ob auch der Inhalt aus dem richtigen Feld (Spalte) geholt wird. Das kann man nämlich anhand Deines Codes nicht überprüfen.

Verwende lieber
PHP:
$result2 = mysql_fetch_array($row);
und greife dann auf die Daten mittels
PHP:
$result2['feldname']
zu.

P.S.: Ein Genie würde Dir zum Konvertieren der Datenstruktur in die 3. Normalform raten.

snuu
 
jojo ich habe alles zich mal überprüft und verschieden Wege ausprobiert. Aber leider muss ich jetzt es einsehen, dass ich doch ne extra tabelle machen müsste. Na ja um so leichter ist es ;)
 
Zurück