Avatar billede ChristianRLarsen Nybegynder
08. marts 2011 - 20:06 Der er 14 kommentarer og
1 løsning

Er dette den rigtige måde?

Hej eksperter

Jeg ville bare høre om dette er den rigtige måde at få ind table indblandet i sin php kode, hvis ikke hvordan gøres det så? evt. et link (:

<?php

      $query = "SELECT * FROM site_content";
      $result = mysql_query($query);

      while($posts = mysql_fetch_array($result)) {
            echo "<table border='1' width='500' style='position:absolute; top:200px;'";
            echo "<tr>";
            echo "<td>test</td>";
            echo "<td><a href=\"edit.php?id=$posts[ID]\"><img class='default-link'src='icons/edit_icon.png' alt='Edit Post'></a></td>";
            echo "</tr>";
            echo "</table>";
}

?>

MVH Christian
Avatar billede Springform Nybegynder
08. marts 2011 - 20:13 #1
Vil du have al dataen i samme tabel eller skal de i hver sin? ud fra det du har lavet laver du en ny tabel for hvert datasæt, hvis de skal i samme så hedder den

<?php

      $query = "SELECT * FROM site_content";
      $result = mysql_query($query);

echo "<table border='1' width='500' style='position:absolute; top:200px;'";
     
while($posts = mysql_fetch_array($result)) {           
            echo "<tr>";
            echo "<td>test</td>";
            echo "<td><a href=\"edit.php?id=$posts[ID]\"><img class='default-link'src='icons/edit_icon.png' alt='Edit Post'></a></td>";
            echo "</tr>";
}
            echo "</table>";
?>
Avatar billede ChristianRLarsen Nybegynder
08. marts 2011 - 20:17 #2
Hej Springform

Lige nu ser min kode således ud:

<?php

      $query = "SELECT * FROM site_content";
      $result = mysql_query($query);

      while($posts = mysql_fetch_array($result)) {
            echo "<div class=\"postinfo\">";
            echo "<h5>" . $posts['Post_Title'] . "</h5>";
            echo "<a href=\"edit.php?id=$posts[ID]\"><img class='default-link'src='icons/edit_icon.png' alt='Edit Post'></a>";
            echo "<a href=\"delete.php?id=$posts[ID]\"><img class='default-link' src='icons/delete_icon.png' alt='Delete Post : If you are unsure about this please contact your webmaster'></a>";
            echo "</div>";
}

?>

Det den gør er for hver post, opretter den en ny div nedenunder, det jeg godt vil ha er den opretter en ny tabel for hver ny post der kommer (:

MVH Christian
Avatar billede ChristianRLarsen Nybegynder
08. marts 2011 - 20:26 #3
Med det mener jeg den selv skal oprette <td></td>, efter hvor mange oprettede post jeg har (:
Avatar billede olebole Juniormester
08. marts 2011 - 20:28 #4
<ole>

- men da den metode er overmåde resourcespild, kan den næppe anbefales. Langt mere effektivt er det at fylde en streng- eller arraybuffer og udskrive ét sted:


<?php
$query = "SELECT * FROM site_content";
$result = mysql_query($query);

$html = "<table border='1' width='500' style='position:absolute; top:200px;'";
     
while($posts = mysql_fetch_array($result)) {           
    $html .= "<tr>";
    $html .= "<td>test</td>";
    $html .= "<td><a href=\"edit.php?id=$posts[ID]\"><img class='default-link'src='icons/edit_icon.png' alt='Edit Post'></a></td>";
    $html .= "</tr>";
}

$html .= "</table>";

print $html;
?>



Desuden skal du huske, at man kun bruger '*' i et SQL kald, når man skal bruge alle felter i databasens tabel. Da rigtig mange har lært at kode PHP udfra tutorials og www.php.net bruger ligeså mange desværre konsekvent '*' ... men det er en fejl.

I stedet bør du nøjes med at udtrække de feltnavne, du faktisk skal bruge:


$query = "SELECT `id`, `fornavn`, `efternavn` FROM `site_content`";
$result = mysql_query($query) or die (mysql_error());



Det er ligeledes en god idé at backtick'e alle navne i query strengen, som gjort ovenfor. Har du f.eks. et feltnavn, der hedder 'by', vil din query fejle ... ordet 'by' er et reserveret ord i mysql. Det undgår du ved at backtick'e alle navne  ;o)

Husk også at skrive evt. mysql fejl ud med or die (mysql_error()). Det vil hjælpe dig voldsomt, hvis du har en fejl i din query

/mvh
</bole>
Avatar billede ChristianRLarsen Nybegynder
08. marts 2011 - 20:36 #5
Hej ole

Det var noget af en mundfuld, men tak for råd og din kommentar men har dog et spørgsmål. Hvor skal dette stykke kode skrive ind i den kode som du skriver, så den fremkalder mine posts

echo "<h5>" . $posts['Post_Title'] . "</h5>";


MVH Christian
Avatar billede ChristianRLarsen Nybegynder
08. marts 2011 - 20:55 #6
Arh Lige meget jeg fandt ud af det d:

Ole tak for hjælp of råd, læg et svar så for du point (:
Avatar billede olebole Juniormester
08. marts 2011 - 21:12 #7
Selvtak. Jeg kommer her efterhånden sjældent og samler ikke længere points, men tak for tilbudet. Til gengæld kan det være, springform gerne vil  =)
Avatar billede The_Buzz Novice
08. marts 2011 - 21:28 #8
Jeg havde nok gjort den sådan her:

<table border='1' width='500' style='position:absolute; top:200px;'>
<?php
$query = "SELECT * FROM site_content";
$result = mysql_query($query);
while($posts = mysql_fetch_array($result)) {         
?>
<tr>
<td>test</td>
<td><a href="edit.php?id=<?php echo $posts[ID]; ?>"><img class='default-link'src='icons/edit_icon.png' alt='Edit Post'></a></td>
</tr>
<?php
}
?>
</table>

Men det vil jo fungere på samme måde. Men nu er jeg så også gammel HTML haj og foretrækker udseendet af HTML frem for sammensmeltet PHP primær med echo'ed html
Avatar billede ChristianRLarsen Nybegynder
08. marts 2011 - 21:59 #9
Ole det er bare iorden(:

The_buzz tak dit eksempel (:

Springform læg et svar! d:

MVH Christian
Avatar billede olebole Juniormester
09. marts 2011 - 00:21 #10
The_Buzz >> Det er også en voldsomt ineffektiv måde at gøre det på. Prøv at tage tid på de to  ;o)

Derudover er det en uskik at blande HTML og PHP. Der er masser af PHP, man ikke kan bruge, når først man er begyndt at skrive ud i dokumentet. Hvis du begynder at rode med sessions, cookies, redirects, eller andet, som hører til i dokumentets header (ikke at forveksle med HTML elementet HEAD), vil PHP øjeblikkelig kaste en fejl i hovedet på dig.

Moralen er: Hold din PHP kode i klasser og/eller funktioner i toppen af dokumentet og konstruer de strenge, du har brug for i dokumentet. Skriv derefter din HTML kode, hvori du indskriver strengene med PHP.

På den anden side, så skaffer din kodeskik hundredevis af årlige spørgsmål i Ekspertens PHP kategori med deraf følgende reklameindtægter og støtte til sitet. Intet er så ondt, at det ikke er godt for noget  ;o)
Avatar billede The_Buzz Novice
09. marts 2011 - 07:03 #11
olebole :)

Jeg ved den er ineffektiv, og jeg ved skam også det med PHP's HEADER, sessions osv.

Nu havde jeg indtrykket af at et var en intern administrations side som ikke krævede den store hastighed, og derfor det nævnte forslag - fordi efter min mening, er det lettere overskueligt for en ny programmør ;)
Avatar billede olebole Juniormester
09. marts 2011 - 15:31 #12
Jeg er principielt uenig. Jeg har tre børn og har aldrig talt 'babysprog' til dem. Hvorfor lære dem, at noget gør 'Av' - og hvorfor lære dem, at det hedder et 'futtog'?. Det gør ondt - og det hedder et tog. Man kan ligeså godt lære det rigtige i første hug, så man ikke skal spilde tid og energi på det senere.

Alt kræver størst mulig hastighed! Når der er 100 sjuskehoveder på samme webhotel, er det kanon generende for de to, der skriver ordentlig og effektiv kode. Deres gode arbejde bliver ødelagt af andres lyst til at fise hurtigt rundt om de skarpe hjørner. Det handler jo i virkeligheden bare om lysten til at udføre godt håndværk.

"Jamen, det er jo bare hobby" kunne man vel så argumetere? Nuvel, men så burde man jo netop nyde processen i stedet for at blive færdig så hurtigt som muligt. Man sætter sig jo heller ikke ved en god middag for at få den hældt så hurtigt i hullet som muligt. Og parallellen til god kontra lynhurtig sex må du selv tænke færdig  ;o)

Dårlige vaner er ofte meget vanskelige at fralægge sig, når først de er indarbejdet. For en ny udi programmering er det ligeså let at forstå, at man opretter en streng, som man lægger til i hvert gennemløb af while løkken - for at skrive hele strengen ud til sidst.

Det andet smager af puh-bad for mig  =)
Avatar billede showsource Seniormester
09. marts 2011 - 17:12 #13
"Lynhurtig sex" er da ikke helt tosset :O)
Avatar billede olebole Juniormester
09. marts 2011 - 17:18 #14
Nej, nej ... men engang imellem er det nu meget rart at have sex med et andet menneske  ;D
Avatar billede Springform Nybegynder
01. april 2011 - 09:42 #15
Har først lige fået fulgt op på indlægget, men hvis du kunne bruge min hjælp til lidt så skal jeg da nok hjælpe dig med at få lukket tråden :P
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

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