Avatar billede mccookie Seniormester
01. juli 2003 - 23:34 Der er 9 kommentarer og
1 løsning

Php / MySQL små problemer

<?php

    // Database funktioner kaldes

    require("$DOCUMENT_ROOT/lib/mysql_func.php");
   

    open_database(strandboernedk);
   
    $sql = "SELECT COUNT(ab_person_id) as rows FROM ab_person";
   
      $resultat = mysql_query($sql) or die(mysql_error());    // Ved fejl skrives fejlen til skærmen
      while ($rowdata = mysql_fetch_array($resultat)) {
          extract($rowdata);  }                // Henter antallet af rækker i tabellen

       
    $sql = "SELECT * FROM ab_person ORDER BY fornavn, efternavn";
     
      $rows_status = 0;                // Start række
     
          $cols = 4;                     // Antallet af kolloner til at vise data
         
          $rows_cols_rest = $rows % $cols;            // Antallet af rækker % antal kolonner
         
          $rows_cols = ($rows - $rows_cols_rest) / $cols;    // Datarækker pr. kolonne

      $resultat = mysql_query($sql) or die(mysql_error());    // Ved fejl skrives fejlen til skærmen
      while ($rowdata = mysql_fetch_array($resultat)) {

               
                while ($rows_status < 3) { 
               
          extract($rowdata);
         
         
              echo $rows_status;
              echo "$fornavn ";
              echo $efternavn;
              echo "<br>";
            $rows_status++;
           
            }
            }
         
      close_database();

?>

Jeg vil gerne starte med at skrive 3 poster ud, men den skriver blot første post ud 3 gange og det er langt fra meningen :o(

Årsagen til denne metode er blot at jeg skal CSS formatere dem i små grupper af 3 og de er sorteret stigene..........

Håber nogen kan trylle....
Avatar billede eagleeye Praktikant
01. juli 2003 - 23:54 #1
Du kan tilføje en LIMIT på din SQL

$sql = "SELECT * FROM ab_person ORDER BY fornavn, efternavn LIMIT 0,3";



Grunden til du skriver den samme ud er denne while da du looper 3 gange på samme record.

while ($rows_status < 3) {


Hvis du har sat LIMIT er den while ikke nødvendig:

      $resultat = mysql_query($sql) or die(mysql_error());    // Ved fejl skrives fejlen til skærmen
      while ($rowdata = mysql_fetch_array($resultat)) {

              extract($rowdata);
         
              echo $rows_status;
              echo "$fornavn ";
              echo $efternavn;
              echo "<br>";
           
            }
Avatar billede mccookie Seniormester
01. juli 2003 - 23:57 #2
Jeg kan ikke bruge Limit

Fordi........
1) Jeg henter alle poster ud i alfabetisk sortring
2) Derefter skal de udskrives i kolonner, derfor skal der kunne udskrives på denne måde.....

mvh.
Henning
Avatar billede eagleeye Praktikant
02. juli 2003 - 00:00 #3
ok så undlad limint og lav denne

while ($rowdata = mysql_fetch_array($resultat)) {

omt til at include det tjek på $rows_status < 3

      while (($rowdata = mysql_fetch_array($resultat)) && ($rows_status < 3)) {
              extract($rowdata);
         
              echo $rows_status;
              echo "$fornavn ";
              echo $efternavn;
              echo "<br>";
             
              $rows_status++;
            }
Avatar billede mccookie Seniormester
02. juli 2003 - 00:10 #4
Ser man det, ser man det..............det ligner jo noget.....

Det kan jeg bruge...... jeg skal have 4 kolonner og i kombination med en LIMIT (hehe, du dobbelt ret :o) ) så skulle det hele være til at have med at gøre :o)

Post et svar min ven
Avatar billede eagleeye Praktikant
02. juli 2003 - 00:11 #5
Ok et svar ;)
Avatar billede tipsen Nybegynder
02. juli 2003 - 01:06 #6
Ovenstående kode vil give problemer mht. korrekt html-kode, hvis antallet af poster ikke går op i 3 - så vil der komme til at mangle det korrekte antal celler i tabelrækken.

Der blev bøvlet en del med problemet i et tidligere spørgsmål og vi nåede frem til følgende der desuden er ganske hurtigt - det kan være du kan bruge nogle af ideerne fra det!

<?php
$kolonner  = 2;                                // antal billeder pr række
$tablewidth = 400;                              // pixelbredde på tabellen
$cellwidth  = (int) ($tablewidth / $kolonner);  //cellebredde

$mhost      = 'localhost';                      // mysql host
$muser      = 'user';                          // mysql bruger
$mpaswd    = 'paswd';                          // mysql password
$mdb        = 'db';                            // mysql database

$mquery    = 'SELECT image FROM gallery';      // mysql query'et

$DB = mysql_connect($mhost, $muser, $mpaswd)or die(mysql_error());
mysql_select_db($mdb, $DB)or die(mysql_error());
$query = mysql_query($mquery)or die(mysql_error());
$antalimgs = mysql_num_rows($query);
if(!$antalimgs) {
    echo 'Desværre ingen billeder!';
}
else {
    $tmp = "<table width=$tablewidth>\n\t<tr>\n";
    for($i=0; $i < $antalimgs; $i++){
        if(!($i%$kolonner) && $i>0 && $i<$antalimgs-1) { //problem med tom startrække og potentiel tom slutrække fikset
            $tmp .= "\t</tr>\n\t<tr>\n";
        }
        list($image) = mysql_fetch_row($query);
        $tmp .= "\t\t<td width=\"$cellwidth\">$image</td>\n";
    }
    for($i=0;$i<$kolonner-($antalimgs%$kolonner);$i++) {
        $tmp .= "\t\t<td width=\"$cellwidth\">&nbsp;</td>\n";
    }
    $tmp .= "\t</tr>\n</table>";
    echo $tmp;
}
?>
Avatar billede mccookie Seniormester
02. juli 2003 - 15:47 #7
Hej Tipsen>>>

Jeg bruger ikke tabeller til at skrive data ud i :o)

Jeg har valgt at bruge css-floats istedet, det gør tingene meget lettere.......... og blandt nogle fanatikere er dette også den rigtige måde :o)

Men tak for dit besyn alligevel
Avatar billede tipsen Nybegynder
02. juli 2003 - 15:56 #8
mccookie: Sorry - det var vist bare mig som var ved at være træt... - man tror man læser noget, men det gjorde man ikke... - Overvejer forøvrigt selv at udskifte tabeller på nogle sites - hvad er din erfaring mht. browser-kompatibilitet? (Jeg kunne forestille mig, at IE giver problemer da den vist ikke helt overholder standarderne?)
Avatar billede mccookie Seniormester
02. juli 2003 - 15:58 #9
Jeg har aldrig haft problemer med floats, det kører bare derudaf'

Jeg har IE6.0
Avatar billede tipsen Nybegynder
02. juli 2003 - 16:15 #10
Har du 2-3 sider med eksempler på dette - så vil jeg meget gerne se, hvordan de opfører sig i forskellige browsere!
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