Avatar billede uniquedk Nybegynder
20. september 2007 - 19:03 Der er 20 kommentarer og
1 løsning

Arrgh help.. hvorfor laver denne mysql linie mine headers sent??

Har rodet med det her hele dagen.... og er kommet frem til at denne linie laver "cannot modify headers" fejl et andet sted i mit script når den når et vist antal den skal hente...
Hvad er der galt i denne linie... det er først når den kommer op å ar hente en ca. 20 resultater den begynder på det..

mysql_query("SELECT my_bookmarks.link_id,my_bookmarks.user_id,my_links.url,my_links.id,my_links.title FROM my_bookmarks,my_links WHERE my_bookmarks.user_id = ('$userid') AND my_bookmarks.link_id = (my_links.id)");
Avatar billede uniquedk Nybegynder
20. september 2007 - 19:06 #1
jeg ved det er den linie for at prøvet tusind ting, og gennemtjekket for spaces alle steder og afprøvet flush og div.
Men fejlen retter sig hvis jeg sætter en anden mysql query ind i den linie uden nogle joins... så noget må være galt
Avatar billede leif Seniormester
20. september 2007 - 20:05 #2
Den linie sender IKKE nogen headers som den stå der, men hvad med at komme med den fulde fejl
Avatar billede showsource Seniormester
20. september 2007 - 20:06 #3
Avatar billede uniquedk Nybegynder
20. september 2007 - 20:12 #4
Jo men har lige flyttet idt rundt på det....
Men det bliver hentet ind i en ul ul ul li liste med følgende

<ul>
      <li><a href="#" title="My bookmarks">Bookmarks</a><ul>';
    // bookmark menu
            while ($bookmarks = mysql_fetch_array($sqlbook)) {
                echo '<li style="width:120px;text-align:left;"><a href="http://'.$bookmarks['url'].'" style="font-size:0.65em;" target="_blank">'.$bookmarks['title'].'</a></li>'; }
                echo '</ul></li></ul>'; }

Det der undrer mig er at det hele virker som det skal og det er kun når jeg har bookmarked 20+ links ca.
Avatar billede uniquedk Nybegynder
20. september 2007 - 20:23 #5
Men er også lidt kompliceret.... har en link linie met et form image der når man klikker laver en GET action
if (isset($booked) && ($booked == 1) ) {
                                            echo '<form method="post" action="index.php?action=unbookmark" style="float:left;margin-right:2px;">
                                            <input type="hidden" value="'.$link_id.'" name="linkid" />
                                            <input type="image" class="noborder" src="images/unbookmark.gif" title="Remove bookmark" name="bmark" />
                                            </form>';

og har så denne linie i en ekstern fil

$action = isset($_GET['action']) ? $_GET['action'] : NULL;

som kører denne funktion ved klik

function unbookmark() {
            $linkid = $_POST['linkid'];
            $userid = $_SESSION['logged_id'];
            db_connect();
            mysql_query("DELETE FROM my_bookmarks WHERE link_id = ('$linkid') AND user_id = ('$userid') ");
            header('Location: index.php');
                $_SESSION['bookmark'] = 3;
                mysql_close();
                exit;       
        }
havde en anelse om at det var session der gjode det og har også prøvet at flytte rundt på hvor jeg starter session osv. og det eneste der har hjulpet har været at lave query på en anden måde indtil videre.... har prøvet tusind ting i den funtion hvor headers bliver sendt og ingenting hjælper :-/
Avatar billede uniquedk Nybegynder
20. september 2007 - 20:26 #6
har også prøvet at arbejde med headers_sent, flush, ob_flush og de andre i manualen, men jeg er sgu ikke så meget inde i det header værk.... har også installeret live headers i firefox men ved egentlig ikke rigtig hvad jeg kigger efter
Avatar billede olebole Juniormester
21. september 2007 - 18:51 #7
<ole>

Det, du kikker efter er bare ét tegn eller én tom linje, der udskrevet, inden headeren forsøges sat. Det er ikke til at gætte udfra kodestumper. Vi må se hele koden

/mvh
</bole>
Avatar billede uniquedk Nybegynder
21. september 2007 - 19:14 #8
Ja jeg ved godt det er nogle tegn, men tror jeg fik det fixet... kæmper med nogle andre problemer lige pt...
Men er noget af det mest underlige jeg læmge har set
Fik det fixet ved at fjerne style="xxx" i den her linie
echo '<li style="width:120px;text-align:left;"><a href="http://'.$bookmarks['url'].'" style="font-size:0.65em;" target="_blank">'.$bookmarks['title'].'</a></li>'; }
og sætte en class in istedet... meget underligt
Avatar billede olebole Juniormester
21. september 2007 - 19:34 #9
Nej, du må helt klart lave andre fejl. Det, du beskriver dér, kan umuligt fjerne en header-fejl  :)
Avatar billede uniquedk Nybegynder
21. september 2007 - 19:39 #10
men det gjode det LOL, synes også selv det er mærkeligt... men har pt problemer med mine headers på et webhotel jeg har uploadet det på... og har lige fundet nogle underlige tegn min css fil laver i body, og er vist det der laver lort i den er ved at undersøge hvad det er den laver
Avatar billede uniquedk Nybegynder
21. september 2007 - 20:08 #11
hmmm på mit webhotel har et eller andet tilføjet de her tegn

i starten af alle mine php filer, nogen ide om hvad der kan have forårsaget det?
Avatar billede uniquedk Nybegynder
21. september 2007 - 20:39 #12
nu har jeg kæmpet hele dagen med min host, kan nogen forklare mig hvorfor

<?php
header ("Loacation: something")
?>

virker hos min host
men
<head></head>
<?php
header ("Loacation: something")
?>

IKKE virker, er det ikke hos dem der er noget galt???
Avatar billede uniquedk Nybegynder
22. september 2007 - 00:25 #13
Damn det har været en kamp, men man lærer vel så længe man lever.... åbenbart noget i min struktur af mn kode, men underligt nok virkede det fint på min egen apache.... men jeg havde en struktur ala det her som åbenbart ikke er godt...

Havde en index.php hvor jeg include'ed en header.php hvori min head var og inden og her includerede jeg så min func.php med alle mine funktioner hvori alle mine header(locations) også var, men de var sat til ting ala index.php?action=something, men den includerede så min header.php med hvor min func.php blev includeret efter min head, tror vist nok det er det der har været problemet..... min func.php skulle vel egentlig have været før min header.... ja jeg er sgu ved at være lidt forvirret LOL, men er så småt ved at have fået det til at virke ved at bruge hele dagen på omstrukturering af koden og har vel også lært en ting eller to :-)
så tak for hjælpen til mig selv :-) glad for at jeg er så stædig med at finde den slags fejl, var sgu ellers lige ved at opgi *GGGG*

nu skal jeg bare ha fundet en anden editor.... dreamweaver bliver ved at sætte 3 mærkelige tegn i toppen af mine filer når jeg uploader.... har vel nok noget at gøre med serverens tegnsætning og min men kan sgu ikke lige se hvor man kan ændre det og til hvad :-/
Avatar billede olebole Juniormester
22. september 2007 - 17:59 #14
Jamen, udfra det, jeg skrev til dig i (21/09-2007 18:51:23), er det jo indlysende logisk, at denne kaster en fejl:

<head></head>
<?php
header ("Loacation: something")
?>

- her har du _netop_ udskrevet mindst én linje før header'en!

Det lyder, somom du har slået fejl-meldinger fra i din lokale PHP-opsætning. Det bør du helt klart rette.

Desuden skal du have ordnet dit problem omkring tegnsæt. Der er helt åbenlyst en inkompatibilitet mellem de(t) tegnsæt, du bruger og det, din server bruger.
Det er et koderproblem ... ikke et editorproblem  ;o)
Avatar billede uniquedk Nybegynder
22. september 2007 - 18:08 #15
Nej jeg har slået fejlmeldinger til, men ved ikke hvorfor den ikke gav mig buffer meldinger.... men bruger error_reporting(all) nu få at tjekke... men er sgu noget jeg mangler at lære om det headers for kan ikke helt få det til at virke som jeg gerne vil.... :-/

jeg har nu en index fil der ser således ud

<?php
session_start();
include ("funcset.php");

include ("header.php");
include ("siteinfo.php");

    if ($action == 'addlink') {
        include ('add.php');
        exit;
    }
    if ($action == 'addlink2') {
        include ('add2.php');
            exit;
    }
    if ($action == 'login') {
        include ('login.php');
        exit;
    }

include ("getlinks.php");
include ("footer.php");
?>

og min header.php indeholder min html header.....
Hvis jeg så klikker login includerer den jo min login.php som ser således ud

<?php
   
        $error1 = isset($_SESSION['error']) && ($_SESSION['error'] == 1) ? "Something went wrong, plz try again" : "";
        $error2 = isset($_SESSION['error']) && ($_SESSION['error'] == 2) ? "Password or email wrong" : "";
    echo '
        <div>'; if (isset($_SESSION['error'])) { echo $error1.$error2; }
        echo '<form class="myform" method="post" action="index.php?action=login">
            <label>Email:</label>
                <input type="text" name="usermail" /><br />
            <label>Password:</label>
                <input type="password" name="password" /><br />
                <input type="submit" class="button" name="login" value="Login" />
            </form></div>';
            unset($_SESSION['error']);
    login();
?>

login funktionen henter en fra funcset.php

    function login() {
   
        // login and form check
        if (isset($_POST['login'])) {
            $usermail = $_SESSION['usermail'] = $_POST['usermail'];
            $userpass = $_SESSION['password'] = $_POST['password'];
                if (empty($usermail) || empty($userpass) || !ereg("^.+@.+\..+$",$usermail)) {
                    error_reporting(E_ALL);
                    header ("Location: index.php?action=login");
                    $_SESSION['error'] = 1;
                    exit;
                }
                       
            // all okay... login
            db_connect();
            $sql = mysql_query("SELECT usermail,id FROM my_users WHERE usermail = '$usermail' AND password = '$userpass' ");
            $login = mysql_fetch_array($sql);
                // check pass
                $check = mysql_num_rows($sql);
                    if ($check <> 1) {
                        header ("Location: index.php?action=login");
                        $_SESSION['error'] = 2;
                        exit;
                    } else {
                $_SESSION['logged'] = $login['usermail'];
                $_SESSION['logged_id'] = $login['id'];
                    }
                       
        }
    }

det forstår jeg ikke rigtigt hvorfor ikke virker... jeg har jo intet output i funktionen før header(location), men den fejler åbenbart fordi deni index.php henter header.php inden den kører den funktion, er ihvert ifald hvad jeg er kommet frem til så jeg knokler for at finde ud af hvordan strukturen skal være :-/
Avatar billede uniquedk Nybegynder
22. september 2007 - 18:25 #16
hele min header.php ser således ud

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MySite</title>
<link rel="stylesheet" media="screen" type="text/css" href="mycss.css" />
<script language="JavaScript" type="text/javascript" src="myjava.js"></script>
</head>
<body>
<?php
if (isset($_SESSION['logged'])) {
    echo '<div class="logged">You are logged in as: ' .$_SESSION['logged']. '</div>';
    $userid = ($_SESSION['logged_id']);
    db_connect();
    $sqlbook = mysql_query("SELECT my_bookmarks.link_id,my_bookmarks.user_id,my_links.url,my_links.id,my_links.title FROM (my_bookmarks,my_links) WHERE my_bookmarks.user_id = ('$userid') AND my_bookmarks.link_id = (my_links.id)");
        }
echo'
<div class="outermain"><div class="minwidth"><div class="container">
<h1 class="title" title="MySite">MySite</h1>
<div class="outermenu"><div id="menu">
  <ul>
      <li><a href="index.php" title="Add links">Start</a></li>
  </ul>
  <ul>
      <li><a href="index.php?action=addlink" title="Add links">Add link</a></li>
  </ul>';
    if (!isset($_SESSION['logged'])) {
echo'<ul>
      <li><a href="index.php?action=login" title="Top links">Login</a></li>
  </ul>
  <ul>
      <li><a href="index.php?action=register" title="Registre at MySite">Register</a></li>
  </ul>';
    } else {
echo'<ul>
      <li><a href="index.php?action=logout" title="Logout of MySite">Logout</a></li>
  </ul>
  <ul>
      <li><a href="#" title="My bookmarks">Bookmarks</a><ul>';
    // bookmark menu
            while ($bookmarks = mysql_fetch_array($sqlbook)) {
                echo '<li class="bmenu"><a href="http://'.$bookmarks['url'].'" class="bmenu" target="_blank">'.$bookmarks['title'].'</a></li>'; }
                echo '</ul></li></ul>'; }
    // Settings menu
        if (isset($_SESSION['logged'])) {
    echo'<ul><li><a href="#">Settings</a>
            <ul>';
        $bookset = mysql_query("SELECT booksetting,iconset FROM my_users WHERE id = ('$userid') ");
        $settings = mysql_fetch_array($bookset);
                if (($settings['booksetting']) == 0 ){
                    echo '<li style="width:100px;text-align:left;overflow:hidden;"><a href="index.php?action=bon">Bookmark ON</a></li>';
                }
                else if    (($settings['booksetting']) == 1 ) {
                    echo '<li style="width:100px;text-align:left;overflow:hidden;"><a href="index.php?action=boff">Bookmark OFF</a></li>';
                }
                if (($settings['iconset']) == 0 ){
                    echo '<li style="width:100px;text-align:left;overflow:hidden;"><a href="index.php?action=ion">Icons ON</a></li>';
                }
                else if    (($settings['iconset']) == 1 ) {
                    echo '<li style="width:100px;text-align:left;overflow:hidden;"><a href="index.php?action=ioff">Icons OFF</a></li>';
                }
        echo '</ul></li></ul>';
    }    
  // Partner menu
echo'<ul>
      <li><a href="#" title="Top links">Top Links</a>
        <ul>';
        db_connect();
        $partner = mysql_query("SELECT url,title FROM my_links WHERE partner = ('1') ORDER BY RAND() LIMIT 5 ");
        while ($partid = mysql_fetch_array($partner)) {
        echo'
          <li style="width:140px;text-align:left;"><a href="'.$partid['url'].'" target="_blank">'.$partid['title'].'</a></li>';
        }
    echo'</ul>
    </li>
</ul>
</div></div><div class="clr"></div>'; ?>
Avatar billede leif Seniormester
22. september 2007 - 18:52 #17
Hvis du inkluderer teksten du skrev: 22/09-2007 18:25:16 i toppen af filen så outputter du massere før header("Location: xxx")
Avatar billede uniquedk Nybegynder
22. september 2007 - 18:56 #18
jeg kan se at hvis jeg f.eks... sletter login(); fra min login.php
og laver en
if ($action == 'login') {
        login();
        }
i min funcset.php istedet så virker det, men så skal jeg jo ha'
if ($action == 'login')
to steder, en i index.php til at includere filen og en i funcset.php for at køre funktionen, det må da kunne gøres anderledes..

Det bunder jo lidt i at det er lidt noget template stil jeg prøver at lave...
jeg kan også flytte

if ($action == 'login') {
        include ('login.php');
        login();
        }
i index.php op over
include ('header.php');
men så får jeg jo bare ikke min login box placeret inde i mit html kode men i starten af siden... :-/
Avatar billede uniquedk Nybegynder
22. september 2007 - 18:59 #19
ja Leif jeg includerer hele min header fil så... har jeg fundet ud af... troede bare det fungerede således at den jo havde includeret min funktion og egentlig kørte det først, men åbenbart ikke... men så kan jeg bare ikke lige overskue hvordan strukturen skal være, men som i min sidste kommentar kan det fixes med to if actions, men synes bare det ser ud til at være en usmart måde, men jeg lærer det sgu nok på et tidspunkt *GGGGG*
Avatar billede uniquedk Nybegynder
22. september 2007 - 19:56 #20
LOL hvor har jeg måttet flytte rundt på meget kode *GGGG*
men lader til at alle mine tjeks og ting og sager har jeg måttet flytte ind i funktioner og kalde dem igen via if actions i toppen af min funcset.php, men det begynder at virke som jeg vil ha' det til, det er vel en lærings proces :-)
Må tænke lidt mere over kode struktur til den næste side jeg laver, laver det egentlig bare for at blive bedre til php...
der må være en smartere måde at gøre det på end at skulle have både en if action i index til at includere en fil og en i funcset til at kalde en funktion... men kan være det blir bedre næste gang :-))
Avatar billede uniquedk Nybegynder
22. september 2007 - 20:23 #21
Det undre mig bare det virker på min egen server, men kan forestille mig det er pga. denne linie i php.ini

output_buffering = 4096
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