Avatar billede borgenviby Nybegynder
10. november 2006 - 13:53 Der er 9 kommentarer og
1 løsning

lidt hjælp til en while funktion

Hvorfor trækker den kun 1 række ud af min tabel med dette script?
Er ikke superhaj til PHP endnu ;-)

$sql = "SELECT book_start, book_end ";
$sql .= "FROM rs_data_bookings ";
$sql .= "WHERE family_id = " . $_REQUEST["family_id"] . " ";
       
$sql .= "AND ((rs_data_bookings.book_end > '" . $start . "' ";
$sql .= "AND rs_data_bookings.book_end <= '" . $end . "') ";
$sql .= "OR (rs_data_bookings.book_start < '" . $end . "' ";
$sql .= "AND rs_data_bookings.book_start >= '" . $start . "') ";
$sql .= "OR (rs_data_bookings.book_start <= '" . $start . "' ";
$sql .= "AND rs_data_bookings.book_end >= '" . $end . "')) ";
   
$sql .= "ORDER BY book_start ASC ";
   
$bookings = db_query($database_name, $sql);
while($bookings_ = fetch_array($bookings)){   

$book_start = $bookings_["book_start"];
$book_end = $bookings_["book_end"];

}
Avatar billede udvikler Nybegynder
10. november 2006 - 14:37 #1
Fordi at du skal udskrive dine variabler i while løkken, det er ikke nok at definere dem i while løkken :-)
Avatar billede borgenviby Nybegynder
10. november 2006 - 17:06 #2
Ok jeg kan få alle tallene ud af databasen med :

while($bookings_ = fetch_array($bookings)){
echo $bookings_["book_start"] . " / " . $bookings_["book_end"] .  " <br> ";
}

Jeg vil så gerne have et script der finder forskellen mellem de forskellige tider jeg trækker ud. Hvor at book_end => book_start. Men hvordan få jeg det til at virke i selve scriptet? Har lavet noget der ser sådan ud:

$bookings = db_query($database_name, $sql);
while($bookings_ = fetch_array($bookings)){   

$book_start = $bookings_["book_start"];
$book_end = $bookings_["book_end"];

}
   
$dif_start = strtotime($bookings_["book_start"]);
$dif_end = strtotime($bookings_["book_end"]);

$dif = "";
   
for($dif_end < $dif_start; $dif_end >= $book_start;
   
$dif .= ($dif_start - $dif_end))
         

else { $error_msg == "Ingen ledige tider" }
   

Men det fungere jo ikke rigtigt.....
Avatar billede mcardle Nybegynder
11. november 2006 - 05:23 #3
$sql = "SELECT book_start, book_end ";
$sql .= "FROM rs_data_bookings ";
$sql .= "WHERE family_id = " . $_REQUEST["family_id"] . " ";
       
$sql .= "AND ((rs_data_bookings.book_end > '" . $start . "' ";
$sql .= "AND rs_data_bookings.book_end <= '" . $end . "') ";
$sql .= "OR (rs_data_bookings.book_start < '" . $end . "' ";
$sql .= "AND rs_data_bookings.book_start >= '" . $start . "') ";
$sql .= "OR (rs_data_bookings.book_start <= '" . $start . "' ";
$sql .= "AND rs_data_bookings.book_end >= '" . $end . "')) ";
   
$sql .= "ORDER BY book_start ASC ";

$q = mysql_query($sql);
while($bookings = mysql_fetch_array($q)){
  echo $bookings.'<br />';
}

//mcardle
Avatar billede borgenviby Nybegynder
11. november 2006 - 09:44 #4
Jeg kan godt udskrive rækkerne med echo funktionen, men kan man ikke i while funktion lave en variable der indenholder rækkerne som man kan kalde senere?

F.eks.

$q = mysql_query($sql);
while($bookings = mysql_fetch_array($q)){
  $book_start = $bookings.'<br />';
}
Avatar billede mcardle Nybegynder
11. november 2006 - 17:50 #5
Prøv det her:

$q = mysql_query($sql);
while($bookings = mysql_fetch_array($q)){
  $book_start[] = $bookings;
}
Avatar billede mcardle Nybegynder
11. november 2006 - 17:51 #6
Kald dem med:

echo $book_start[0];
echo $book_start[1];
echo $book_start[2]; osv.
Avatar billede borgenviby Nybegynder
15. november 2006 - 15:38 #7
Ok. Det virker squ : )
Mucho gracias....

Smid et svar så du kan få dine points ; )

Måske du kan hjælpe mig med et andet problem?

Hvis man har en if/else kan man så ikke lave 2 svar hvis parametret for nr. 1 ikke bliver opfyldt så vælger den nr.2 i dette tilfælde hvis $book_end[1] ikke findes...

if ($ledig1 >= $object_time)
    {echo $book_end[1];}
    elseif ($ledig1 => $object_time)
    {echo "Ledig tid";}
    else
    {echo "Ingen ledige tider!";}
Avatar billede mcardle Nybegynder
15. november 2006 - 18:08 #8
;oD
Avatar billede mcardle Nybegynder
15. november 2006 - 18:11 #9
Hmm...

if ($ledig1 >= $object_time)
    {echo $book_end[1];}
    elseif ($ledig1 => $object_time)
    {echo "Ledig tid";}
    else
    {echo "Ingen ledige tider!";}

du har skrevet det samme to gange bortset fra du har byttet dine krokodillenæb og lighedstegn om.

Det du siger kan du godt, men er begge variabler tal?
Avatar billede borgenviby Nybegynder
16. november 2006 - 12:32 #10
Hvis der ikke er nogen værdi i databasen, skal man så ikke sætte "" som værende null?


$dif_start1 = strtotime($book_start[1]); // ex. $book_start[1] = 15/11/2006 09:30

if($dif_start1 = ""){

$dif_start1 = strtotime($start) + 1800; //  $dif_start1 = xx/xx/xxxx 10:00

    }

Så jeg kan lave denne var. :

$ledig1 = $dif_start1 - strtotime($start); // eks. 123456789 - 12345666

if($ledig1 >= $object_time) // $object_time = 1800

echo date("d/m/Y H:i", $dif_start1);

else

echo "Ingen ledige tider!";
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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