Gå til innhold

Får ikke noe ut fra MySQL databasen


Anbefalte innlegg

Når jeg kjører denne koden får jeg ingenting ut av MySQL databasen.

Men når jeg kjører den samme Query'en i PhpMyAdmin funker det helt fint.

Jeg har sett lenge på koden, men jeg finner ikke ut av hva problemet kan være.

Er det noen som kan være så snill å hjelpe litt.

<?php
$title="Gjestebok";
include "faste/topp.php";
include "faste/db-info.php";

$rows="20"; //antall innlegg/rader i forumet
if(!isset($_GET['side'])) {$side=0;}
$start=($_GET['side']*$rows);

$query="SELECT * FROM forum WHERE forum='forum' ORDER BY id desc LIMIT $start,$rows"; //string til DB
$result=mysql_query($query);   //mottar Databasetabellen
//PROBLEM: FÅR IKKE NOE DATA

$num=mysql_num_rows($result);  //teller antall rader i databasen

mysql_close();

Lenke til kommentar
Videoannonse
Annonse
Når jeg kjører denne koden får jeg ingenting ut av MySQL databasen.

Men når jeg kjører den samme Query'en i PhpMyAdmin funker det helt fint.

Jeg har sett lenge på koden, men jeg finner ikke ut av hva problemet kan være.

Er det noen som kan være så snill å hjelpe litt.

<?php
$title="Gjestebok";
include "faste/topp.php";
include "faste/db-info.php";

$rows="20"; //antall innlegg/rader i forumet
if(!isset($_GET['side'])) {$side=0;}
$start=($_GET['side']*$rows);

$query="SELECT * FROM forum WHERE forum='forum' ORDER BY id desc LIMIT $start,$rows"; //string til DB
$result=mysql_query($query);   //mottar Databasetabellen
//PROBLEM: FÅR IKKE NOE DATA

$num=mysql_num_rows($result);  //teller antall rader i databasen

mysql_close();

5775912[/snapback]

 

Du glemmer å hente ut noe data her..

 

Etter:

$result=mysql_query($query);

 

må du hente ut.. feks:

 

$data = mysql_fetch_assoc( $resultat);

print $data['forum'];

 

EDIT:

hvis du skal ha ut mer enn en row må du kjøre en loop på uthentingen.

Endret av trondes
Lenke til kommentar
Gjest Slettet+6132

<?
$query = mysql_query("SELECT * FROM mytable WHERE myinfo = 'something' LIMIT 0, 20");
while($row = mysql_fetch_assoc($query))
{
 echo $row['myinfo'];
}
?>

 

Slik må du gjøre om du skal hente ut flere enn 1 rad.

Endret av Slettet+6132
Lenke til kommentar

mysql_fetch_array() = mysql_fetch_assoc() + mysql_fetch_row() med mindre du spesifiserer noe annet.

array mysql_fetch_array ( resource result [, int result_type] )

 

result_type

 

The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and the default value of MYSQL_BOTH.

By using MYSQL_BOTH (default), you'll get an array with both associative and number indices. Using MYSQL_ASSOC, you only get associative indices (as mysql_fetch_assoc() works), using MYSQL_NUM, you only get number indices (as mysql_fetch_row() works).

Lenke til kommentar

Selfølgelig har jeg noe til å printe ut databasen. Men det er så langt script at jeg ikke tok det med i første post. Her er hele.

Når det gjelder den mysql_fetch_assoc(). Er den egentlig nødvendig i dette scriptet her.

Jeg har prøvd å printe ut $num og $result og der er det ingen ting.

Så etter det jeg har skjønt kommer det ikke noe ut av databasen. Selv om den samme Queryen funker i PhpMyAdmin.

<?php
$title="Gjestebok";
include "faste/topp.php";
include "faste/db-info.php";

$rows="20"; //antall innlegg/rader i forumet
if(!isset($_GET['side'])) {$side=0;}
$start=($_GET['side']*$rows);

$query="SELECT * FROM forum WHERE forum='forum' ORDER BY id desc LIMIT $start,$rows"; //string til DB
$result=mysql_query($query);   //mottar Databasetabellen
//PROBLEM: FÅR IKKE NOE DATA

$num=mysql_num_rows($result);  //teller antall rader i databasen

mysql_close();

if ($num==0) {
echo "Ingen data i database"; //
} else {
$i=0;
while ($i < $num) {

$id=mysql_result($result,$i,"id");
$navn=mysql_result($result,$i,"navn"); //også mulighet for email
$date=mysql_result($result,$i,"date");
$time=mysql_result($result,$i,"time");
$tekst=mysql_result($result,$i,"text");

echo $id."</br>\n";
echo $navn."</br>\n";


//SKRIV UT DATO:
list($year, $month, $day) = explode('-',$date);  //Deler opp 2006-03-10 i year, month og day

$timestamp = mktime(0,0,0, $month, $day, $year);

setlocale(LC_TIME, 'nor'); //sett språk og tidsregning til norsk (så vi får januar på norsk)
$formated_date = ucwords(strftime("%A %d. %B %Y", $timestamp));
//formated_date er nå en string som ser omtrent salik ut: 'Fredag 10 Mars 2006' (ja, på norsk)

//vi kan nå også bruke timestamp til å telle dager:
$enuke = (60 * 60 * 24 * 7); //7 dager
$endag = (60 * 60 * 24 * 2); //24 timer

$today = date("Y-m-d");
if($date == $today) { //I dag
echo "I dag";
}
else if($year==date('Y') && $month==date('m') && $day+1==date('d')) {
echo "I går"; //Printer ut 'i går'
}
else if($timestamp + $enuke > time()) {  //mindre enn 7 dager siden
$formated_date = ucwords(strftime("%A", $timestamp));  
//Bruker setlocal til å finne ut hvilket språk den skal bruke.   //Printer ut f.eks. 'Torsdag'
}
else {
$formated_date = ucwords(strftime("%d. %B %Y", $timestamp));  //Printer ut f.eks. '10 Mars 2006'
}

echo " ";
echo substr($time,0,5), "</br>\n";
echo $tekst."</br>\n";

//Begynner på neste loop
$i++;
}
}
//Forje side
if($_GET['side'] = "1") {
echo '<a class="neste" href="output.php">Forje side</a>'; 
}
else if($_GET['side'] != "") {
?>
<a class="neste" href="output.php?side='<?$_GET["side"]-1?>">Forje side</a>
<?}
echo '</br>';
//Neste side
if(intval($num/$rows) != $_GET['side']) {
?>
<a class="neste" href="output.php?side=<?$_GET["side"]+1?>">Neste side</a>
<?}
include "faste/bunn.php";

Endret av JonT
Lenke til kommentar

$query="SELECT * FROM forum WHERE forum='forum' ORDER BY id desc LIMIT $start,$rows"; //string til DB
$result=mysql_query($query);   //mottar Databasetabellen
//PROBLEM: FÅR IKKE NOE DATA

$num=mysql_num_rows($result);  //teller antall rader i databasen

mysql_close();

if ($num==0) {
echo "Ingen data i database"; //
} else {
$i=0;
while ($i < $num) {

$id=mysql_result($result,$i,"id");
$navn=mysql_result($result,$i,"navn"); //også mulighet for email
$date=mysql_result($result,$i,"date");
$time=mysql_result($result,$i,"time");
$tekst=mysql_result($result,$i,"text");

echo $id."</br>\n";
echo $navn."</br>\n";

 

hva om du bytter ut dette med:

$query="SELECT * FROM forum WHERE forum='forum' ORDER BY id desc LIMIT $start,$rows"; //string til DB
$result=mysql_query($query);   //mottar Databasetabellen
while($rows = mysql_fetch_array($resultat)){
$id=$rows['id'];
$navn=$rows['navn']; //også mulighet for email
$date=$rows['date'];
$time=$rows['time'];
$tekst=$rows['text'];
}

echo $id."</br>\n";
echo $navn."</br>\n";

Lenke til kommentar

Er dette all koden?

Har du koblet deg opp mot database serveren og databasen?

Altså:

<?php
 $kontakt = mysql_connect('server','navn','');

 if(!$kontakt) {
 print("<p>Klarer ikke å koble til databasen!</p>");

 exit();
 }
   $db = mysql_select_db('navn');

if(!$db)  {
print("<p>Klarer ikke å åpne databasen!</p>");

exit();
}

Lenke til kommentar
Er dette all koden?

Har du koblet deg opp mot database serveren og databasen?

Altså:

<?php
 $kontakt = mysql_connect('server','navn','');

 if(!$kontakt) {
 print("<p>Klarer ikke å koble til databasen!</p>");

 exit();
 }
   $db = mysql_select_db('navn');

if(!$db)  {
print("<p>Klarer ikke å åpne databasen!</p>");

exit();
}

5781987[/snapback]

Ja da.

Selfølgelig har jeg det.

Har det i include "faste/db-info.php";

Og tviler på at det er noen feil i den for jeg har brukt akkurat den samme filen i en del andre script og det funker utmerket.

Lenke til kommentar

Nå har jeg satt inn mysql_error(); og den sier:

Når jeg bruker scriptet til CruellaDeVille

mysql_fetch_array(): supplied argument is not a valid MySQL result resource in .. line ..

 

Og med det gamle scriptet får jeg:

mysql_num_rows(): supplied argument is not a valid MySQL result resource in..

Eller med mysql_numrows():

mysql_numrows(): supplied argument is not a valid MySQL result resource in..

<?php
$title="Gjestebok";
include "faste/topp.php";
include "faste/db-info.php";

$rows="20"; //antall innlegg/rader i forumet
if(!isset($_GET['side'])) {$side=0;}
$start=($_GET['side']*$rows);

$query="SELECT * FROM forum WHERE forum='forum' ORDER BY id desc LIMIT $start,$rows"; //string til DB
$resultat=mysql_query($query);   //mottar Databasetabellen

mysql_error();
mysql_close();

while($rows = mysql_fetch_array($resultat)){
$id=$rows['id'];
$navn=$rows['navn']; //også mulighet for email
$date=$rows['date'];
$time=$rows['time'];
$tekst=$rows['text'];
}



//SKRIV UT DATO:
list($year, $month, $day) = explode('-',$date);  //Deler opp 2006-03-10 i year, month og day

$timestamp = mktime(0,0,0, $month, $day, $year);

setlocale(LC_TIME, 'nor'); //sett språk og tidsregning til norsk (så vi får januar på norsk)
$formated_date = ucwords(strftime("%A %d. %B %Y", $timestamp));
//formated_date er nå en string som ser omtrent salik ut: 'Fredag 10 Mars 2006' (ja, på norsk)

//vi kan nå også bruke timestamp til å telle dager:
$enuke = (60 * 60 * 24 * 7); //7 dager
$endag = (60 * 60 * 24 * 2); //24 timer

$today = date("Y-m-d");
if($date == $today) { //I dag
echo "I dag";
}
else if($year==date('Y') && $month==date('m') && $day+1==date('d')) {
echo "I går"; //Printer ut 'i går'
}
else if($timestamp + $enuke > time()) {  //mindre enn 7 dager siden
$formated_date = ucwords(strftime("%A", $timestamp));  
//Bruker setlocal til å finne ut hvilket språk den skal bruke.   //Printer ut f.eks. 'Torsdag'
}
else {
$formated_date = ucwords(strftime("%d. %B %Y", $timestamp));  //Printer ut f.eks. '10 Mars 2006'
}

echo " ";
echo substr($time,0,5), "</br>\n";
echo $tekst."</br>\n";

//Forje side
if($_GET['side'] = "1") {
echo '<a class="neste" href="output.php">Forje side</a>';
}
else if($_GET['side'] != "") {
?>
<a class="neste" href="output.php?side='<?echo $_GET["side"]-1;?>">Forje side</a>
<?}
echo '</br>';
//Neste side
if($id != 1) {
?>
<a class="neste" href="output.php?side=<?echo $_GET["side"]+1;?>">Neste side</a>
<?}
include "faste/bunn.php";
?>

Endret av JonT
Lenke til kommentar
Prøv å lukk forbindelsen til databasen(mysql_close()) etter whileløkken ;)

5782291[/snapback]

Har prøvd det, men får fortsatt den mysql_fetch_array() Warningen.

5782358[/snapback]

 

ikke lurt å lukke tilkoblingen til mysql tabelen før du er ferdig med å hente ut data?

 

spar den til slutt du..

 

mysql_error();
mysql_close();

while($rows = mysql_fetch_array($resultat)){

 

edit: se koden over, og fjern mysql_close();

Endret av trondes
Lenke til kommentar
Gjest Slettet+6132

Høh, bare en liten matematisk feil her :p

 

//vi kan nå også bruke timestamp til å telle dager:
$enuke = (60 * 60 * 24 * 7); //7 dager
$endag = (60 * 60 * 24 * 2); //24 timer

 

60*60*24*2 er 48 timer, burde stått 60*60*24 der ;)

 

EDIT: Egentlig er det unødveldig å regne det ut, verdien er fortsatt den samme om 100 år. Det er 86400 sekund i hvert døgn hele året :p

Endret av Slettet+6132
Lenke til kommentar
Høh, bare en liten matematisk feil her :p

 

//vi kan nå også bruke timestamp til å telle dager:
$enuke = (60 * 60 * 24 * 7); //7 dager
$endag = (60 * 60 * 24 * 2); //24 timer

 

60*60*24*2 er 48 timer, burde stått 60*60*24 der ;)

 

EDIT: Egentlig er det unødveldig å regne det ut, verdien er fortsatt den samme om 100 år. Det er 86400 sekund i hvert døgn hele året :p

5782913[/snapback]

Rettet opp.

Jeg kan jo like godt regne det ut på forhånd så slipper servern å bruke unødvendig tid på å kjøre scriptet selv om det sikkert ikke tar så mye tid ekstra.

 

EDIT: Det ser ut som jeg ikke før teste noe mer av scriptet i dag siden serverne til hotserv.dk er nede.

Endret av JonT
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...