07. januar 2004 - 18:18Der er
35 kommentarer og 1 løsning
holde php og html adskilt
Er det muligt i det her script at holde html og php næsten adskilt på en måde noget ala det jeg har lavet.
/* Here starts the code */
//includes the file there is opening a connection to a databse include('dbconnect.php'); //Selects the tabels produkter in the MySql Database $res = mysql_query("SELECT * FROM produkter") or die(mysql_query()); //runs the $res trough a while statement while ($row = mysql_fetch_array($res)) { $text = "<a href='index.php?id=$row[produkt_id]'>$row[produkt_navn]</a><br>"; $text .= "$row[produkt_beskrivelse]<br>"; $text .= "$row[pris] ,-"; $text .= "<br />"; }
/* Here stops the code */ ?> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="style.css"> </head>
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Ja, selvfølig er der da det. Alt det kræver er at man lige gennemtænker hvad det er man vil lave før man laver det. Det er jo en klassisk fejl at bare kode derudaf, uden egentlig at have gennemtænkt hvordan man bedst kommer frem til det man stræber efter.
Dog vil denne while løkke, konstant overskrive $text, og resultatet vil blive et enkelt link, selv om der måske var flerer link i databasen: while ($row = mysql_fetch_array($res)) { $text = "<a href='index.php?id=$row[produkt_id]'>$row[produkt_navn]</a><br>"; $text .= "$row[produkt_beskrivelse]<br>"; $text .= "$row[pris] ,-"; $text .= "<br />"; }
krydset -> selvfølgelig kan man det - som tefcke siger - man skal bare gennemtænke ens projekt så man ved hvilke ting der skal kunne ændres - og vudere hvordan det bedst laves - fx via inkluderede filer...
jeg holder meget af netop det med at inkludere filer alt efter indholdet i siden - et koncept der meget nemmere lader sig gøre hvis holder HTML og PHP så adskildt som muligt...
Jeg har tænkt og tænkt og tænkt men kan ikke komme på en ide til hvordan jeg skal få udskrevet eller posterne i db´en uden at kører html table ind i while løkken
Det deb gør nu er kun at den udskriver den sidte post i db ´en. Men hvordan får man den til at udskrive alle posterne på den her måde??
Det skulle den nok gøre med den lille kodestump jeg smed ligefør, dog smider den alle links ind i samme datacelle af din tabel, men der skal ikke det store til at ændre det, så den smider linksne ind i hver sin datacelle.
Nej det finder jeg selv ud af bare du smider et svar så du kan få point
Synes godt om
Slettet bruger
07. januar 2004 - 18:41#11
Grundreglen om at adskille program og html betyder ikke, at man kan undgå kode helt i sit output. Jeg vil mene, at det ville være smartere at hente de oplysninger og beskeder der skal udskrives ind i variable (men uden htmlkode i variablene), og derefter have en eller flere løkker i din html til at styre udskrift.
Nu er indrykningen måske lidt smadret, men her er koden. Bemærk lige, at jeg har ikke testet den, så der er muligvis en tastefejl eller to.
/* Here starts the code */
//includes the file there is opening a connection to a databse include('dbconnect.php'); //Selects the tabels produkter in the MySql Database $res = mysql_query("SELECT * FROM produkter") or die(mysql_query()); //runs the $res trough a while statement while ($row[] = mysql_fetch_array($res));
/* Here stops the code */ ?> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="style.css"> </head>
krydset >> $row[] = ... ; betyder at man putter det som står på højre side af = ind på pladsen efter det sidste array index. Svarer lidt til array_push().
sandbox >> Der er dog nogen fejl rundt omkring. $row[] er ikke erklæret, det vil give en warning med error_reporting = E_ALL tilføj: $row = array();
Hvis database forspørgelsen ikke returnerer noget, vil der også komme en warning i det der forsøges et kald til mysql_fetch_array() (i while), samt vil html tabellen som blive genereret ikke være korrekt, da der bare vil stå: <table> </table> Der mangler et tjek på om $res er false!
Man kan jo også ordne alt det sandbox laver i "html-delen" før: /* Here starts the code */
//includes the file there is opening a connection to a databse include('dbconnect.php'); //Selects the tabels produkter in the MySql Database $res = mysql_query("SELECT * FROM produkter") or die(mysql_query()); //runs the $res trough a while statement $text = ''; if ( $res != false ) { // Der eksisterer mindst et link i databasen while ($row = mysql_fetch_array($res)) { $text .= " <tr> <td>Varer id {$produkt[produkt_id]}</td> </tr>
den er rettet $row = array(); hvordan laver man et tjek på $res det har jeg aldrig brugt før? Hvad med problemet jeg har beskrevet i indlæg 07/01-2004 19:21:38
Ok, hvis det er sådan du mener med at blande, så gør som sandbox skriver (også sådan jeg selv gør det) ;o)
Her er et sådan som jeg ville gøre det: <? /* Here starts the code */
//includes the file there is opening a connection to a databse include('dbconnect.php'); //Selects the tabels produkter in the MySql Database $res = mysql_query("SELECT * FROM produkter") or die(mysql_query()); //runs the $res trough a while statement $row = array(); while ($row[] = mysql_fetch_array($res));
/* Here stops the code */ ?> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="style.css"> </head>
<body bgcolor="#EAEAEA"> <table> <?php if ( sizeof($row) == 0 ) { // Der var intet data i databasen ?> <tr> <td>Der er ikke oprettet nogen link endnu!</td> <tr> <?php } else { // Der findes data i databasen foreach($row as $produkt){ ?> <tr> <td> <a href='index.php?id=<?php echo $produkt['produkt_id']:?>'> <?php echo $produkt['produkt_navn'];?> </a> </td> <td> <?php echo $produkt['produkt_beskrivelse'];?> </td> <td> <?php echo $produkt['pris'];?> </td> </tr> <?php } // end forelse } // end else ?> </table> </body> </html>
Der er altså en fejl et eller andet sted jeg ikke kan komme af med der er kun 2 poster i db men når jeg bruger det her
<tr> <td> <a href='index.php?id=<?php echo $produkt['produkt_id'];?>'> <?php echo $produkt['produkt_navn'];?> </a> </td> <td> <?php echo $produkt['produkt_beskrivelse'];?> </td> <td> <?php echo "$produkt[pris],-";?> </td> Udskriver den en ,- mere en der er poster i db hvordan kan det være?
<?PHP /* * +-----------------------------------------------------------------------------+ * Projekt Name Show products * +-----------------------------------------------------------------------------+ * Copyright Notes Copyrights 2003 pc-dk.dk * +-----------------------------------------------------------------------------+ * Disclaimer Notice(s) * DONT USE THIS SCRIPT UNLESS YOU HAVE MY PERMISSIONS ON PARER * WITH MY PERSONAL SIGNATURE ANY QUESTIONS FOR THAT * SEND ME A MAIL: TLARSEN@PC-DK.DK * IF YOU WANT TO USE THIS SCRIPT THEN MAIL ME AND PAY FOR IT * +-----------------------------------------------------------------------------+ * Author(s): Thomas Larsen / Dk-Medieburner E-Mail: Tlarsen@pc-dk.dk * +-----------------------------------------------------------------------------+ */
error_reporting(E_ALL); //For debuggin only, prints all error! //remove the # to debug
/** * Module comments (Brief shorly what this piece of code do) This script is logging a user in. */
/* Here starts the code */
//includes the file there is opening a connection to a databse include('dbconnect.php'); //Selects the tabels produkter in the MySql Database $res = mysql_query("SELECT * FROM produkter") or die(mysql_query()); //to avoid a warning i am setting $row to an emty array here--> $row = array(); //runs the $res trough a while statement while ($row[] = mysql_fetch_array($res)); $antal = mysql_num_rows($res);
<body bgcolor="#EAEAEA"> <table> <?php if ( $antal == 0 ) { // There was nothing in the DB ?> <tr> <td>Der er ikke oprettet nogen link endnu!</td> <tr> <?php } else { // There was something in the db foreach($row as $produkt){ ?> <tr> <td>Produkt navn:</td> </tr>
"echo sizeof($row); returner 1 når db er tom Why that" Så er tabellen nok ikke helt så tom som du tror! Jeg er rimlig sikker på der ligger en tom post i tabellen!
Nej der gør ikke men det er løst som i det andet spm du osse er med i hvor jeg opretter troede ikke i gad skrive her mere men nu er alt løst og det er godt ;)
Synes godt om
Slettet bruger
07. januar 2004 - 21:13#34
Det er ikke nødvendigt at bruge $row=array(); først. Det er nemlig kun en fejl, hvis man forsøger at hente noget fra et udefineret array. Det er ikke en fejl at begynde med at lave et array ved at tildele det en værdi.
oki det ved jeg ikke noget om, det var en af de andre der skrev det !.
Ville du have nogen point som tak for hjælpen
Synes godt om
Slettet bruger
07. januar 2004 - 21:35#36
Skidt med det - jeg kan jo bare holde nallerne fra tastaturet, i spørgsmål, hvor der allerede er uddelt point.
Synes godt om
Ny brugerNybegynder
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.