Avatar billede lsskaarup Nybegynder
06. november 2004 - 00:27 Der er 18 kommentarer og
1 løsning

Flere records fordelt over flere kolonner

Overskriften svarer nok ikke helt til problemet, men jeg kunne simpelthen ikke komme på et bedre.

Jeg har en side, hvor jeg gerne vil have 2 kontaktinfo vist på en speciel måde. Jeg vil prøve at illustrere.

|-----------------------|
|        Billede        |
|-----------------------|
|  firma 1  |  firma 2  |
|-----------|-----------|
| adresse 1 | adresse 2 |
|-----------|-----------|

Sådan forsætte det med de resterende oplysninger (tlf, fax, o.l.)

Data henter jeg fra en tabel (RS_Kontakt), og billedet skal være fælles for dem, ligger dog kun gemt ved den første af posterne.

Jeg kan sagtens få returneret "firma 1" og også "firma 2", hvir jeg ville have dem til at stå under hinanden. Mit problem er at jeg vil have dem ved siden af hinanden, men hvordan gør jeg det, når jeg nu har brugt "while ($kontakt = mysql_fetch_array($kontakten)) {" til at gennemløbe db'en?
Avatar billede lsskaarup Nybegynder
06. november 2004 - 00:28 #1
Hold da op, den tabel kom til at se godt ud, NOT. Nå men håber I kan se hvad det er jeg gerne vil have.
Avatar billede googolplex Novice
06. november 2004 - 00:35 #2
Du tæller antallet af retunerede rækker (antal firmaer) og så generere du et tilsvarende antal <td>'s i hver <tr> som du smider dine data i. Jeg går ud fra at dit problem har været, at du ikke ved hvor mange kolonner du skal lave på forhånd ?
Avatar billede lsskaarup Nybegynder
06. november 2004 - 00:40 #3
Både og. Mit problem er tildels at jeg ikke ved hvor mange der i fremtiden kan komme, men også hvordan jeg i kolonne 2, får fat i den næste record.

For hvis jeg gør sådanne:

<tr>
<? $kontakter = mysql_query("SELECT * FROM RS_Kontakt");
while ($kontakt = mysql_fetch_array($kontakter)){
<td><?=$kontakt[firmanavn]?></td>
<? }?>
</tr>

Så for jeg ikke billedet med, og bliver derfor nød til at lave 2 kald til db'en, hvilket jeg helst vil undgå.
Avatar billede thb Nybegynder
06. november 2004 - 00:54 #4
Hvad med...

<billed>
<table>
<?
  $sql = mysql_query("SELECT firmanavn,adresse FROM RS_Kontakt");
  if(mysql_num_row($sql)>0){
  $a = Array();
  while($row = mysql_fetch_assoc($sql)){
    $a[] = $row[];
  }
 
  // Først alle firmanavnene
  print("<tr>");
  for($i=0;$i>count($a);$i++){
      print("<td>".$a[$i]['firmanavn']."</td>");
  }
  print("</tr><tr>");
 
  // Også alle adresserne
  for($i=0;$i>count($a);$i++){
      print("<td>".$a[$i]['adresse']."</td>");
  }
  print("</tr>");
 
  }
?>
</table>

Noget i den stil... Jeg har ikke lige testet det, og ved ikke lige om det er den bedste måde at gøre det på.. :D

Thomas
Avatar billede lsskaarup Nybegynder
06. november 2004 - 00:58 #5
Thomas, du glemmer billedet. Stien dertil skal også hentes fra db'en, og ligger ved den første post. Så på din måde bliver jeg nødtil at skulle kalde db'en ved indsættelse af billedet, afslutte det, for 2 linier længere nede at kalde til den igen.
Avatar billede thb Nybegynder
06. november 2004 - 01:02 #6
Hva så med sådan her.. ???

<?
  $sql = mysql_query("SELECT firmanavn,adresse,billednavn FROM RS_Kontakt");
  if(mysql_num_row($sql)>0){
  $a = Array();
  while($row = mysql_fetch_assoc($sql)){
    $a[] = $row[];
  }
 
  print("<img src='".$a[0]['billednavn']."'><br/>");
 
  // Først alle firmanavnene
  print("<table><tr>");
  for($i=0;$i>count($a);$i++){
      print("<td>".$a[$i]['firmanavn']."</td>");
  }
  print("</tr><tr>");
 
  // Også alle adresserne
  for($i=0;$i>count($a);$i++){
      print("<td>".$a[$i]['adresse']."</td>");
  }
  print("</tr></table>");
 
  }
?>
Avatar billede thb Nybegynder
06. november 2004 - 01:03 #7
print("<img src='".$a[0]['billednavn']."' alt=''/><br/>");
Avatar billede lsskaarup Nybegynder
06. november 2004 - 12:38 #8
Det ser umiddelbart mere lovende ud, men jeg får en fejl i

$a[]=$row[];

Hvor den siger: Fatal error: Cannot use [] for reading in ...
Avatar billede lsskaarup Nybegynder
06. november 2004 - 12:52 #9
Jeg ved ikke om det har nogle dårlig effekt, men jeg har ændret lidt på den første if-sætning, bl.a. så den kommer forbi den fejlbehæftede linie, så nu ser den sådanne ud:

if(mysql_num_rows($sql)>0){
  $a = Array();
  while($row = mysql_fetch_assoc($sql)){
    $a[] = $row;
  }
}
Avatar billede thb Nybegynder
06. november 2004 - 12:54 #10
Det er også sådan at det skal se ud... :D
Det var en tastefejl.. [] har intet at gøre der.. :D

Thomas
Avatar billede lsskaarup Nybegynder
06. november 2004 - 12:57 #11
Fint, også har du også fået vente ">" forkert i for-sætningerne ;-)
Avatar billede thb Nybegynder
06. november 2004 - 12:59 #12
Ja og det er bare super at du selv kan rette det til ;)
Avatar billede lsskaarup Nybegynder
06. november 2004 - 12:59 #13
Men nu tror jeg nok, at jeg har gennemskuet din kode, jeg skal dog lige have den rettet til med hensyn til tabeller, rækker og celler, så det passer i designet. Når det er gjort skal jeg nok lægge den endelige kode op.
Avatar billede lsskaarup Nybegynder
06. november 2004 - 13:46 #14
Okay, jeg kan se jeg lige skal have lidt mere hjælp. Denne gang til udformingen af et maillink.

Jeg har for et stykke tid siden fundet en side, som viste hvordan man kunne minimere risikoen for at få spam, når man ligger sin mail adresse op på sitet. Dette forgår via et javascript, som sender brugeren til en fejl-side, hvis brugeren ikke kan køre javascript. Denne fremgangsmåde er blevet vendt og drejet, men dem jeg laver sitet for, så det skulle jo helst overholdes, men jeg kan ikke lige får den til at virke i kombination med din kode Thomas, så måske du kan.

Selve scriptet:

<a href="mailfejl.php" title="Send os en mail"
onmouseover="this.href='mai' + 'lto:' + '<?=$ik[mailnavn]?>' + '&#64;' + '<?=$ik[domæne]?>'"
onfocus="this.href='mai' + 'lto:' + '<?=$ik[mailnavn]?>' + '&#64;' + '<?=$ik[domæne]?>'">E-mail</a>

Det skulle jeg gerne have sat ind på yyy' plads:

// Også alle mail
for($i=0;$i<count($a);$i++){
    print("<td align='center'>". yyy ."</td>");
}
print("</tr><tr>");

Men hvordan det kniber det med.
Avatar billede thb Nybegynder
06. november 2004 - 14:10 #15
Prøv med det her...

$yyy = "<a href=\"mailfejl.php\" title=\"Send os en mail\" onmouseover=\"this.href='mai' + 'lto:' + '".$ik['mailnavn']."' + '&#64;' + '".$ik['domæne']."'\" onfocus=\"this.href='mai' + 'lto:' + '".$ik['mailnavn']."' + '&#64;' + '".$ik['domæne']."'\">E-mail</a>";

Thomas
Avatar billede lsskaarup Nybegynder
06. november 2004 - 15:54 #16
Nope det giver en parse error, som jeg ikke lige ved hvor kommer fra.

$ik skulle jo selvfølgelig også have været $a[$i]:
$yyy = "<a href=\"mailfejl.php\" title=\"Send os en mail\" onmouseover=\"this.href='mai' + 'lto:' + '".$a[$i]['mailnavn']."' + '&#64;' + '".$a[$i]['domæne']."'\" onfocus=\"this.href='mai' + 'lto:' + '".$a[$i]'mailnavn']."' + '&#64;' + '".$a[$i]['domæne']."'\">E-mail</a>";
Avatar billede lsskaarup Nybegynder
06. november 2004 - 16:02 #17
Ups, har fundet den, der manglede lige en [. Tak for hjælpen, Thomas, Jeg strøer lidt ekstra point oven i.
Avatar billede lsskaarup Nybegynder
06. november 2004 - 16:03 #18
Hvis du ligger et svar ;-)
Avatar billede thb Nybegynder
06. november 2004 - 17:54 #19
Jep...

Thomas
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