Avatar billede henrik6666 Nybegynder
04. september 2006 - 23:01 Der er 13 kommentarer og
1 løsning

Opdele variabel

Hej ..

Hvordan får jeg opdelt min variabel ? Variablen $data indeholder flg som kommer fra DB :

id = 1 , person 1
id = 2 , person 2
.
.
.
id = 3 , person 8

Dvs min $data henter id fra 1 til 8 hvor personernes er forskellige.

Problemet er at jeg kun kan udskrive de 8 navne enten vandret eller lodret men jeg vil gerne selv bestemme placeringen derfor mit spørgsmål :-)
Avatar billede henrik6666 Nybegynder
04. september 2006 - 23:02 #1
Oops ..

id = 1 , person 1
id = 2 , person 2
.
.
.
id = 8 , person 8
Avatar billede Slettet bruger
04. september 2006 - 23:03 #2
Jo du kan jo lave et array:

$query = mysql_query(..);
while($row = mysql_fetch_object($query)) {
  $myPersons[$row->id] = $row->name;
}

Så har du et array (en liste) med alle personer, og du udskriver dem som:

echo $myPersons[0]; // person 1
Avatar billede Slettet bruger
04. september 2006 - 23:04 #3
echo $myPersons[1]; // person 1

Selvfølgelig :)
Avatar billede Slettet bruger
04. september 2006 - 23:08 #4
Men det er ofte nemmere at lave det dynamisk. Hvis du kan specificere, hvordan du vil have det opstillet, kan det måske laves smartere. :)
Avatar billede Slettet bruger
04. september 2006 - 23:58 #5
Du bliver nok nødt til at uddybe spørgsmålet lidt.
Avatar billede shooka Nybegynder
05. september 2006 - 00:01 #6
Jeg tror, at Wicez har fat i noget af det rigtige ;)
Avatar billede henrik6666 Nybegynder
05. september 2006 - 08:00 #7
Godmorgen ..

Jeg uddyber lige spørgsmålet lidt mere :-)

Nedenstående viser en del af koderne i et "paging-system" som jeg benytter og det er her jeg gerne vil have opdelt $data så det ikke kun kan udskrive lodret eller vandret.

$pr_side = 8;
$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM navneliste"),0) or die(mysql_error());
$vis_fra = (isset($HTTP_GET_VARS["visfra"]) && is_numeric($HTTP_GET_VARS["visfra"]) && $HTTP_GET_VARS["visfra"] < $antal) ? $HTTP_GET_VARS["visfra"] : 0;
$query = mysql_query ("SELECT * FROM navneliste ORDER BY id limit $vis_fra, $pr_side") or die(mysql_error());
while ($data = mysql_fetch_array($query)) {

echo "$data[1]";
}

Og her er det at jeg godt kunne tænke mig at få opdelt $data så jeg fx kan udskrive 2 rækker af 4 navne.
Avatar billede Slettet bruger
05. september 2006 - 09:30 #8
<?php
$pr_side = 8;
$mQuery = mysql_query("SELECT * FROM navneliste") or die(mysql_error();
$vis_fra = (isset($HTTP_GET_VARS["visfra"]) && is_numeric($HTTP_GET_VARS["visfra"]) && $HTTP_GET_VARS["visfra"] < $antal) ? $HTTP_GET_VARS["visfra"] : 0;
$query = mysql_query ("SELECT * FROM navneliste ORDER BY id limit ". $vis_fra .", ". $pr_side) or die(mysql_error());
while ($data = mysql_fetch_row($query)) {
    echo "<div style=\"float: left; width: 45%;\">";
    echo $data[1];
    echo "</div>";
}
?>

Den her vil placere dem i 2 rækker.
Avatar billede Slettet bruger
05. september 2006 - 09:31 #9
Hov.. Fjernede lige dit "antal".

<?php
$pr_side = 8;
$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM navneliste"),0) or die(mysql_error());
$vis_fra = (isset($HTTP_GET_VARS["visfra"]) && is_numeric($HTTP_GET_VARS["visfra"]) && $HTTP_GET_VARS["visfra"] < $antal) ? $HTTP_GET_VARS["visfra"] : 0;
$query = mysql_query ("SELECT * FROM navneliste ORDER BY id limit ". $vis_fra .", ". $pr_side) or die(mysql_error());
while ($data = mysql_fetch_row($query)) {
    echo "<div style=\"float: left; width: 45%;\">";
    echo $data[1];
    echo "</div>";
}
?>
Avatar billede henrik6666 Nybegynder
05. september 2006 - 18:47 #10
Mange mange tak for jeres indlæg men det var nu en php løsning jeg var ude efter. En slags opdeling af $data hvor jeg selv kan vælge hvilke navne jeg vil vise hvergang den henter 8 navne og hvordan de skal vises ..

Kan man overhovedet det ?

Vender lige tilbage ..nok først imorgen med mine egne ideer.
Avatar billede Slettet bruger
05. september 2006 - 18:57 #11
$query = mysql_query(..);
while($row = mysql_fetch_object($query)) {
  $myPersons[$row->id] = $row->name;
}
Avatar billede henrik6666 Nybegynder
05. september 2006 - 23:06 #12
Altså dit første input som jeg ikke forstod ! Men faktisk var det svaret på mit spørgsmål (det tog ca. hele min aften før den var på plads) ..

Jeg har ændret lidt i DB og indført et billede istedet for navn (navn skal dog med bare ikke i dette eks.) og indført et nummersystem som kører fra 1 til 8 hele tiden (ordnes automatisk i min admin del) så mine "slam koder" ser pt sådan ud :

$query = mysql_query("SELECT * FROM liste ORDER BY id limit $vis_fra, $pr_side") or die(mysql_error());
while($row = mysql_fetch_object($query)) {
if ($row->nr == 1) {
echo "<div align=\"center\"><table><tr>";
echo "<td><img src=\"";
echo $row->billede;
echo "\" alt=\"\"></td>";
}
if ($row->nr == 2) {
echo "<td><img src=\"";
echo $row->billede;
echo "\" alt=\"\"></td>";
}
if ($row->nr == 3) {
echo "<td><img src=\"";
echo $row->billede;
echo "\" alt=\"\"></td>";
}
if ($row->nr == 4) {
echo "<td><img src=\"";
echo $row->billede;
echo "\" alt=\"\"></td>";
}
if ($row->nr == 5) {
echo "</tr><tr><td><img src=\"";
echo $row->billede;
echo "\" alt=\"\"></td>";
}
if ($row->nr == 6) {
echo "<td><img src=\"";
echo $row->billede;
echo "\" alt=\"\"></td>";
}
if ($row->nr == 7) {
echo "<td><img src=\"";
echo $row->billede;
echo "\" alt=\"\"></td>";
}
if ($row->nr == 8) {
echo "<td><img src=\"";
echo $row->billede;
echo "\" alt=\"\"></td></tr></table></div>";
}
}

Så tak for hjælpen og hvis du har et bedre og måske pænere forslag til det jeg vil må du gerne vise hvordan :-)
Avatar billede Slettet bruger
06. september 2006 - 06:51 #13
Jeg kan lige lave en lidt mere dynamisk løsning.. Jeg kigger tilbage lidt senere i dag eller first thing i morgen :)
Avatar billede Slettet bruger
07. september 2006 - 14:40 #14
Jeg har ikke testet det, men sådan noget lignende:

<?php
$query = mysql_query("SELECT * FROM liste ORDER BY id limit $vis_fra, $pr_side") or die(mysql_error());
echo "<table style=\"margin: 0 auto; width: 800px;\"><tr>";
while($row = mysql_fetch_object($query)) {
    static $count = 1;           
    $output .= "
    <td style=\"width: 200px;\">
      <img src=\"". $row->billede ."\" alt=\"\">
    </td>";
   
    if($count == mysql_num_rows($query) && $count % 4 != 0) {
        $RestColumns = $count % 4;
        for($i=0;$i<=$RestColumns;$i++) {
            echo "<td style=\"width: 200px;\">&nbsp;</td>";
        }
    }
   
    if($count % 4 == 0 || $count == mysql_num_rows($query)) {
        echo "</tr>";
        if($count != mysql_num_rows($query)) {
            echo "<tr>";
        }
    }
   
    $count++;
}
echo "</table>";
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester