Avatar billede MarkA Praktikant
19. august 2011 - 00:20 Der er 7 kommentarer

Få data uden for while

Jeg sidder og vil til at igang med php igen efter en lang pause. Hvordan får jeg fat i data som jeg udtrækker fra min database udenfor min while løkke.

Håber I kan hjælpe.



<?
require "database.inc.php";

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

mysql_select_db($db, $conn) or die(mysql_error());

$sql = "SELECT * FROM $tbpost";

$result = mysql_query($sql, $conn) or die (mysql_error());

$minedata = "";

while ($row = mysql_fetch_array($result) or die(mysql_error()) ) {
    $postid = $row['postid'];
    $postheader = $row['postheader'];
    $posttext = $row['posttext'];
    $postuser = $row['postuser'];
   
    $minedata .=  ("\"".$row['postid']."\" => ".$row['postheader'].",");

}


echo $minedata;



?>
Avatar billede ggxdg Nybegynder
19. august 2011 - 01:33 #1
hvordan mener du? Det du smider i dine $post* variabler, eller noget som f.eks:

$mysqlarr = mysql_fetch_array($result);

echo $mysqlarr[0]['postid']; //echo 1. postid
echo $mysqlarr[1]['postid']; //echo 2. postid
echo $mysqlarr[2]['postid']; //echo 3. postid
...
echo $mysqlarr[255]['postid']; //echo 256. postid

?
Avatar billede MarkA Praktikant
19. august 2011 - 01:55 #2
Meget gerne fra mine post variabler. Det er egentlig fordi jeg senere vil hente dem ind  på en anden side.
Avatar billede majbom Novice
19. august 2011 - 08:02 #3
sætter du $tbpost nogle steder?

umiddelbart burde det virke, men hvis den variabel er tom, virker det ikke :)
Avatar billede ggxdg Nybegynder
19. august 2011 - 11:04 #4
Nemlig, som splazz siger, det burde fungere som det er, medmindre variablerne ligger i en funktion (hvis jeg husker ret).

$minedata kan dog også kun indeholde 1 resultat, hvilket vil være det sidste i dit while-loop, medmindre du smider hele herligheden i et array, men så kan du næsten lige så godt gøre som jeg gjode ovenfor, og sætte et array til værdien af queryen. Det bliver så et 2d array.
du kan også lave alle dine $post*-variabler om til arrays ved at smide    []    i halen på dem.


Men som splazz siger, hvis $tbpost ikke har nogen værdi, vil du ikke få det ene resultat ud som jeg nævnte tidligere.
Avatar billede MarkA Praktikant
19. august 2011 - 11:42 #5
Jeg fandt fejlen. Fejlen lå i at jeg havde sat or die(mysql_error()) inden i while statementet("tror jeg det hedder ;) ")

splazz : hvis jeg nu vil have den til at hente og echo alle posts skal der så laves en count, eller hvordan. Den skal gerne hente alle hvergang.
Håber du er med på hvad jeg mener
Avatar billede ggxdg Nybegynder
19. august 2011 - 11:55 #6
while ($row = mysql_fetch_array($result)) {
    $postid = $row['postid'];
    $postheader = $row['postheader'];
    $posttext = $row['posttext'];
    $postuser = $row['postuser'];
   
    $minedata .=  ("\"".$row['postid']."\" => ".$row['postheader'].",");
    echo $minedata;
}


Du kan da bare echo dem i dit while loop.
Hvis du skal bruge dem her og et andet sted, skal de smides i et array, og itereres igennem med et loop senere...
Avatar billede olebole Juniormester
20. august 2011 - 14:35 #7
<ole>

Som i de fleste andre sprog, sutter PHP voldsomt mås, når/hvis man skriver ud i en løkke. En langt bedre performende fremgangsmåde - og den, der normalt vælges i professionelle sammenhænge - er at skrive til en buffer, som efterfølgende skrives ud ét sted. Bufferen kan enten være en streng eller et array, der imploderes.

Jeg er dog stadig i tvivl om, hvad det egentlig er, du gerne vil  =)

Hvis du vil samle data i et array til senere brug, kunne du gøre sådan:


$myArray = array();

while ($row = mysql_fetch_assoc($result)) {
    $myArray[] = $row;
}


Efterfølgende kan du så data efter modellen:


echo $myArray[3]['postid'] . $myArray[3]['posttext'];


- men det er stadig uklart, hvad du gerne vil  =)

/mvh
</bole>
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