Avatar billede fancy Mester
22. juli 2011 - 21:03 Der er 22 kommentarer og
1 løsning

Update

Hvad pokker gør jeg galt her, jeg for ingen fejl men der kommer ikke et "1" tal i min db i row bluse.

<?php
$tmail = $_GET['tmail'];
$tid = $_GET['tid'];
include("connect.php");
$title = 'xxx';


if(isset($_POST['tekst_soeg'])){
    $tekst_soeg = $_POST['tekst_soeg'];
   

    $sql_hent = "SELECT * FROM tilmdb WHERE Kommet ='0' AND tnavn LIKE '%$tekst_soeg%' OR tadr LIKE '%$tekst_soeg%' OR tid = '%$tekst_soeg%' ";
    $hent = mysql_query($sql_hent) or die(mysql_error());
    if($hent && (mysql_num_rows($hent) > 0)){
        echo "<b><center>Dette blev fundet:</b>";
        echo "<center><table width=\"350\" bgcolor=\"#e4ecff\" cellspacing=\"1\">";
        while($vis = mysql_fetch_array($hent)){
            echo "<tr><td>";
           
            echo "<br/>";
                echo "Navn : ";
              echo $vis['tnavn'];
                echo "<br/>";
              echo "Adresse : ";
            echo $vis['tadr'];
            echo "<br/>";
              echo "Post nummer : ";
            echo $vis['tpnr'];
            echo "<br/>";
              echo "By : ";
            echo $vis['tby'];
              echo "<br/>";
                    echo "Sted : ";
            echo $vis['anavn'];
            echo "<br/>";
                echo "Dag : ";
            echo $vis['adag'];
            echo "<br/>";
            echo "Fra : ";
            echo $vis['afra'];
            echo "<br/>";
            echo "Til : ";
            echo $vis['atil'];
            echo "<br/>";
            echo "Tilmeldings id : ";
              echo $vis['tid'];
              echo "<br/>";
              echo "Mail Adr : ";
              echo $vis['tmail'];
              echo "<br/>";
              echo "Telefon nr : ";
              echo $vis['ttel'];
            echo "<br/>";
            echo "Arrid : ";
              echo $vis['arrid'];
            echo "<br/>";
            echo "bluse : ";
              echo $vis['bluse'];
            echo "<br/>";
                 
 
            if( $vis['Kommet'] != '1'){
            echo "<a style=\"color: #3f74ec;\" href=\"?update=1&id=".$vis['tid']."&tmail=$tmail".$vis['tmail']."\">Denne person er IKKE mødt på vagt <br> klik her for at registrer personen</a>";
            }else {
                echo "<span style=\"color: #ff0000;\">Personen er allerede mødt på vagt</span>";
               
                echo "<br/><br/><br/>";
            }
        echo "</td></tr>";
        }
        echo '</table>';
    }else
        echo "<br/><br/><br/>";
}
elseif (isset($_GET['update']) && $_GET['update']== '1') {
    $id = intval($_GET['id']);
    $sql_update = "UPDATE tilmdb SET Kommet = '1' WHERE tid=$id";
    $sql_update = "UPDATE tilmdb SET bluse = '1' WHERE tmail=$id";
    $result = mysql_query($sql_update) or die(mysql_error());
    echo "<br/><br/><br/>";
  echo "<h2><b><center>Personen er nu mødt på vagt</b></h2> ";echo "<br/><br/><br/>";
Avatar billede fancy Mester
22. juli 2011 - 21:07 #1
Hov var lidt hurtig, det er meningen at når der klikkes på personen der er fundet, så skal der sættes et 1 tal i db row bluse (personen kan komme flere gange men skal kun have en bluse) på alle mail adresser der er lig den fundne post
22. juli 2011 - 22:41 #2
Du siger, at når du har kørt dit skript, så forventer du, at der skal være indsat et '1' i feltet 'bluse' i et antal rækker i tabellen tilmdb, men det sker ikke.

Det kan der jo være flere grunde til.  For det første studser jeg lidt over denne kode:

  $id = intval($_GET['id']);
  $sql_update = "UPDATE tilmdb SET Kommet = '1' WHERE tid=$id";
  $sql_update = "UPDATE tilmdb SET bluse = '1' WHERE tmail=$id";
  $result = mysql_query($sql_update) or die(mysql_error());

Vil du have et et-tal både i 'Kommet' og i 'bluse' i de pågældende rækker af tabellen?  Skal det i såfald være de rækker hvor tid=$id eller de rækker hvor tmail=$id?  Hvis tid (eftersom $id er et tal) kunne du måske prøve om denne syntaks virker bedre:

$result = mysql_query("UPDATE tilmdb SET Kommet = '1', bluse = '1' WHERE tid = $id") or die(mysql_error());

Så studser jeg også over strukturen/logikken i koden.  Hvis vi skipper alt det der ikke har at gøre med at update tabellen, så får vi denne kode:

if(isset($_POST['tekst_soeg']))
{
  en hel masse
}
elseif (isset($_GET['update']) && $_GET['update']== '1')
{
  $id = intval($_GET['id']);
  $sql_update = "UPDATE tilmdb SET Kommet = '1' WHERE tid=$id";
  $sql_update = "UPDATE tilmdb SET bluse = '1' WHERE tmail=$id";
  $result = mysql_query($sql_update) or die(mysql_error());

Med andre ord, tabellen skal kun updates, hvis $_POST['tekst_soeg'] ikke er sat men hvor $_GET['update'] er sat og er lig med 1.  Var det meningen?  Eller er der smuttet noget med strukturen i koden?

Hvis koden er rigtig nok, så kan årsagen til den manglende update være, at $_GET['update'] af en eller anden grund er tom eller at værdien ikke er 1.  Du kunne jo prøve, efter linien $id = intval($GET['id']); at indsætte dette:

echo "ID-VÆRDIEN ER $id";

Hvis du får sætning skrevet ud helt eller delvis, så ved du, at programmet når til dette kodeafsnit (så strukturen er god nok).  Hvis du får skrevet "ID-VÆRDIEN ER " eller "ID-VÆRDIEN ER 0", så er $GET['id'] tom eller har en forkert værdi, så løsningen på problemet skal findes ved at finde ud af hvorfor den er tom.  Hvis du får skrevet ud "ID-VÆRDIEN ER 1", så fortæl det.  I så fald skal vi grave dybere.
Avatar billede fancy Mester
22. juli 2011 - 23:31 #3
Hvis jeg indsætter denne echo "ID-VÆRDIEN ER $id"; for jeg kun udlæst den ene id som er min tid, som du var inde på er den altså tom den anden, jeg har prøvet at lave update som du beskrev med denne
$result = mysql_query("UPDATE tilmdb SET Kommet = '1', bluse = '1' WHERE tid = $id") or die(mysql_error());
uden nogen virkning.Her skiver den i sætning ved id værdier at id værdien er fx 753 Query was empty.
23. juli 2011 - 12:57 #4
Så kommer du nok til at fortælle mig lidt mere. 

1.  Hvor kommer værdierne i $_GET['tmail'], $_GET['tid'], $_GET['update'], $_GET['id'], og $_POST['tekst_soeg'] fra?  Kommer de fra en anden kode med en formular der udfyldes? Måske kunne du vise den kode også.

2.  Og hvad skal der så ske i koden?  Hvis et bestemt felt i formularen er udfyldt,  if(isset($_POST['tekst_soeg'])), så skal du have udskrevet navn, adresse, o.s.v. om en bestemt person.  Hvis dette felt ikke er fyldt ud, så finder du det tal der står i $_GET['id'], og så skal der komme et et-tal i feltet Kommet hvor tid er lig med dette tal, og der skal komme et et-tal i feltet bluse hvor tmail er lig med dette tal.  Er det korrekt?  Kan du forklare baggrunden for dette i almindeligt sprog?
Avatar billede fancy Mester
23. juli 2011 - 19:25 #5
Her er hvad jeg kan du for den oprindelig kode inden jeg begyndte at udbygge den.

<!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"><head>
 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title>find</title>

 
 
  <style type="text/css">
<!--
body {
    background-color: #99FFFF;
}
-->
  </style>
<?php $tid = $_GET['tid'];
include("connect.php");
$title = 'xxx';


if(isset($_POST['tekst_soeg'])){
    $tekst_soeg = $_POST['tekst_soeg'];
   

    $sql_hent = "SELECT * FROM tilmdb WHERE Kommet ='0' AND tnavn LIKE '%$tekst_soeg%' OR tadr LIKE '%$tekst_soeg%' OR tid = '%$tekst_soeg%' ";
    $hent = mysql_query($sql_hent) or die(mysql_error());
    if($hent && (mysql_num_rows($hent) > 0)){
        echo "<b><center>Dette blev fundet:</b>";
        echo "<center><table width=\"350\" bgcolor=\"#e4ecff\" cellspacing=\"1\">";
        while($vis = mysql_fetch_array($hent)){
            echo "<tr><td>";
           
            echo "<br/>";
                echo "Navn : ";
              echo $vis['tnavn'];
                echo "<br/>";
              echo "Adresse : ";
            echo $vis['tadr'];
            echo "<br/>";
              echo "Post nummer : ";
            echo $vis['tpnr'];
            echo "<br/>";
              echo "By : ";
            echo $vis['tby'];
              echo "<br/>";
                    echo "Sted : ";
            echo $vis['anavn'];
            echo "<br/>";
                echo "Dag : ";
            echo $vis['adag'];
            echo "<br/>";
            echo "Fra : ";
            echo $vis['afra'];
            echo "<br/>";
            echo "Til : ";
            echo $vis['atil'];
            echo "<br/>";
            echo "Tilmeldings id : ";
              echo $vis['tid'];
              echo "<br/>";
              echo "Mail Adr : ";
              echo $vis['tmail'];
              echo "<br/>";
              echo "Telefon nr : ";
              echo $vis['ttel'];
            echo "<br/>";
            echo "Arrid : ";
              echo $vis['arrid'];
            echo "<br/>";
            echo "<br/>";
            echo "bluse : ";
              echo $vis['bluse'];
            echo "<br/>";
                 
 
            if( $vis['Kommet'] != '1'){
            echo "<a style=\"color: #3f74ec;\" href=\"?update=1&id=".$vis['tid']."\">Denne person er IKKE mødt på vagt <br> klik her for at registrer personen</a>";
            }else {
                echo "<span style=\"color: #ff0000;\">Personen er allerede mødt på vagt</span>";
               
                echo "<br/><br/><br/>";
            }
        echo "</td></tr>";
        }
        echo '</table>';
    }else
        echo "<br/><br/><br/>";
}elseif (isset($_GET['update']) && $_GET['update']== '1') {
    $id = intval($_GET['id']);
    $sql_update = "UPDATE tilmdb SET Kommet = '1' WHERE tid=$id";
    $result = mysql_query($sql_update) or die(mysql_error());
    echo "<br/><br/><br/>";
  echo "<h2><b><center>Personen er nu mødt på vagt</b></h2> ";echo "<br/><br/><br/>";
          echo '<meta http-equiv="refresh" content="2;url=http://domaine/tilmeld/find_menu.php">';
}else {
?>
</head><body>
<center><img src="top.jpg" height="130" width="800" /><br />
<br />
<h1>Personale check ind<br />
</h1>
<h2>Kræmmermarked 2011</h2>
<br />
Indtast navn eller adresse i søge feltet<br />
<br />
<form method="post" action="<?php echo $_SERVER['php_self']; ?>"><input name="tekst_soeg" type="text" /> <input value="SØG" type="submit" /></form>
<?php }
?>
<br />
<center> Eller indtast vagt id
<br />
<?php include"find_id.php"; ?>
<br />
<br />
<center> <a href="find.php" target="_self">Ny søgning</a>
<br />
<br />
<span class="style1"><br />
<br />
</span><br />
<a href="kommet.php">Hvem er mødt</a>
<br />
<br />
<a href="ikke_kommet.php">Hvem er ikke mødt</a>
<br />
<br />
<a href="bf.php">Se timer </a>
<br />
<br />
<a href="tilmeld.php">Tilføj </a>
</center>
</center>

</body></html>


Som du kan se sker det hele i en fil, hvis vi lige skal slå fast hvad der skal ske, så ønsker jeg når jeg finder navnet på en person som skal på vagt, også at give ham en bluse, men personen kan have vagt flere gange, men skal kun have 1 bluse ialt.
Derfor er det eneste unikke mail adressen på personen, her ville jeg så sætte et 1 tal i db for at kunne se næste gang han mødte at han havde fået en bluse.
Så første gang kan han have tid=100 og næste gang måske 569, o.s.v.
jeg har valgt at kalde det for tid som er tilmeldings id.
23. juli 2011 - 21:38 #6
Jeg har svært ved at gennemskue det.  Måske er jeg ikke så smart som jeg burde være, og måske burde vi stoppe her.  Jeg fortæller lige hvad jeg tror jeg forstår og stiller nogle flere spørgsmål.

Det kunne se ud som om man, når man starter programmet, får en side med et søgefelt og en knap 'SØG' og nedenunder et antal links 'Ny søgning', 'Hvem er mødt', 'Hvem er ikke mødt', 'Se timer', og 'Tilføj'.  Hvis man i søgefeltet skriver enten et navn eller en adresse eller en id og så trykker på 'SØG', så fyldes det indfyldte navn/adresse/id i variabelen $_POST['tekst_soeg'] og der søges i mysql tabellen tilmdb efter den pågældende person, og hvis en sådan person findes skrives alle oplysninger ud.  Det er så nogenlunde forståeligt.

Man kan åbenbart også lade være med at fylde noget i søgefeltet og i stedet trykke på et af linkene.  Men det er ikke tydeligt hvad der så sker, for hvert af linkene kalder en fil,  'find.php', 'kommet.php', 'ikke_kommet.php,, 'bf.php', 'tilmeld.php', som du ikke viser.  Men på et eller andet tidspunkt kommer der en værdi i variablerne $_GET['update'] og $_GET['id'].  Når det sker, og hvis $_GET['update'] så er '1', så opdateres tabellen.  Her har jeg tre spørgsmål:  (1) Hvor kommer værdierne i _GET['update'] og $_GET['id'] fra?  (2)  Hvis nu for eksempel værdien af $_GET['id'] er 73, skal der så foretages to opdateringer af tilmdb, feltet Kommet skal være 1 hvor tid = 73, og bluse skal være 1 hvor tmail = 73?  (3)  Men du siger at tmail er en mailadresse.  Hvordan hænger det sammen med et tal såsom 73?
Avatar billede fancy Mester
23. juli 2011 - 22:31 #7
1) Hvor kommer værdierne i _GET['update'] og $_GET['id'] fra?
Værdien kommer fra href=\"?update=1&id=".$vis['tid']."\">Denne person er IKKE mødt på vagt <br> klik her for at registrer personen</a>"; her finder jeg variablen "tid"
(2)  Hvis nu for eksempel værdien af $_GET['id'] er 73, skal der så foretages to opdateringer af tilmdb, feltet Kommet skal være 1 hvor tid = 73, og bluse skal være 1 hvor tmail = 73?
Korrekt men den skal også være lig med alle ens mail adr som er fundet på tid 73, da tmail indeholder mail adr.
(3)  Men du siger at tmail er en mailadresse.  Hvordan hænger det sammen med et tal såsom 73? her knækker filmen , men variablen tmail indeholder mailadresse som til tilhører fx tid 73.
23. juli 2011 - 23:05 #8
Jamen så falder puslespillet måske alligevel på plads.  Så hvis der i rækken med id= 73 står en email adresse 'myemail@ab.cd', så skal bluse være lig med 1 i den række og i alle andre rækker hvor email adressen er 'myemail@ab.cd .  Er det rigtigt forstået?

Jeg går nu tilbage til dit oprindelige indlæg til dette kodeafsnit:

    $sql_update = "UPDATE tilmdb SET Kommet = '1' WHERE tid=$id";
    $sql_update = "UPDATE tilmdb SET bluse = '1' WHERE tmail=$id";
    $result = mysql_query($sql_update) or die(mysql_error());

Jeg foreslår, at du laver to UPDATEs.  Først sætter du Kommet = 1 hvor tid = 73 (for eksempel) og derefter sætter bluse = 1 hvor tmail er det samme som tmsil i rækken hvor tid = 73.  Altså:

$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid ´$id");
$result2 = mysql_query("UPDATE tilmdb SET bluse = '1' WHERE tmail = (SELECT tmail FROM tilmdb WHERE tid = $id)");
Avatar billede fancy Mester
23. juli 2011 - 23:24 #9
Jamen så falder puslespillet måske alligevel på plads.  Så hvis der i rækken med id= 73 står en email adresse 'myemail@ab.cd', så skal bluse være lig med 1 i den række og i alle andre rækker hvor email adressen er 'myemail@ab.cd .  Er det rigtigt forstået?

Korrekt.....


men den skriver nu Query was empty. og så stopper koden
24. juli 2011 - 08:20 #10
Jeg ser en fejl i min kode, et manglende lighedstegn i linien

$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid ´$id");

skal være

$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = ´$id");

Hjælper det?

Hvis ikke, så foreslår jeg at tage det skridt for skridt. 

Skridt 1:  I min foreslåede kode er der to queries, så slet midlertidig nummer to og brug i nummer en en id du ved eksisterer og hvor Kommet endnu ikke er 1.  Hvis en sådan id er 73, så prøv:

$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = 73") or die(mysql_error());

Det resulterer forhåbenligt i at Kommet bliver 1 for id 73.

Skridt 2:  Undersøg om problemet kunne ligge i $_GET['id'].  Ret koden til:

$id = intval($_GET['id']);
echo "ID = $id";
$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = '$id'") or die(mysql_error());

Forhåbenligt resulterer det i at du får udskrevet ID = 15 (eller et andet tal) og at Kommet bliver 1 for rækken med den pågældende id.

Hvis du får udskrevet "ID = 15" eller et andet tal men du får et tomt query, så består der nok ikke nogen række med en id for det tal.  Hvis du får udskrevet "ID = ", altså uden noget tal, så er der ingen værdi i $_GET['id'].  I så fald skal du søge problemet i den kode der skulle have genereret en $_GET['id'].

Hvis skridt 2 går godt, så prøv i skridt 3 at undersøge hvilken tmail der er for den pågældende tid:

$id = intval($_GET['id']);
echo "ID = $id";
$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = '$id'") or die(mysql_error());
$result2 = mysql_query("SELECT tmail FROM tilmdb WHERE tid = '$id'") or die(mysql_error());
$mail = mysql_result("$result2, 0");
echo " MAIL = $MAIL";

Forhåbenligt får du så udskrevet "MAIL = mymail@ab.dk" eller hvad tmail nu burde være for den pågældende tid.

Hvis du får udskrevet MAIL = mymail@ab.dk", så kan du prøve et fjerde skridt, at update tabellen direkte for denne mail, altså:

$result2 = mysql_query("UPDATE tilmdb SET bluse = '1' WHERE tmail = 'mymail@ab.dk'") or die(mysql_error());

Hvis alle disse skridt virker, så burde den fulde kode også virke (med rettelsen, lighedstegnet, jeg viste i begyndelsen,) så burde min foreslåede kode også virke.  Hvis ikke, eller hvis det går galt undervejs,så fortæl mig for hvert af ovenstående skridt hvad du gjorde og hvad resultatet var og der hvor det går galt fortæl hvad precist der sker og den precise ordlyd af fejlmeddelinger.
24. juli 2011 - 08:23 #11
Rettelse af rettelse:  Den kode linie jeg snakker om i første linie af forige indlæg skal være:

$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = $id");
Avatar billede fancy Mester
24. juli 2011 - 15:04 #12
Jeg ved ikke hvor langt du gider være med eller må du sige fra, du har allerede brug meget tid på min problem.

men her er hvad jeg har kunnet finde ud af i følge dine spørgsmål.



$id = intval($_GET['id']);
echo "ID = $id";
$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = '$id'") or die(mysql_error());

den kode siger  ID = fx 497


$id = intval($_GET['id']);
echo "ID = $id";
$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = '$id'") or die(mysql_error());
$result2 = mysql_query("SELECT tmail FROM tilmdb WHERE tid = '$id'") or die(mysql_error());
$mail = mysql_result("$result2, 0");
echo " MAIL = $MAIL";


denne siger ID = fx 568 MAIL =  Altså ingen mail



Hvis jeg indsætter denne

$result2 = mysql_query("UPDATE tilmdb SET bluse = '1' WHERE tmail = 'mymail@ab.dk'") or die(mysql_error());

bliver alle felter "bluse" ved alle mail adresser sat til 1
24. juli 2011 - 19:26 #13
I et så komplekst emne må vi kommunikere meget precist, ellers er det bedre at holde op.  Gider du fortælle mig nøjagtigt følgende:

(1)  Gennemførte du skridt 1 (altså køre den første query med en bestemt tid i stedet for med $id?)  Var resultatet at tabellen blev updatet, så feltet Kommet fik værdien 1 rækken med den valgte tid værdi?  Det fik jeg ikke at vide.  Hvis du ikke prøvede skridt 1 eller hvis tabellen ikke blev updated eller hvis du ikke forstår hvad jeg mener, så stop her og fortæl mig det.

(2)  Hvis du gennemførte skridt 1 og tabellen blev updated, så siger du, at i skridt 2 var værdien af $_GET['id'] 497.  Fik du så tabellen updated så feltet Kommet fik værdien 1 hvor tid ´497?  Hvis nej, så stop og fortæl.

(3)  Hvis du gennemførte skridt 2 og fik tabellen updated, så siger du, at i skridt 3 fandt querien ingen tmail!  Det må vi så kikke på, og så er der (foreløbigt) ingen grund til at gå videre med skridt 4.  Du vil update tabellen så bluse = 1 for en bestemt tmail, men hvis denne tmail ikke findes, bliver tabellen naturligvis ikke updated. 

Så spørgsmålet er hvorfor querien ingen tmail fandt for id=568.  Den simpleste forklaring ville naturligvis være hvis tmail feltet er tomt.  Hvis du i phpmyadmin (eller hvad du bruger til at kikke i mysql tabellen) prøver SELECT * FROM timmdb WHERE tid = 568 og se om Kommet nu er 1 og om tmail er tomt. 

(a)  Hvis tmail er tomt, hvorfor er det så det?  Hvordan fylder du værdier i tabellen?
(b)  Hvis der er en værdi i tmail for id = 568, hvad er så værdien?  Så må der være en anden grund til at du ikke får skrevet noget ud ved querien SELECT tmail FROM tilmdb WHERE tid = '$id'?  Kan det være at feltet i tabellen er stavet anderledes, for eksempel at feltet hedder Tmail i stedet for tmail?  Prøv at kikke på det og fortæl hvad du får.
Avatar billede fancy Mester
24. juli 2011 - 19:51 #14
1 er gennemført og der kom et 1 tal Kommet

2 der kom et 1 tal i Kommet

Jeg er sikker på at felet ikke er tomt tjekket med phpmyadmin

sådan ser mine tabeller ud

Feltnavn     Datatype     Kollation (Collation)     Attributter     Nulværdi     Standardværdi     Ekstra     Handling
    tid     int(4)             Nej         auto_increment     Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    tnavn     varchar(100)     utf8_swedish_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    tadr     varchar(100)     utf8_swedish_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    tpnr     varchar(100)     utf8_general_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    tby     varchar(100)     utf8_swedish_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    ttel     varchar(100)     utf8_general_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    tmail     varchar(100)     utf8_general_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    forening     varchar(100)     utf8_general_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    numv     varchar(100)     utf8_general_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    numb     varchar(100)     utf8_general_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    medl     varchar(100)     utf8_general_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    arrid     int(4)             Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    betalt     varchar(1)     utf8_general_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    Kommet     int(4)             Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    anavn     varchar(50)     utf8_danish_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    adag     varchar(20)     utf8_danish_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    afra     varchar(10)     utf8_danish_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    atil     varchar(10)     utf8_danish_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    accept     tinytext     utf8_danish_ci         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    aar     int(4)             Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    bluse     varchar(5)     utf8_danish_ci         Nej
24. juli 2011 - 22:00 #15
Så er det lige før jeg ikke kan finde ud af det mere.  Vi kunne prøve at se om det virker i mysql og om det er når det kaldes fra php at det går galt.

Består der i tabellen en tid = 568 (for eksempel?)  Så kunne du i phpmyadmin prøve:

(a)  SELECT * FROM tilmdb WHERE tid = 568

og så fortælle hvilken værdi der vises for tmail. 

Hvis tid for eksempel er mymail@ab.dk, så kunne du prøve:

(b)  SELECT * FROM tilmdb WHERE tmail = "mymail@ab.dk" (du bruger naturligvis den mail adresse der svarer til tid = 568 i stedet for mymail@ab.dk)

Så skulle du meget gerne få alle de rækker i tabellen hvor tmail = mymail@ab.dk (eller hvad den nu er).  Fortæl mig om det sker.

(c)  Dernæse:  SELECT * FROM tilmdb WHERE tmail = (SELECT tmail FROM tilmdb WHERE tid = 568)

Så skulle du gerne få de samme rækker som i den forige query.

Hvis alt dette fungerer, så synes mysql'en at være ok.  Så i php:

(d) 
$result = mysql_query("SELECT * FROM tilmdb WHERE tmail = (SELECT tmail FROM tilmdb WHERE tid = 568)") or die(mysql_error());
while($row = mysql_fetch_array($result))
{
  $tid = $row['tid'];
  $tmail = $row['tmail'];
  echo "TID = $tid - TMAIL = $tmail <br>";
}

Hvis vi antager at du ovenfor i (b) og i (c) får tre rækker henholdsvis starter med tid=123, tid=456, og tid=568, så skulle du gerne nu få udskrevet dette:

TID = 123 - MAIL = mymail@ab.dk
TID = 456 - MAIL = mymail@ab.dk
TID = 568 - MAIL = MYMAIL@ab.dk

Fortæl mig om det sker.

Hvis success, så endnu et skridt i php:
(e)

$id = 568;
$result = mysql_query("SELECT * FROM tilmdb WHERE tmail = (SELECT tmail FROM tilmdb WHERE tid = '$id')") or die(mysql_error());
while($row = mysql_fetch_array($result))
{
  $tid = $row['tid'];
  $tmail = $row['tmail'];
  echo "TID = $tid - TMAIL = $tmail <br>";
}

Så skulle du gerne få udskrevet de samme tre rækker.  Fortæl mig om det sker.
Avatar billede fancy Mester
24. juli 2011 - 23:12 #16
(a)  SELECT * FROM tilmdb WHERE tid = 568

og så fortælle hvilken værdi der vises for tmail. 

her vises en mail adr i tmail tabel

SELECT * FROM tilmdb WHERE tmail = karsten.leth@gmail.com

her vises alle tid'er som indeholder karsten.leth@gmail.com

SELECT * FROM tilmdb WHERE tmail = (SELECT tmail FROM tilmdb WHERE tid = 757)

her vises alle tid'er som indeholder karsten.leth@gmail.com

$result = mysql_query("SELECT * FROM tilmdb WHERE tmail = (SELECT tmail FROM tilmdb WHERE tid = 568)") or die(mysql_error());
while($row = mysql_fetch_array($result))
{
  $tid = $row['tid'];
  $tmail = $row['tmail'];
  echo "TID = $tid - TMAIL = $tmail <br>";
}

her udskriver php alle tid med tilhørende tmail alså ok.


$id = 757;
$result = mysql_query("SELECT * FROM tilmdb WHERE tmail = (SELECT tmail FROM tilmdb WHERE tid = '$id')") or die(mysql_error());
while($row = mysql_fetch_array($result))
{
  $tid = $row['tid'];
  $tmail = $row['tmail'];
  echo "TID = $tid - TMAIL = $tmail <br>";
}

her sker det samme altså alle tid der har mail adr som oven over.
Avatar billede fancy Mester
24. juli 2011 - 23:54 #17
Jeg har forsøgt dette

Uddrag af koden

$mail = $vis['tmail'];
                 
 
            if( $vis['Kommet'] != '1'){
            echo "<a style=\"color: #3f74ec;\" href=\"?update=1&id=".$vis['tid']."\">Denne person er IKKE mødt på vagt <br> klik her for at registrer personen</a>";
            }else {
                echo "<span style=\"color: #ff0000;\">Personen er allerede mødt på vagt</span>";
               
                echo "<br/><br/><br/>";
            }
        echo "</td></tr>";
        }
        echo '</table>';
    }else
        echo "<br/><br/><br/>";
}elseif (isset($_GET['update']) && $_GET['update']== '1') {
    $id = intval($_GET['id']);
    $sql_update = "UPDATE tilmdb SET Kommet = '1' WHERE tid=$id";
    $insert = mysql_query("INSERT INTO bluse_2011 (mail) VALUES ('$mail')");
    $result = mysql_query($sql_update) or die(mysql_error());


her kender den heller ikke $mail selv om jeg beder php om at huske den
Avatar billede fancy Mester
25. juli 2011 - 00:43 #18
F......


Dette virker

<?php
$tmail = $_GET['tmail'];
$tid = $_GET['tid'];
echo "$tmail";
echo "$tid";

include("connect.php");
$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = $tid");
$result = mysql_query("UPDATE tilmdb SET bluse = '1' WHERE tmail = 'karsten.leth@gmail.com'");



echo "<tr>ok<td>";
?>

dette virker ikke

<?php
$tmail = $_GET['tmail'];
$tid = $_GET['tid'];
echo "$tmail";
echo "$tid";

include("connect.php");
$result1 = mysql_query("UPDATE tilmdb SET Kommet = '1' WHERE tid = $tid");
$result = mysql_query("UPDATE tilmdb SET bluse = '1' WHERE tmail = $tmail");



echo "<tr>ok<td>";
?>


Hvad en i pokker sker der...
Avatar billede fancy Mester
25. juli 2011 - 00:51 #19
sender variablerne til anden siden sådan her
<a href="update.php?tid=' . $vis['tid']. "&tmail=$tmail".$vis['tmail']. '">reg</a>';

og begge variabler bliver skrevet i php men mail vil ikke i db
25. juli 2011 - 08:07 #20
Det mest sigende er #18.  Når du bruger en konkret tmail 'virker' det, men når du bruger $tmail 'virker' det ikke.

Hvis du ved 'echo $tmail' får udskrevet den forventede tmail værdi, såsom karsten.leth@gmail.com, så får mysql serveret en tmail men kan ikke bruge den.  Den mest nærliggende årsag er at $tmail indeholder en tekststreng og at mysql derfor skal have den mellem anførselstegn.  Prøv

$result = mysql_query("UPDATE tilmdb SET bluse = '1' WHERE tmail = '$tmail'");

(Jeg tror du har udviklet noget php/mysql teknik i løbet af denne tråd.  Du er begyndt selv at udskrive diagnose meddelelser så som echo "$tmail" og echo "$tid" for at undersøge, om variablerne har de forventede værdier.  Det er også en god ide at eksperimentere med hvordan variablerne bliver presenteret i queryen såsom mellem anførselstegn/apostroffer eller ej, og måske slutte queryerne med 'or die(mysql_error()) for at få mysql til selv at fortælle hvad der er galt.)
Avatar billede fancy Mester
26. juli 2011 - 01:02 #21
Jeg forstår ikke helt hvad der sker men det virker, hvorfor skal det stå i anførsels tegn?

Men som du skriver har jeg lært noget helt andet, og det er måden at fejl finde på, det kan bruges mange andre steder.

Tak for hjælpen endnu en gang, det er jo ikke først en gang du har hjulpet mig.

læg et svar
26. juli 2011 - 05:11 #22
Jamen det var da godt det virkede.  Hvad angår anførselstegn, da du brugte koden

$result = mysql_query("UPDATE tilmdb SET bluse = '1' WHERE tmail = 'karsten.leth@gmail.com'");

anbragte du email adressen mellem anførselstegn.  Det er nødvendigt, for at mysql kan forstå, at det drejer sig om en tekststreng.  Indholdet af variabelen $tmail er karsten.leth@gmail.com, altså uden anførselstegn.  Derfor skal du skrive '@tmail'.
28. juli 2011 - 06:34 #23
fancy, fik du mit indlæg #22?  Det var mit indtryk, at ud ville afslutte og lukke tråden nu.
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