Avatar billede pemo123456 Novice
17. maj 2011 - 09:47 Der er 10 kommentarer og
2 løsninger

Automatisk genereret list i PHP script med data fra MySQL

Hej

Forsøger at lave et script, der skal generere en liste automatisk. Indtil videre har jeg forsøgt mig lidt med nedenstående script, men det virker ikke helt efter hensigten. Umiddelbart tror jeg, at jeg skal over i en array, men det har jeg desværre endnu ikke det store kendskab til, hvorfor jeg bliver rigtig glad for lidt hjælp enten i form af en løsning/beskrivelse her eller linkt til en eller flere sider, der forklarer det godt, hvilket jeg desværre ikke har kunne finde. Kan selvfølgelig også være, at det er noget helt tredje, jeg skal bruge som løsning.

Her er hvad jeg har forsøgt mig med:

    $list_var1 .= "$var1<br />";
    $list_var2 .= "$var2";
    $list_var3 .= "$var3<br />";
   
    $list_var4 .= "$var4";
        $list_var5 .= "$var5";
    $list_var6 .= "$var6<br /><hr />";


          <td>
          <?php echo $list_var1 ?>
          <?php echo $list_var2 ?>
          <?php echo $list_var3 ?>
         
          <?php echo $list_var4 ?>
          <?php echo $list_var5 ?>
          <?php echo $list_var6 ?>

          </td>
Avatar billede kjeldsted Novice
17. maj 2011 - 09:54 #1
Hm. Du har da i hvert fald en stor fejl. Du afslutter ikke PHP inden du begynder på php. Du vil nok have større succes med følgende

$list_var1 .= "$var1<br />";
    $list_var2 .= "$var2";
    $list_var3 .= "$var3<br />";
 
    $list_var4 .= "$var4";
        $list_var5 .= "$var5";
    $list_var6 .= "$var6<br /><hr />";
    ?>


          <td>
          <?php echo $list_var1 ?>
          <?php echo $list_var2 ?>
          <?php echo $list_var3 ?>
       
          <?php echo $list_var4 ?>
          <?php echo $list_var5 ?>
          <?php echo $list_var6 ?>

          </td>
Avatar billede kjeldsted Novice
17. maj 2011 - 09:55 #2
Og så bør du nok også ændre $list_var2 .= "$var2"; til $list_var2 .= $var2; Og lige ledes med den 5.
Avatar billede pemo123456 Novice
17. maj 2011 - 10:09 #3
Hej

Tak for hjælp indtil videre. Har afslutet mit script sådan som det skal, men har ikke taget det med her, da det blot er fyld (det samme med tabellen).

Prøver lige at fjerne "". Som jeg læser dit andet indspark, ser er det dem, jeg har for meget.

Hvis du så har et forslag til en anden måde, min liste kan laves på, så må du meget gerne smide lidt om det. Og bare nogle nøgleord, jeg kan søge på, er fint - er lidt blank på dette område, så ved ikke engang, hvad jeg skal søge på.
Avatar billede pemo123456 Novice
17. maj 2011 - 10:27 #4
Kan også konstatere, at den løsning, jeg har forsøgt mig med, ikke genererer en fuld liste, men derimod blot laver et output med en enkelt række fra min tabel.
Avatar billede coderdk Praktikant
17. maj 2011 - 13:27 #5
// query her
echo "<table>";
while ( $row = mysql_fetch_assoc( $result ) )
{
  echo "<tr>";
  foreach ( $row as $col )
  {
      echo "<td>" . $col . "</td>";
  }
  echo "</tr>";
}
echo "</table>";
Avatar billede pemo123456 Novice
17. maj 2011 - 13:56 #6
@ coderdk

Kan du uddybe den lidt? Må jeg indrømme, at der er jeg alt for grøn til PHP til at få noget ud af det.
Avatar billede kjeldsted Novice
17. maj 2011 - 16:01 #7
Er
  $list_var1 .= "$var1<br />";
    $list_var2 .= "$var2";
    $list_var3 .= "$var3<br />";
 
    $list_var4 .= "$var4";
        $list_var5 .= "$var5";
    $list_var6 .= "$var6<br /><hr />";


          <td>
          <?php echo $list_var1 ?>
          <?php echo $list_var2 ?>
          <?php echo $list_var3 ?>
       
          <?php echo $list_var4 ?>
          <?php echo $list_var5 ?>
          <?php echo $list_var6 ?>

          </td>
præcis det du har skrevet. For dér er php tagsne ikke afsluttet korrekt!?
Og det jeg mente med " er sådan set ikke fordi det vil ændre så meget. Kun at det vil blive en my hurtigere samt mere korrekt PHP. Og det jeg mente er som følger:
  $list_var1 .= "$var1<br />";
    $list_var2 .= $var2;
    $list_var3 .= "$var3<br />";
 
    $list_var4 .= $var4;
        $list_var5 .= $var5;
    $list_var6 .= "$var6<br /><hr />";
?>

          <td>
          <?php echo $list_var1 ?>
          <?php echo $list_var2 ?>
          <?php echo $list_var3 ?>
       
          <?php echo $list_var4 ?>
          <?php echo $list_var5 ?>
          <?php echo $list_var6 ?>

          </td>
Avatar billede pemo123456 Novice
17. maj 2011 - 16:33 #8
Hej

Med afsæt i det, I har skrevet, og så samtidig prøve mig lidt frem, er jeg nået frem til at nedenstående kode giver det output, jeg gerne vil have. Mit spørgsmål skal dog også ses lidt i lyset af, at jeg tror der er en smartere måde at gøre det på, hvilket jeg gerne vil lære noget om. Men i hvert fald er mit problem løst for nu, så hvis I hver gider smide et svar, så er der point deling og tak for hjælp herfra. Og hvis I så har en god idé til anden løsning, så hører jeg gerne herom. Blot et link eller nogle nøgleord, som jeg kan søge på. Tak for hjælp.

<?php

$sqlCommand = "SELECT * FROM my_table ORDER BY id DESC";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());

$list = '';
while ($row = mysqli_fetch_array($query)) {

    $var1 = $row["var1"];
    $var2 = $row["var2"];
    $var3 = $row["var3"];   
    $var4 = $row["var4"];
    $var5 = $row["var5"];
    $var6 = $row["var6"];

    $list .= "<span class=\"headline\">$var1</span><br /><span class=\"subheadline\">$var2  *  $var3<br />Bedrooms: $var4  *  Bathrooms: $var5<br />$var6</span><hr /><br />";

}

mysqli_free_result($query);      
?>

Og så ellers <?php echo $list ?> i min tabel.

At ovenstående giver et brugbart output frem for en lang list med fejl, må jeg bare indrømme, overrasker mig meget.

Men smid venligst et svar, så er der point på vej.
Avatar billede kjeldsted Novice
17. maj 2011 - 16:48 #9
Først.

Du behøver ikke $list = '';

Desuden behøver du da ikke at dobbelt gemme dine data. Det må da være nemmere blot med
while ($row = mysqli_fetch_array($query)) {
    $list .= '<span class="headline">'.$row["var1"].'</span><br /><span class="subheadline">'.$row["var1"].'  *  '.$row["var1"].'<br />Bedrooms: '.$row["var1"].'  *  Bathrooms: '.$row["var1"].'<br />'.$row["var1"].'</span><hr /><br />';

}


Og til sidst bør du udskrive mysql_fetch_array med mysql_fetch_assoc hvis ikke du benytter arrayet med index id'erne. (hvilket du ikke gør hér)
Avatar billede coderdk Praktikant
17. maj 2011 - 21:48 #10
Uddybbende eksempel:

// Først connect til db med mysql_connect

// Query tekst
$sql = "SELECT felt1, felt2 felt3 FROM din_tabel";
// Fyr den af
$result = mysql_query( $sql ) or die( mysql_error() );
echo "<table>";
// Hent en række ad gangen
while ( $row = mysql_fetch_assoc( $result ) )
{
  echo "<tr>";
  foreach ( $row as $col )
  {
      // Skriv en TD for hvert felt i rækken
      echo "<td>" . $col . "</td>";
  }
  echo "</tr>";
}
echo "</table>";
Avatar billede pemo123456 Novice
17. maj 2011 - 22:55 #11
@ coderdk

Tak for uddybning og hjælp - kan jeg få dig til at smide et svar, således at jeg kan få lukket denne.

Mvh pemo
Avatar billede coderdk Praktikant
17. maj 2011 - 23:52 #12
Sågerne :)
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