Gå til innhold

div spm, query i while


Anbefalte innlegg

jeg har 3 ting på hjertet: for tredje spørsmål se nederst

første spørsmål

jeg putler fortsatt litt på med et cms og jeg har gjort det mulig å legge til /slette kategorier. når du legger til kan du velge om du kategorien skal vises på forsiden eller ikke, men det blir bare lagt til en ny kategori om kategorien vises på forsiden.

 

<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
<span class="txtomr">Category name</span> <input type="text" name="dbname"><br>
<span class="txtomr">Is it to be displayed on the frontpage?</span>
 <select name="frontpage">
   <option value="1">Yes</option>
   <option value="0">No</option>
 </select>
<br><br>
 <input name="" type="submit" value="Lag kategori">
</form>

<?php 
$dbname=$_POST['dbname'];
$frontpage=$_POST['frontpage'];
include "dbconnect.php";
 if(!empty($dbname) && !empty($frontpage)){
 $q="INSERT into category (`dbname`,`frontpage`)
 VALUES ('$dbname','$frontpage')";
 $result= mysql_query($q, $connection) or die ("Could not execute INSERT query : $q." . mysql_error());; 
 }

?>

databasen ser sånn ut:

bdname varchar(30)

dbid int(10)

frontpage enum ('1','0')

 

om frontpage er 0 vises den ikke på forsiden.

 

andre spørsmål Jeg er på jakt etter et script som tar tiden på hvor lang tid det tar å lage en php side. altså et script som starter i begynnelsen av php koden og slutter når alle dataene er hentet fra f.eks. databaser. trenger ikke noe veldig avansert.

Endret av Smidt
Lenke til kommentar
Videoannonse
Annonse

Angående spørsmål nr ein, sett default til 0 på "frontpage". Deretter vist kategorien ikkje skal vises på framsiden så setter du bare inn "dbname".

 

Hmm... skulle til å skrive eit døme når eg la merke til dette:

if(!empty($dbname) && !empty($frontpage)){

Prøv og forandre den til

if(!empty($dbname) && isset($frontpage)){

 

Siden 0 kan bli sett på som tom/false.

 

Angående spørsmål to, bare sett opp ein function som du starter på toppen av scriptet og deretter på slutten av scriptet.

 

Når du først starter funksjonen så kaller du opp microtime() (bruk explode deretter sett dei sammen igjen).

Når du kaller den opp på slutten igjen så henter du den samme dataen deretter "timestamp2 - timestamp1 = kor lenge skriptet brukte"

Lenke til kommentar
Angående spørsmål nr ein, sett default til 0 på "frontpage". Deretter vist kategorien ikkje skal vises på framsiden så setter du bare inn "dbname".

 

Hmm... skulle til å skrive eit døme når eg la merke til dette:

if(!empty($dbname) && !empty($frontpage)){

Prøv og forandre den til

if(!empty($dbname) && isset($frontpage)){

 

Siden 0 kan bli sett på som tom/false.

 

Angående spørsmål to, bare sett opp ein function som du starter på toppen av scriptet og deretter på slutten av scriptet.

 

Når du først starter funksjonen så kaller du opp microtime() (bruk explode deretter sett dei sammen igjen).

Når du kaller den opp på slutten igjen så henter du den samme dataen deretter "timestamp2 - timestamp1 = kor lenge skriptet brukte"

herlig :w00t: , var det som skulle til, tenkte ikke på at siden den er 0 kan det også tolkes som flase.

 

ellers var linken til smoothie nyttig, fant et script som ser ut til å virke bra :)

Lenke til kommentar

tredje spørsmål:

<?php
require"dbconnect.php";
$q="SELECT * from article order by title asc"; 
$result= mysql_query($q, $connection) or die ;
while ($row=mysql_fetch_array($result))
{
//Annenhver listing skal ha grå bakgrunn i tabell
$count++;
if ($count & 1) {
  $tbl_class = 'tavle_tabell-sub';
}else {
      $tbl_class = 'tavle_tabell-sub-grey';
}


$title=$row["title"];
$teaser=$row["teaser"];
$fulltext=$row["tulltext"];
$date=$row["date"];
$author=$row["author"];
$id=$row["id"]; 
$dbid=$row["dbid"];

/*require"dbconnect.php";
$q="SELECT * FROM category WHERE dbid='$dbid'";
$result= mysql_query($q, $connection) or die ;
$row=mysql_fetch_array($result); 
$dbname=$row["dbname"];*/

echo "$id $titleposted $date by $author  Kategori:$dbname ";
}
?>

det som er problemet er at jeg vil hente ut kategorinavnet som ligger i en annen tabell enn artiklene. men artikkelen forbindes med kategorien hvja. en kategori id (dbid) for å få listet alle artiklene og ikke bare den første må jeg inkludere queryen som henter kategorinavn (dbname) i whilen.

 

det som er mellom /* og */ er der hvor kategorinavnet hentes, men det virker selvfølgelig ikke sånn jeg har satt det opp, men var bare for å få det med.

 

håper noen forstod problemet og kan ta en titt :)

Endret av Smidt
Lenke til kommentar

Det står at $dbid er int. Fjern ' rundt $dbid i sql-strengen, og se hva som skjer...

 

Hvis ikke dette hjelper, så beskriv litt bedre hva som sjker og hva som ikke skjer...

 

EDIT: TRØKKLEIF. Jeg mener at du ikke trenger "require("dbconnect.php")" andre gangen, siden forbindlesen ikke er lukket er der allerede. Dersom du lukker forbindlesen, må du koble til igjen.

 

/ kakkle

Endret av kakkle
Lenke til kommentar

tenkte ikke på at jeg ikke trengte å koble til en gang til, men koden ser nå sånn ut:

<?php
require"dbconnect.php";
$q="SELECT * from article order by title asc"; 
$result= mysql_query($q, $connection) or die ;
while ($row=mysql_fetch_array($result))
{
//Annenhver listing skal ha grå bakgrunn i tabell
$count++;
if ($count & 1) {
$tbl_class = 'tavle_tabell-sub';
}else {
$tbl_class = 'tavle_tabell-sub-grey';
}


$title=$row["title"];
$teaser=$row["teaser"];
$fulltext=$row["tulltext"];
$date=$row["date"];
$author=$row["author"];
$id=$row["id"]; 
$dbid=$row["dbid"];

$q="SELECT * FROM category WHERE dbid=$dbid";
$result= mysql_query($q, $connection) or die ;
$row=mysql_fetch_array($result); 
$dbname=$row["dbname"];

echo "$id $titleposted $date by $author Kategori:$dbname ";
}
?>

men det er nå bare den første artikkelen som vises, altså virker ikke whilen.

Endret av Smidt
Lenke til kommentar

Bytt

$result= mysql_query($q, $connection) or die ;

til

$result= mysql_query($q, $connection) or die("ERROR: $q<br>".mysql_error()) ;

så ser du om du får noen feilmelding. Kan være deet skjer noe feil etter den første artikkelen er feil. I spørringen som henter ut kategorinavn.

 

SER feilen: bytt navn på $result og $row inni while-løkken. så ordner det seg vel nok, kanskje

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...