Werte aus DB in 2 Td's ausgeben ...

Hi CommZ,

Ich hoffe she rmir kann diesmal jemand weiterhelfen, ich finde diese Aufgabe diesmal nämlich recht anspruchsvoll. naja anfänger halt aber einfach ist es nicht... =)

Ich habe in einer Tabelle mehrere Links und möchte nun das sie so:

Code:
Schleife --->
<tr>
<td>Link 1</td>
</td>Link 2</td>
.... schleife läuft
<td>Link 3</td>
</td>Link 4</td>

ausgegeben werden.
Also halt nebeneinander, 2 Reihen.

Meine erste Überlegung war dort 2 Schleifen einzufügen, meine 2te war zu schauen jedesmal ob der Zählwert gerade oder ubngerade ist und beispielsweise links die geraden links auszugeben und rechts die ungeraden...

für die 2 Schleifen Vorstellung fehlt mir die nötige Intelligenz, aber ich kanns ja als belesenheit verbuchen wenn mir jemand zeigt wies geht :)!

MfG,

euer TeeKayo?
 
PHP:
<?php

function createLinkTable($data = array()) {

    $strTable = '<table>';
    $cols = 0;

    for ($i = 0; $i < 2; $i++) {
        $strTable.= '<tr>';
       while ($cols < 5)  {
            $strTable.='<td>' . $data['link'] . '</td>';
            $cols++;
        }
        $strTable.= '</tr>';
    }
    $strTable.= '</table>';
    return $strTable;

}


?>

Das hab ich jetzt schnell geschrieben, Du musst es nur so umschreiben das es Dir paßt. Und Testen musst es auch noch ;-), das hab ich nämlich nicht.
 
Original von BasicAvid
PHP:
<?php

function createLinkTable($data = array()) {

    $strTable = '<table>';
    $cols = 0;

    for ($i = 0; $i < 2; $i++) {
        $strTable.= '<tr>';
       while ($cols < 5)  {
            $strTable.='<td>' . $data['link'] . '</td>';
            $cols++;
        }
        $strTable.= '</tr>';
    }

    return $strTable;

}


?>

Das hab ich jetzt schnell geschrieben, Du musst es nur so umschreiben das es Dir paßt. Und Testen musst es auch noch ;-), das hab ich nämlich nicht.

das table muss noch geschlossen werden in dem beispiel also vor dem return noch mal
PHP:
$strTable .= '</table>';
 
Code:
$table = '<table>';
			 $cols = 0;
										
				 for ($i = 0; $i < $checka; $i++) {
										    	
						$table.= '<tr>';
										        			
				 while ($cols < 3)  {
$table.='<td><a href="'.$check2[$i].'">'.$check2[$i].'</a>  </td>';
										           
				 $cols++;
										        								                                                    }
			 $table.= '</tr>';
										    }
			$table .= '</table>';
			echo "$table";

Bis auf die (für mich Schwierigkeit) das noch als Link auszugeben kein Ding, also super danke und Juhujuhu :D

Vielen Dank nochmal!!!!

Einen schönen Abend noch euch allen,

euer TeeKayo?

PS:ZU früh gefreut!! Eben hatte ich 3 mal den selben link eingetragen daher viels mir nicht auf aber eben beim testdurchlauf nochmal seh ich, er gibt mir ein und den selben link 3 mal aus... liegt nehme ich an an meiner arrayabfrage oder?
 
Du siehst das es das nichtmehr ist oder?

Was macht da den Unterschied wenn du so nett wärest es mir anständig zu erklären?

MfG,

Teekayo?
 
mmhz ich muss jetzut mal die hand ins feuer legen für den threadersteller :)

ich finde es zwar toll das hier jmd eine lösung gegeben hat aber ich denke mal für ihn ohne kommentare ohne alles is die schwer zu verstehen also bloses copy&paste wird das wohl sein also ich würde sagen wenn codes gepostet werden die wenigstens klein wenig auszukommentieren :)

*ich hoffe niemand fühlt sich angegriffen*
 
Hi,

Den Code habe ich verstanden das ist nicht das Problem.
Ich wusste nur nicht die Idee umzusetzen was hier ja zu 95% korrekt gepostet wurde, trotzdem in anderen Fällen sicherlich richtig.

Ich habe oben den code gepostet wie ich ihn angespasst habe!
Nur ist halt das ganze nochimmer "falsch" weil mir link 1 einfach 3 mal ausgegeben wird und nicht link1 - link2 - link3 wie ich es mir vorstelle!!

Also wenn jemand nochmal reinschauen mag und mir sagen kann was ich umändern müsste wäre das sehr fein :)!

MfG,

euer TeeKayo?
 
Mein Code ist nicht ganz Fehlerfrei musste ich feststellen.

PHP:
function createLinkTable($data = array()) {

    $strTable = '<table>';
    $cols = 0;
    $links = 0;    

    for ($i = 0; $i < 2; $i++) {
        $strTable.= '<tr>';
       while ($cols < 5)  {
            $strTable.='<td>' . $link[$links] . '</td>';
            $cols++;
            $links++;
        }
        $strTable.= '</tr>';
        $cols = 0;
    }

    return $strTable;

}

So sollte es jetzt gehen! Hab es aber wieder mal nicht getestet nur schnell schnell hingeschrieben deshalb auch keine Kommentare.
 
Hi,

Also ich habs jetzt mal als function gelassen und die paar Dinge angepasst aber es geht leider noch nciht und ich weiss nicht wieso wäre nice wenn du nochmal rüberschauen könntest.

Code:
	function createLinkTable($check2 = array()) {

    $strTable = '<table>';
    $cols = 0;
    $links = 0;    

    for ($i = 0; $i < 2; $i++) {
        $strTable.= '<tr>';
       while ($cols < 5)  {
            $strTable.='<td><a href="'.$check2[$links].'">'.$check2[$links].'</a>  </td>';
            $cols++;
            $links++;
        }
        $strTable.= '</tr>';
        $cols = 0;
    }

    return $strTable;

}	
							
echo "$strTable";


Dazu ist glaube ich die SQLabfrage nocwichtig weil ich vermute es hapert da bei der Ausgabe, denn ich frage nur Links ab, in meinem array stehen nur die Links.

Müsste das dann nicht eher mit noch ner for schleife und $check2[$i] oder so laufen??


Die SQLAbfrage sieht wie folgt aus:

$check = mysql_query ("SELECT links FROM userdata WHERE username='$username' && passwort='$passwort'") or die ('verbindung bereits hier fehlgeschlagen');
$check2 = mysql_fetch_array($check);
$checka = mysql_num_rows($check);

Danke,

MfG,

TeeKayo?
 
Also wenn Du nicht sagst, was es tut oder nicht tut, kann ich Dir nicht helfen!

Ich habe es gerade bei mir probiert und es geht einwandfrei.

$check2 = array(1,2,3,4,5,6,7,8,9,10); // Ist nur zum Testen

echo createLinkTable($check2);

Ach ja, die Funktion gibt maximal 10 Links aus. Falls Sie mehr ausgeben soll, musst Du einfach die äussere Schleife anpassen.

Aber schreib einfach mal den Fehler der kommt oder was genau nicht tut.
 
Moin,

Er gibt mir dne ersten Link aus, das ist mein Problem

print_r($check);

---> Array ( [0] => worldofcrime.de [links] => worldofcrime.de )

mfg,

tko?

Ps: $check2 ist bereits ein array!
PPS:Hab jetzt mehrer Varianten probiert das die function jedesmal nen wert halt zieht ausm array aber mal mag die function nicht eingeklammert zu werden davon und die anderen sachen genhn auch nicht.... :/

Nochmal zum besseren Verständniss vll. sieht man ja was ich meine ausm Code:

Code:
function createLinkTable($testing)  {
	
	  for($z=0;$z<$checka;$z++) {
	
	  $check2   = mysql_fetch_array($check);

    $strTable = '<table>';
    $cols = 0;
    $links = 0;    


        $strTable.= '<tr>';
       while ($cols < 5)  {
            $strTable.='<td><a href="'.$check2[0].'">'.$check2[0].'</a>  </td>';
            $cols++;
            $links++;
        }
        $strTable.= '</tr>';
        $cols = 0;
      			
				
		}
 return $strTable;

}	
							
	echo createLinkTable($testing);


Zu beachten wären hierbei Zeile 4 & 6, danke,

MfG,

Tko?
 
Besteht Dein Problem noch?
Wenn ich vorher gewußt hätte wie Dein Array aufgebaut ist, hättest jetzt schon eine gute Lösung ;-).
Die Funktion ist so ausgelegt das Du Ihr ein Array mit allen Links der DB übergibst!
Aber Du liest ja in der äußeren Schleife immer eine Zeile aus der DB aus, mach mal den mysql_fetch_array() in die zweite Schleife. Bei Dir wird in der inneren Schleife immer die gleiche Zeile aus der DB verarbeitet. Die Abbruch-Bedingung stimmt dann so auch nicht mehr.
 
Zurück
Oben