Gå til innhold

Noen som har to sekunder til å se hva jeg gjør feil?


Anbefalte innlegg

La meg først få si at mine phpkunskaper er ganske begrenset, så trenger hjelpe. Aner at det er veldig lett å se hva som er feil for en med et trent øye :hmm: ... Prøve å få den til å poste noe bare om en er innlogget, men var ikke så lett som jeg trodde.

 

<?php get_header(); ?>

<div id="content" class="narrowcolumn">


<?if (is_user_logged_in()) {

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<div class="post" id="post-<?php the_ID(); ?>">
	<h2><?php the_title(); ?></h2>
		<div class="entry">
			<?php the_content('<p class="serif">Read the rest of this page »</p>'); ?>

			<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>

echo "JADA!";}
else{
echo "log inn!";}
?>



</div>
<?php get_footer(); ?>

Lenke til kommentar
Videoannonse
Annonse

DEet kommer vel litt an på hva som skjuler seg bak disse metodene.

 

is_user_logged_in()

have_posts()

 

 

 

 

 

Er ellers ikke helt familiær med all syntaksen som er brukt her, men får satse på at den ellers er rett. Får du feilmelding eller oppfører den seg bare ikke slik du vil?

Lenke til kommentar

is_user_logged_in() fungerer utmerket.

have_posts() antar jeg fungerer, da jeg har fisket den fra en annen fil..

 

Ellers gir den bare en blank side. Har nappet midten fra denne filen som fungerer greit... For meg så virker det som om det er noe med syntaksen.

<?php get_header(); ?>

<div id="content" class="narrowcolumn">

	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<div class="post" id="post-<?php the_ID(); ?>">
	<h2><?php the_title(); ?></h2>
		<div class="entry">
			<?php the_content('<p class="serif">Read the rest of this page »</p>'); ?>

			<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>


<small>Sist oppdater:
<?php the_modified_time('d') ?>.
<?php the_modified_time('F'); ?> - 
<?php the_modified_time('Y'); ?></small>




		</div>
	</div>

	<?php endwhile; endif; ?>

<?php edit_post_link('Editer denne siden', '<p>', '</p>'); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

Endret av christian1986
Lenke til kommentar

Få du bare en helt blank side?

 

 

Hvordan ser sourcen på siden du får ut?

 

 

Slik ejg ser det, hvis du er logget inn og is_user_logged_in() funker så skal det enten skrives ut "Jada!" eller "log inn!".

 

Skrives dette ut?

 

EDIT:

Jeg synes forresten denne ser litt mistenkelig ut:

 

<?if (is_user_logged_in()) {

 

Burde du ikke hatt en <?php og en avslutningstag også her? Og kanskje fjerne <?php som kommer på neste linje? Slik jeg ser det her prøver du å åpne en ny <?php inni en eksisterende. Noe må være galt der.

Endret av Ekko
Lenke til kommentar

Om jeg fjerner

if (have_posts()) : while (have_posts()) : the_post();
	<div class="post" id="post-<?php the_ID(); ">
	<h2><?php the_title(); ?></h2>
		<div class="entry">
			<?php the_content('<p class="serif">Read the rest of this page »</p>'); ?>

			<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>

går alt bra, og da vises log in, eller jada som det skal. Så er noe feil i formateringen der, og det finner jeg ikke ut av.

Lenke til kommentar

Det jeg stusser å ermakerer jeg i bold.

 

 

<?php get_header(); ?>

<div id="content" class="narrowcolumn">


<?if (is_user_logged_in()) {

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>[
	<div class="post" id="post-<?php the_ID();?>">
	<h2><?php the_title(); ?></h2>
		<div class="entry">
			<?php the_content('<p class="serif">Read the rest of this page »</p>'); ?>

			<?[php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>

echo "JADA!";}
else{
echo "log inn!";}
?>



</div>
<?php get_footer(); ?>

 

Her åpner du og lukker nye <?-tags inni den du åpner ved <?if. Jeg hadde ikke trodd man kunne lukke koden med ?> før man hadde fullført if-setningen. Du skriver også vanlig tekst inni her, selv om du egentlig har <?if-tagen åpen.

 

Vet ikke om du skjønner hva jeg mener?

 

edit:gikk ikke an å marker i bold inni CODE. Håper poenget mitt likevel kommer frem.

Endret av Ekko
Lenke til kommentar

For å forklare litt grundigere.

 

Når du skriver <? eller <?php sier du at "her begynner det php-kode.

Når du skriver ?> sier du at, "nå er php-koden ferdig, det jeg skriver herfra og videre skal skrives rett ut til den ferdige websiden.

 

Så eksempel:

 

<?php
print "hurra";
?>
hurra1
<?php
print "hurra2";
?>

 

Dette vil skrive ut til filen/den ferdige websiden "hurrahurra1hurra2"

 

Det du har gjort er 2 ting:

 

Du skriver tekst inni kodetagen (altså innefor der det kun skal skrives php-kode slik:

 

<?php
print "hurra";
hurra1
?>

Dette går ikke bra vil jeg tro men jeg er ikke sikker.

 

 

Du oppretter også en ny php-tag før du har avsluttet den forrige:

 

 

 

<?php
print "hurra";

hurra1
<?php
print "hurra2";
?>

?>

 

Det er viktig å huske på at for hver <? må du ha en ?> som avslutter koden din.

 

Videre er det et viktig verktøy å se hva som fatisk skrives ut til din ferdie fil/webside. I Internet explorer finner du dette ved å høyreklikke og velge vis kilde/view source. Kan du dette?

 

Når det gjelder å endre på programmet ditt så kan du først se om du skjønner hva jeg har skrevet her, hvis ikke skal jeg se på det.

Endret av Ekko
Lenke til kommentar

Ja. Penget med php-filen din er jo at den til slutt spytter ut en fil som er den kildekoden du ser i IE. Denne tolkes deretter av IE typisk som en html-side.

 

Prøv noe slikt

 

<?php get_header(); ?>

<div id="content" class="narrowcolumn">


<?php 

if (is_user_logged_in()) {

      if (have_posts()) : while (have_posts()) : the_post(); 


      echo "JADA!";
}else{
    echo "log inn!";
}
?>



</div>
<?php get_footer(); ?>

 

Her har jeg slaktet bort litt av fyllet i midten, men legg til litt og litt og se hva som funker.

Endret av Ekko
Lenke til kommentar

Cluet her er at "if (have_posts()) : while (have_posts()) : the_post(); " resulterer i blank html og kilde. Jeg trodde det hadde noe med formateringen å gjøre, men er tydeligvis ikke det som er problemet da? Fjerner jeg den, så funker alt...

 

Kort sagt, så skal jeg få kildekoden jeg gjengir under til å bare vise innholdet om en er logget inn. Logg inn sjekk fungere, og den andre vanlig publisering fungerer for seg selv, men jeg klarer ikke kombinere de... Forresten, tusen takk for at du hjelper meg :thumbup:

 

<?php get_header(); ?>

<div id="content" class="narrowcolumn">

	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<div class="post" id="post-<?php the_ID(); ?>">
	<h2><?php the_title(); ?></h2>
		<div class="entry">
			<?php the_content('<p class="serif">Read the rest of this page »</p>'); ?>

			<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>


<small>Sist oppdater:
<?php the_modified_time('d') ?>.
<?php the_modified_time('F'); ?> - 
<?php the_modified_time('Y'); ?></small>




		</div>
	</div>

	<?php endwhile; endif; ?>

<?php edit_post_link('Editer denne siden', '<p>', '</p>'); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

Endret av christian1986
Lenke til kommentar

Blank side, som plutselig vises igjen dersom man fjerner litt kode er et eksempel hvor error handling foregår på en særdeles elendig måte. Vet ikke hvordan serveren din er konfigurert akkurat nå eller om det i det hele tatt er det som er problemet, men prøv å sett følgende linje øverst.

 

error_reporting ( E_ALL );

Lenke til kommentar

Det er Wordpress, jeg slet også med dette en stund.

 

if (have_posts()) : while (have_posts()) : the_post();

 

Om du kjører dette i index.php sjekker have_posts() og bloggen har noen poster, om den har det returnerer den true og går til while-løkken. the_post() setter opp funksjonskall for den spesifikke bloggposten du viser, slik at the_title(), og the_content() echoer rett post.

 

Er du sikker på at du har poster i databasen og ikke har slettet standardposten som kommer med installasjonen?

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...