xzibiz Skrevet 12. oktober 2012 Del Skrevet 12. oktober 2012 Har en kode som henter ut info: <?php $con = mysql_connect("localhost","sql","passord") or die('Could not connect: ' .mysql_error()); mysql_select_db("sql", $con) or die(mysql_error()); $q="SELECT * FROM `medlemmer` WHERE `bil`='1'"; $sql = mysql_query($q) or die("MySQL ERROR: ".mysql_error()); echo "Disse pesonene har egen bil:"; while($data=mysql_fetch_array($sql)) { echo $data['fornavn']." ".$data['etternavn']; echo "<br />"; } mysql_close($con); ?> Den henter alle personer som har krysset av i checkboxen "bil" Men jeg vil at navnet som den lister opp skal fungere som en link, når jeg trykker på linken får jeg opp resten av personalia til personen. Hvordan kan jeg få til dette ? Lenke til kommentar
BlueEAGLE Skrevet 12. oktober 2012 Del Skrevet 12. oktober 2012 (endret) while($data=mysql_fetch_array($sql)) { echo $data['fornavn']." ".$data['etternavn']; echo "<br />"; } Her listes alle navnene. Det du vil gjøre er å lage en lenke her som for eksempel: while($data=mysql_fetch_array($sql)) { echo '<a href="personalia.php?ID='.$data['personID'].'">'; echo $data['fornavn']." ".$data['etternavn']; echo '</a>'; echo "<br />"; } Forutsetningen her er selvfølgelig at du har en fil som heter personalia.php som leser $_GET['personID'] og lister personalia ut fra det. Håper det hjelper. Endret 12. oktober 2012 av BlueEAGLE Lenke til kommentar
xzibiz Skrevet 12. oktober 2012 Forfatter Del Skrevet 12. oktober 2012 personalia.php: <?php $con = mysql_connect("localhost","sql","passord") or die('Could not connect: ' .mysql_error()); mysql_select_db("sql", $con) or die(mysql_error()); $q="SELECT * FROM `medlemmer`"; $sql = "SELECT * FROM `medlemmer` WHERE `ID` = " . mysql_real_escape_string ( $_GET['ID'] ); mysql_select_db ( $database, $connect ); if ( @mysql_query ( $sql ) ) { $query = mysql_query ( $sql ); $row = mysql_fetch_assoc ( $query ); echo $row['fornavn']. " " .$row['etternavn']. "<br />" .$row['telefon']; } else { die ( mysql_error () ); } ?> Fikk denne til å fungere. Men har et par checkboxer i en form som jeg skal hente ut info fra. Men vil bare ha dem i lista dersom den har value=1 Dersom checkboxen ikke er kryssa av (value=0) vil jeg ikke ha den i lista her. Gode forslag ? Lenke til kommentar
slacky Skrevet 13. oktober 2012 Del Skrevet 13. oktober 2012 (endret) Forklar gjerne litt bedre, så kan vi kansje hjelpe til litt bedre. Men har et par checkboxer i en form som jeg skal hente ut info fra.Men vil bare ha dem i lista dersom den har value=1 Det er jo bare enkle sql-spørringer som må til: $q="SELECT * FROM `medlemmer` WHERE `dame`='1' AND `sexy`='1'"; $sql=mysql_query($q); $data=mysql_fetch_array($sql); echo $data['damens_navn']; //Nå har vi hentet ut de som har krysset av for sexy, og dame. Endret 13. oktober 2012 av warpie Lenke til kommentar
xzibiz Skrevet 14. oktober 2012 Forfatter Del Skrevet 14. oktober 2012 i den formen jeg snakket om har jeg flere checkboxer hvor ver enkelt representerer et kurs. ca 20 stk. Når jeg går inn og henter ut info om personene vil jeg ha med i lista di kursa som personen har. di kursa som personen ikke har skal ikke vises. Lenke til kommentar
slacky Skrevet 15. oktober 2012 Del Skrevet 15. oktober 2012 (endret) Fant det litt vanskelig å forstå hva du mente... *Kommer edit så fort jeg har tolket teksten* Tror jeg har tolket deg rett nå som jeg skriver dette: //Kurser - Bare forsøk å forstå denne. (rediger og tilpass til dine kursnavn) $kurs[0] = ($row['kurs_psykologlek']=="1") ? $row['kurs_psykologlek'] : ""; $kurs[1] = ($row['kurs_datateknikk']=="1") ? $row['kurs_datateknikk'] : ""; $kurs[2] = ($row['kurs_forstehjelp']=="1") ? $row['kurs_forstehjelp'] : ""; //ikke vits å røre foreach($kurs as $data) { if($data != "") echo "Skal ha kurs i $data<br />"; } Du trenger ikke gjøre det slik heller da... Men, det blir vel blandt de lettere, og mer forståelige måtene, selv om det blir klumesete når en har så mange kurs. ---- Kan hende jeg er trøtt, men jeg ville egentlig hatt en egen kurs DB-tabell, deretter jukset slik jeg altid gjør, ved å ha en kolonne i brukertabellen som inneholdt en rekke nummere, som da er ID-en til de forskjellige kursene, separert hver nummer med |, f.eks: 1|5|8|3|9|12|33 Så hadde jeg gjort noe slik (kan altid være feil i mine eksempler, slørver mye når jeg er trøtt): $q="SELECT * FROM `medlemmer` WHERE user_id='1'"; $sql=mysql_query($q); $data=mysql_fetch_array($sql); echo "<h2>Personen har meldt seg opp for følgende kurs:</h2>"; $kurs = explode("|", $data['user_kurs']); foreach($kurs as $kid) { $kurs_sql=mysql_query("SELECT * FROM `kurs_db` WHERE kurs_id='".$kid."'"); $kurs_data=mysql_fetch_array($sql); echo $kurs_data['kurs_navn']."<br />"; } På denne måten så er koden altid fungerende, selv om du endrer navn på kurset, eller legger til nye. Ingen flere modifikasjoner må bli gjort. Om du er intressert i mer hjelp ang. det systemet der så kan jeg sikkert slå inn noen eksempler de nermeste dagene. Endret 16. oktober 2012 av warpie Lenke til kommentar
xzibiz Skrevet 15. oktober 2012 Forfatter Del Skrevet 15. oktober 2012 Føler det er litt vanskelig å forklare også. <label class="title" for="fornavn">Fornavn: </label><input type="text" name="fornavn" /><br /> <label class="title" for="etternavn">Etternavn: </label><input type="text" name="etternavn" /><br /> <label class="title" for="telefon">Telefon: </label><input type="int" name="telefon" /><br /> <label class="title" for="epost">Epost: </label><input type="text" name="epost" /><br /> <label class="title" for="adresse">Postadresse: </label><input type="text" name="adresse" /><br /> <label class="title" for="vannc">Vann C: </label><input type="checkbox" name="vannc" value="1" <?php if ($_POST['vannc']): ?>checked="checked"<?php endif; ?> /><br /> <label class="title" for="vannb">Vann B: </label><input type="checkbox" name="vannb" value="1" <?php if ($_POST['vannb']): ?>checked="checked"<?php endif; ?> /><br /> <label class="title" for="vanna">Vann A: </label><input type="checkbox" name="vanna" value="1" <?php if ($_POST['vanna']): ?>checked="checked"<?php endif; ?> /><br /> <label class="title" for="elveredning">Elveredning: </label><input type="checkbox" name="elveredning" value="1" <?php if ($_POST['elveredning']): ?>checked="checked"<?php endif; ?> /><br /> Der er deler av koden av formet som alt blir registrert gjennom. Det som var planen var at viss jeg trykker meg inn på siden medlemmer, får jeg en liste med kun navn på personene i alfabetisk rekkefølge. Trykker jeg inn på et navn, får jeg opp resten av personaliaen til personen, samt at jeg vil ha en liste over hvilke checkboxen som er avkrysset. jeg henter ut info med: $q="SELECT * FROM `medlemmer` ORDER BY fornavn ASC"; $sql = mysql_query($q) or die("MySQL ERROR: ".mysql_error()); echo "Navn på medlemmer:"; echo "<br />"; while($data=mysql_fetch_array($sql)) { echo '<a href="personalia.php?ID='.$data['ID'].'">'; echo $data['fornavn']." ".$data['etternavn']; echo '</a>'; echo "<br />"; } Og det er her jeg vil ha inn infoen om hvilke checkboxer som er avkrysset. Lenke til kommentar
slacky Skrevet 15. oktober 2012 Del Skrevet 15. oktober 2012 (endret) Personlia.php <?php $con = mysql_connect("localhost","sql","passord") or die('Could not connect: ' .mysql_error()); mysql_select_db("sql", $con) or die(mysql_error()); $sql = "SELECT * FROM `medlemmer` WHERE `ID` = " . mysql_real_escape_string ( $_GET['ID'] ); if (@mysql_query($sql)) { $query = mysql_query ( $sql ); $row = mysql_fetch_assoc ( $query ); echo $row['fornavn']. " " .$row['etternavn']. "<br />" .$row['telefon']; //Kurser - Bare forsøk å forstå denne. (rediger og tilpass til dine kursnavn) $kurs[0] = ($row['kurs_psykologlek']=="1") ? $row['kurs_psykologlek'] : ""; $kurs[1] = ($row['kurs_datateknikk']=="1") ? $row['kurs_datateknikk'] : ""; $kurs[2] = ($row['kurs_forstehjelp']=="1") ? $row['kurs_forstehjelp'] : ""; //ikke vits å røre foreach($kurs as $data) { if($data != "") echo "Skal ha kurs i $data<br />"; } } else die(mysql_error()); ?> Endret 16. oktober 2012 av warpie Lenke til kommentar
xzibiz Skrevet 15. oktober 2012 Forfatter Del Skrevet 15. oktober 2012 Personlia.php <?php $con = mysql_connect("localhost","sql","passord") or die('Could not connect: ' .mysql_error()); mysql_select_db("sql", $con) or die(mysql_error()); $sql = "SELECT * FROM `medlemmer` WHERE `ID` = " . mysql_real_escape_string ( $_GET['ID'] ); if (@mysql_query($sql)) { $query = mysql_query ( $sql ); $row = mysql_fetch_assoc ( $query ); echo $row['fornavn']. " " .$row['etternavn']. "<br />" .$row['telefon']; //Kurser - Bare forsøk å forstå denne. (rediger og tilpass til dine kursnavn) $kurs[0] = ($row['kurs_psykologlek']=="1") ? $row['kurs_psykologlek'] : ""; $kurs[1] = ($row['kurs_datateknikk']=="1") ? $row['kurs_datateknikk'] : ""; $kurs[2] = ($row['kurs_forstehjelp']=="1") ? $row['kurs_forstehjelp'] : ""; //ikke vits å røre foreach($kurs) { if($kurs != "") echo "Skal ha kurs i $kurs<br />"; } } else die(mysql_error()); ?> syntax error på linje 18: foreach($kurs) { Lenke til kommentar
hjahre Skrevet 16. oktober 2012 Del Skrevet 16. oktober 2012 (endret) Jeg tror du burde ha hvertfall to tabeller for dette. Én tabell som omhandler personalia, én tabell med checkboxnavn og eventuell informasjon og én tabell som sier hvem som har valgt hva. Tabell 1 vil ha disse feltene. Id Fornavn Etternavn Telefon Epost Postadresse Husk å sette rett constraint på feltene, f.eks at epost må være unik. Så slipper du doble innlegg i databasen. Tabell 2 vil ha følgende felter: Id CheckboxNavn og Tabell 3 har følgende felter PersonID references Tabell1(ID) Checkbox references Tabell2(ID) Dette vil føre til litt mer å holde styr på når du setter inn og sletter, men queryene vil bli som dette. SELECT t2.CheckboxNavn from Tabell1 t1, Tabell2 t2, Tabell3 t3 WHERE t3.personid = t1.id AND t3.checkbox = t2.id and t1.epost = '[email protected]'; EDIT: Slettet noen unødvendige tags Endret 16. oktober 2012 av hjahre Lenke til kommentar
slacky Skrevet 16. oktober 2012 Del Skrevet 16. oktober 2012 (endret) *snip* syntax error på linje 18: foreach($kurs) { Hvis du ønsker å ikke miste all respekt her på php-forumet, så burde du vurdere å få gjort litt selv... Jeg er sikker på at en hver hadde klart å funnet ut av den feilen der, om de bare hadde orket. Men, nå er det bare å se på mitt forrige innlegg: Har oppdatert det. Endret 16. oktober 2012 av warpie 1 Lenke til kommentar
xzibiz Skrevet 17. oktober 2012 Forfatter Del Skrevet 17. oktober 2012 Ja burde sett den feilen der. Men fått gode tips fra en kamerat på hvordan jeg skal gå fram. Nå har jeg laga 3 tabeller. Tabell1:(folk) ID, fornavn, etternavn, telefon, epost, adresse Tabell2: (kursnavn) kursnavnid, kursnavn Tabell3: (harlurs) personid, kursid Koden vi har komt opp med og mener skal fungere er som følger: <?php $con = mysql_connect("localhost","sql","passord") or die('Could not connect: ' .mysql_error()); mysql_select_db("sql", $con) or die(mysql_error()); $sql[0] = sprintf("SELECT * FROM `folk` WHERE `ID` = %d;", mysql_real_escape_string ($_GET['ID'])); if (@mysql_query($sql[0])) { $query[0] = mysql_query ( $sql[0] ); $result[0] = mysql_fetch_assoc ( $query[0] ); } $person = $result[0][0]; $person_id = $result[0][0]['ID']; $sql[2] = "SELECT * FROM `kursnavn`"; if (@mysql_query($sql[2])) { $query[2] = mysql_query ( $sql[2] ); $result[2] = mysql_fetch_assoc ( $query[2] ); } $kursliste = FixArray($result[2], 'kursid', 'kursnavn'); $sql[1] = sprintf("SELECT * FROM `harkurs` WHERE `personid` = %d;", $person_id); if (@mysql_query($sql[1])) { $query[1] = mysql_query ( $sql[1] ); $result[1] = mysql_fetch_assoc ( $query[1] ); } $person_kurs = FixArray($result[1], 'kursid', 'personid'); echo $person['fornavn']. " " .$person['etternavn']. "<br />" .$person['telefon']. "<br />"; foreach ($person_kurs as $gotkurs => $dump) { printf("Påmeldt; %s<br />\n", $kursliste[$gotkurs]); } function FixArray($arny,$key,$value=false) { foreach ($arny as $a) { $at=$a; unset($at[$key]); if (count($at)==1) $ax=array_keys($at); $at=$at[$ax[0]]; if ($value<>false) $at=$a[$value]; $newt[$a[$key]]=$at; } return $newt; } ?> Men et lite problem.., vi får ikke noe info ut fra den. Vi har lest den opp/ned bak/fram uten å finne ut hvorfor den ikke vil. Noen gode øyne som kan se over ? Lenke til kommentar
Crowly Skrevet 18. oktober 2012 Del Skrevet 18. oktober 2012 Du utfører sql'en to ganger, en gang i if'en og så en gang til, dette er unødvendig. Fjern også @ når du utvikler, slik at du får beskjed om evt. advarsler og feilmeldinger. Du kan gjøre det slik hvis du kun skal hente ut første rad: $result[0] = mysql_fetch_assoc(mysql_query($sql[0])); Dette blir feil siden du bruker mysql_fetch_assoc $person = $result[0][0]; Du må bruke felt navnet i stedet for 0 $person = $result[0]['felt_navn']; Siden du bruker id fra folk til å gjøre ett oppslag i harkurs, så kan dette gjøres med ett oppslag. Se nærmere på INNER JOIN SELECT f.id, f.navn, h.felt1, h.felt2, h.felt3 FROM `folk` AS f INNER JOIN `harkurs` AS h ON h.personid=f.id WHERE f.id = %d print_r() er nyttig å bruke når man debugger, f.eks. hvis du ønsker å se hva som blir returnet fra ett oppslag: $result[0] = mysql_fetch_assoc(mysql_query($sql[0])); echo '<pre>'; print_r($result[0]); echo '</pre>'; Lenke til kommentar
xzibiz Skrevet 18. oktober 2012 Forfatter Del Skrevet 18. oktober 2012 Fikk fikset feilen i koden. Endelig kode: <?php $connection = mysql_connect("localhost", "sql", "passord"); if (!$connection) { die('Could not connect: ' . mysql_error()); } mysql_select_db("sql"); $sql[0] = sprintf("SELECT * FROM `folk` WHERE `ID` = %d LIMIT 1;", mysql_real_escape_string ($_GET['ID'])); if ($query[0] = @mysql_query($sql[0])) { $result[0] = mysql_fetch_assoc ( $query[0] ); } else { die('SQL ERROR'); } $person = $result[0]; $person_id = $result[0]['ID']; $sql[2] = "SELECT * FROM kursnavn"; if ($query[2] = @mysql_query($sql[2])) { while ($row = mysql_fetch_assoc($query[2])) { $result[2][] = $row; } } $kursliste = FixArray($result[2], 'kursnavnid', 'kursnavn'); $sql[1] = sprintf("SELECT * FROM `harkurs` WHERE `personid` = %d;", $person_id); if (@mysql_query($sql[1])) { $query[1] = mysql_query ( $sql[1] ); while ($row = mysql_fetch_assoc($query[1])) { $result[1][] = $row; } } $person_kurs = array(); if (isset($result[1]) && is_array($result[1])) { $person_kurs = FixArray($result[1], 'kursid', 'personid'); } echo "<strong><h3>Navn:</h3></strong>". $person['fornavn']. " " .$person['etternavn']. "<br />" .$person['telefon']."<strong><h4>Kompetanse: </h4></strong>"; foreach ($person_kurs as $gotkurs => $dump) { printf("%s<br />\n", $kursliste[$gotkurs]); } function FixArray($arny,$key,$value=false) { foreach ($arny as $a) { $at=$a; unset($at[$key]); if (count($at)==1) $ax=array_keys($at); $at=$at[$ax[0]]; if ($value<>false) $at=$a[$value]; $newt[$a[$key]]=$at; } return $newt; } ?> Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå