Avatar billede fancy Mester
10. oktober 2009 - 23:30 Der er 14 kommentarer og
1 løsning

check box

Er der en der kan se hvad jeg gør galt her
i denne søge funktion jeg har lavet
søgefunktion virker fint men jeg vil gerne have en checkbox på så jeg holde styr på hvem der har betalt

her er min kode

<?php
$aid = $_GET['aid'];
include("connect.php");
if(isset($_POST['button'])){
$result = mysql_query("SELECT * FROM tilmdb WHERE arrid='$aid'")
or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
$tilmid = $row['tid'];
$betal = $_POST['betalt_'.$tilmid];
if($betal=='on'){
$result2 = mysql_query("UPDATE tilmdb SET betalt='1' WHERE tid='$tilmid'")
or die(mysql_error());
}
else{
$result2 = mysql_query("UPDATE tilmdb SET betalt='0' WHERE tid='$tilmid'")
or die(mysql_error());
}
}
}
$betalt = $row['betalt'];
if($betalt=='1'){
$text = '<input type="checkbox" name="betalt_'.$tid.'" id="betalt" checked="checked" />';
}
else{
$text = '<input type="checkbox" name="betalt_'.$tid.'" id="betalt" />';

include("connect.php");



if(isset($_POST['tekst_soeg'])){
    $tekst_soeg = $_POST['tekst_soeg'];
    $sql_hent = "SELECT tnavn, tid, tadr, tmail FROM tilmdb WHERE tnavn LIKE '%$tekst_soeg%' OR tadr LIKE '%$tekst_soeg%' ORDER BY tid DESC";
    $hent = mysql_query($sql_hent) or die(mysql_error());
    if($hent && (mysql_num_rows($hent) > 0)){
        echo "<b>Search results:</b>";
        echo "<table width=\"350\" bgcolor=\"#e4ecff\" cellspacing=\"1\">";
        while($vis = mysql_fetch_array($hent)){
            echo "<tr><td>";
            echo $vis['tnavn'];
              echo "<br/><br/><i>";
            echo $vis['tid'];
      echo "<br/><br/><i>";
         
          echo $vis['tadr'];
          echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
           
 
            echo ")</a></font></i></td></tr>";
        }
        echo '</table>';
    }else
        echo "<br/>Fandt ikke noget ? - <a href=\"findd.php\">Prøv igen!</a>";


}
?>
<form method="post" action="<?php echo $_SERVER['php_self']; ?>">
<input type="text" name="tekst_soeg">
<input type="submit" value="SØG">
</form>
<?php
}
echo'</table>
<input type="submit" name="button" id="button" value="Betalt" /></form>';

?>
Avatar billede yHec Novice
10. oktober 2009 - 23:47 #1
Øhhh, ja.

$betalt = $row['betalt'];
if($betalt=='Betalt'){ <--- Den her rettes
$text = '<input type="checkbox" name="betalt_'.$tid.'" id="betalt" checked="checked" />';
}
else{
$text = '<input type="checkbox" name="betalt_'.$tid.'" id="betalt" />';

Du sender værdien "Betalt" af sted med en afkrydsning, ikke "True"

/y
Avatar billede fancy Mester
11. oktober 2009 - 00:07 #2
godt så men jeg kan ikke se min checkbox, jeg syndes eller at den også selv skulle opdatere siden men det gør den heller ikke
Avatar billede dkfire Nybegynder
11. oktober 2009 - 11:53 #3
Jeg tror det vil hjælpe dig hvis du rykkede din kode ind når du starter på en ny blok, dvs ved en { rykkes kode ind og ved } rykkes kodes ud. Du har gjort det ved noget af kode, så gør det også ved resten.
Du vil kunne se at $row['betalt'] er uden for den while-løkke som henter data til $row. Derfor vil $row ikke indeholde noget data før du har trykker på din knap.

Dernæst skal du overveje hvad du vil med dine checkboxe, da de ikke ligger inde for en form har de ingen effekt.

Du har heller ikke brug for at inkludere din connect.php flere gange på én php side.

Og så lige din kode:
<?php
$aid = $_GET['aid'];
include("connect.php");
if(isset($_POST['button'])){
    $result = mysql_query("SELECT * FROM tilmdb WHERE arrid='$aid'") or die(mysql_error());
    while($row = mysql_fetch_array( $result )) {
        $tilmid = $row['tid'];
        $betal = $_POST['betalt_'.$tilmid];
        if($betal=='on'){
            $result2 = mysql_query("UPDATE tilmdb SET betalt='1' WHERE tid='$tilmid'") or die(mysql_error());
        }
        else{
            $result2 = mysql_query("UPDATE tilmdb SET betalt='0' WHERE tid='$tilmid'") or die(mysql_error());
        }
    }
}
$betalt = $row['betalt'];
if($betalt=='1'){
    $text = '<input type="checkbox" name="betalt_'.$tid.'" id="betalt" checked="checked" />';
}
else{
    $text = '<input type="checkbox" name="betalt_'.$tid.'" id="betalt" />';

    include("connect.php");

    if(isset($_POST['tekst_soeg'])){
        $tekst_soeg = $_POST['tekst_soeg'];
        $sql_hent = "SELECT tnavn, tid, tadr, tmail FROM tilmdb WHERE tnavn LIKE '%$tekst_soeg%' OR tadr LIKE '%$tekst_soeg%' ORDER BY tid DESC";
        $hent = mysql_query($sql_hent) or die(mysql_error());
        if($hent && (mysql_num_rows($hent) > 0)){
            echo "<b>Search results:</b>";
            echo "<table width=\"350\" bgcolor=\"#e4ecff\" cellspacing=\"1\">";
            while($vis = mysql_fetch_array($hent)){
                echo "<tr><td>";
                echo $vis['tnavn'];
                  echo "<br/><br/><i>";
                echo $vis['tid'];
                  echo "<br/><br/><i>";
       
                  echo $vis['tadr'];
                  echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
         

                echo ")</a></font></i></td></tr>";
            }
            echo '</table>';
        }else
            echo "<br/>Fandt ikke noget ? - <a href=\"findd.php\">Prøv igen!</a>";
    }
?>
<form method="post" action="<?php echo $_SERVER['php_self']; ?>">
<input type="text" name="tekst_soeg">
<input type="submit" value="SØG">
</form>
<?php
}
echo'</table>
<input type="submit" name="button" id="button" value="Betalt" /></form>';

?>
Avatar billede dkfire Nybegynder
11. oktober 2009 - 11:56 #4
Og  så din kode i farver: http://php.pastebin.com/m2fcab67a
Avatar billede fancy Mester
16. oktober 2009 - 15:38 #5
Hmm jeg fatter det ikke ?????

jeg har her prøvet kun med søge funktionen og hvor den så skal update feltet betalt men det er der også ged i, er det helt forkert at lave det på måde .



<?php

include("connect.php");
$title = 'xxx';


if(isset($_POST['tekst_soeg'])){
    $tekst_soeg = $_POST['tekst_soeg'];
    $sql_hent = "SELECT tnavn, tid, tadr, tmail FROM tilmdb WHERE tnavn LIKE '%$tekst_soeg%' OR tadr LIKE '%$tekst_soeg%' ORDER BY tnavn DESC";
    $hent = mysql_query($sql_hent) or die(mysql_error());
    if($hent && (mysql_num_rows($hent) > 0)){
        echo "<b>Search results:</b>";
        echo "<table width=\"350\" bgcolor=\"#e4ecff\" cellspacing=\"1\">";
        while($vis = mysql_fetch_array($hent)){
            echo "<tr><td>";
            echo $vis['tid'];
            echo "<br/><br/><i>";
            echo $vis['tnavn'];
            echo "<br/><br/><i>";
            echo $vis['tmail'];
        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
          echo "<font color=\"#3f74ec\"><a href=\"?tid=$vis[tid]\">betalt";
        $hent = mysql_query("UPDATE tilmdb SET betalt='1' WHERE betalt = '{$vis['tid']}'") or die(mysql_error());
        }
        echo '</table>';
    }else
        echo "<br/>No results? - <a href=\"find.php\">New search!</a>";
} else {
?>
<form method="post" action="<?php echo $_SERVER['php_self']; ?>">
<input type="text" name="tekst_soeg">
<input type="submit" value="SØG">
</form>
<?php
}


?>
Avatar billede dkfire Nybegynder
16. oktober 2009 - 16:18 #6
Tror lige vi skal tage et skridt tilbage.
Hvad er det du gerne vil lave ?
Hvordan ser din tabel struktur ud i din database ?

Du bliver nød til at holde update og søgning adskilt. De to ting skal du ikke kører samtidig.
Avatar billede fancy Mester
16. oktober 2009 - 16:27 #7
Jeg vil gerne have at når jeg har fundet et navn så skulle jeg kunne klikke at der er betalt

min db ser sådan ud
-- Struktur-dump for tabellen `tilmdb`
--

CREATE TABLE `tilmdb` (
  `tid` int(10) NOT NULL auto_increment,
  `tnavn` varchar(100) NOT NULL,
  `tadr` varchar(100) NOT NULL,
  `tpnr` varchar(100) NOT NULL,
  `tby` varchar(100) NOT NULL,
  `ttel` varchar(100) NOT NULL,
  `tmail` varchar(100) NOT NULL,
  `forening` varchar(100) NOT NULL,
  `numv` varchar(100) NOT NULL,
  `numb` varchar(100) NOT NULL,
  `medl` varchar(100) NOT NULL,
  `arrid` varchar(100) NOT NULL,
  `betalt` varchar(1) NOT NULL,
  PRIMARY KEY  (`tid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=23 ;
Avatar billede fancy Mester
16. oktober 2009 - 16:28 #8
alså sætte betalt = 1
Avatar billede dkfire Nybegynder
16. oktober 2009 - 16:51 #9
Okay, først skal vi have søgningen til at virke.
Den kode du har der, virker søgninger der ?
Avatar billede fancy Mester
16. oktober 2009 - 17:03 #10
ja den virker ok den finder en person med det rigtige id
Avatar billede dkfire Nybegynder
16. oktober 2009 - 17:12 #11
Ok, og det du så gerne vil gøre er at kunne sætte betalt til 1 hvis denne person ikke har betalt endnu ?
Avatar billede fancy Mester
16. oktober 2009 - 17:23 #12
ja det er rigtigt men kun den person jeg har fundet i søgningen
Avatar billede dkfire Nybegynder
16. oktober 2009 - 17:49 #13
Ok, hvis vi tager udgangspunkt i den kode du allerede har lavet, så kunne det være noget ala:


<?php

include("connect.php");
$title = 'xxx';


if(isset($_POST['tekst_soeg'])){
    $tekst_soeg = $_POST['tekst_soeg'];
    $sql_hent = "SELECT tnavn, tid, tadr, tmail, betalt FROM tilmdb WHERE tnavn LIKE '%$tekst_soeg%' OR tadr LIKE '%$tekst_soeg%' ORDER BY tnavn DESC";
    $hent = mysql_query($sql_hent) or die(mysql_error());
    if($hent && (mysql_num_rows($hent) > 0)){
        echo "<b>Search results:</b>";
        echo "<table width=\"350\" bgcolor=\"#e4ecff\" cellspacing=\"1\">";
        while($vis = mysql_fetch_array($hent)){
            echo "<tr><td>";
            echo $vis['tid'];
            echo "<br/><br/><i>";
            echo $vis['tnavn'];
            echo "<br/><br/><i>";
            echo $vis['tmail'];
            echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            if( $vis['betalt'] != '1'){
            echo "<a style=\"color: #3f74ec;\" href=\"?update=1&id=".$vis['tid']."\">Ikke betalt</a>";
            }else {
                echo "<span style=\"color: #3f74ec;\">Har betalt</span>";
            }
        echo "</td></tr>";
        }
        echo '</table>';
    }else
        echo "<br/>No results? - <a href=\"find.php\">New search!</a>";
}elseif (isset($_GET['update']) && $_GET['update']== '1') {
    $id = intval($_GET['id']);
    $sql_update = "UPDATE tilmdb SET betalt = '1' WHERE tid=$id";
    $result = mysql_query($sql_update) or die(mysql_error());
    echo "Antal rækker som blev opdateret: ".mysql_affected_rows();
}else {
?>
<form method="post" action="<?php echo $_SERVER['php_self']; ?>">
<input type="text" name="tekst_soeg">
<input type="submit" value="SØG">
</form>
<?php
}
?>


Læg mærke til at jeg har delt din kode op i 3 steps.
Først vises formen.
Dernæst vises dit søge resultat, samt et link til at kunne ændre betalt.
Sidst opdateres tabellen hvis man har trykket på linket. Opdatering sker på baggrund af det id som sende via linket.
Avatar billede fancy Mester
16. oktober 2009 - 18:04 #14
det er perfekt det er der drillede var linket med variablen

tak for hjælpen

læg et svar
Avatar billede dkfire Nybegynder
16. oktober 2009 - 18:09 #15
Og et svar. :-)
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