Gå til innhold

Help med while


Anbefalte innlegg

Hallo, jeg driver å prøver å lære meg php og da har jeg prøvd å lage en kalender. Fram til nå har det gått fint, men når jeg skal hente ut 2 rader fra databasen til samme dato så får jeg det ikke helt til. Hvordan skal jeg sette enn en while i denne koden for å få den til å gjøre uthentingen mer enn en gang hvis det finnes hendelser på den datoen? Koden er sikkert ganske dårlig siden jeg er i en læringsfase nå, så hvis noen har noen tips til forbedringer tar jeg gjerne imot :) Her er koden:

 

while($i<=$num)
 {

 if ($i == $dagens_dato && $dagens_mo == $moget) {
  echo "<div class=\"rute_idag\">";
} else {
echo "<div class=\"rute\">";
}


 echo "<p class=\"datotall\">".$i."</p>";

 $resurs = mysql_query("SELECT * FROM events WHERE events.day = '$i' AND events.month = '$moget'");
 $resultat = mysql_fetch_array($resurs);
 echo "<p class=\"name\">";
 print $resultat[name];
 echo "</p>";
 echo "<p class=\"name\">";
 print $resultat[shours].$resultat[smins];

  if ($resultat[name] == true){
	echo "-";
	}

 print $resultat[ehours].$resultat[emins];
 echo "</p>";

 echo "</div>";

 $i++;
 }

Lenke til kommentar
Videoannonse
Annonse

Noe slikt?

 

for ($i = 0; $i <= $num; $i++) {
if ($i == $dagens_dato && $dagens_mo == $moget) {
	echo '<div class="rute_idag">';
} else {
	echo '<div class="rute">';
}

echo '<p class="datotall">'.$i."</p>";

$resurs = mysql_query("SELECT * FROM events WHERE events.day = '$i' AND events.month = '$moget'");
while($resultat = mysql_fetch_array($resurs)) {
	echo '<p class="name">';
	print $resultat['name'];
	echo "</p>";
	echo '<p class="name">';
	print $resultat['shours'].$resultat['smins'];

	if ($resultat['name'] == true){
		echo "-";
	}

	print $resultat['ehours'].$resultat['emins'];
	echo "</p>";

	echo "</div>";
}
}

Den største optimaliseringen du kan gjøre er å bruke quotes rundt tekstnøkler i arrays. $array['nøkkel'].

For $array[nøkkel] leter PHP først etter en konstant verdi kalt nøkkel, deretter etter nøkkelen.

 

Den neststørste er vel å bruke datetime eller date og time for å lagre tid og dato i mysql.

Vanligvis bruker man variabelnavnene $result/$resultat fra mysql_query og $row/$rad fra mysql_fetch_array.

 

Fjernet escaping av quotes for lesbarhet.

 

Og litt merkelig at du bruker print og echo om hverandre.

 

Ellers er det bare små optimaliseringer for de som vil spare noen millisekund her og der.

Lenke til kommentar
Bare en kjapp innvendig. Vend deg til å bruke singlequote til strings med en gang. Det har svært mye å si for ytelse.

Som eg sa, mindre ubetydelige optimaliseringer.

Dette eksempelet har svært lite å si for ytelsen. Det kan gjerne betegnes som en myte som alltid kommer opp hvis noen våger å bruke doble hermetegn rundt tekst uten variabler for parsing.

 

Det er gjerne en grunn til å bruke single quotes rundt tekst som ikke skal parses, og det er at det kan være lettere å lese når du er vant til det. Du kan gjerne sette forskjellig farge på de to måtene så du ser med en gang at dette er tekst som ikke skal parse noe.

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...