12. juli 2007 - 00:02Der er
12 kommentarer og 1 løsning
Hjælp til kode der henter og sætter data i database
Hej
Jeg er ved at lave et lille php-script, jeg bare ikke kan få til at virke.
Ideen er at man logger ind på en side, der spørger om man vil være frivillig hjælper i en forening. Der er så en knap der hedder "Ja, det vil jeg gerne" (hvis man ikke vil så trykker man ikke). Nedenunder er der en liste over alle dem der har trykket ja. Ved at trykke ja bliver ens brugerid puttet i en database.
Hvis man går ind på siden igen, så tjekker php koden databasen om ens brugerid står der. Hvis den gør det, så spørger den: Vil du stadig hjælpe? Der så to knapper: "Ja, det vil jeg stadig" og "Nej, det vil jeg ikke" Ved at trykke "Ja, det vil jeg stadig", så bliver databasen opdateret med en dato om man stadig er interesseret. Trykker man "Nej, det vil jeg ikke", så bliver man slettet fra databasen (eller fra den ene tabel, og ikke som bruger af sitet).
Problemet med koden, som den er lige nu, er at hvis der ikke står noget i den tabel som den skal hente og sætte data i så stiller den ikke spørgsmålet. Hvis der er noget i tabellen, og man som bruger ikke står der, så stiller den spørgsmålet om man vil være hjælper. Det kan man så svare ja til og man bliver puttet i tabellen. Så langt så godt. Men vender brugeren tilbage, stiller siden begge spørgsmål: Vil du være frivillig? og Vil du stadig være frivillig? Den skal kun spørge vil du stadig være frivillig, når man allerede står i tabellen.
Dette er koden: ------ <p> <center><h2>Hjælperlisten</h2></center> </p> <p>Hej <?php echo ($userdata['user_name']); ?> <br> <br> <p>Her er en liste over alle dem der vil hjælpe til i foreningen. Din hjælp er påskønnet og vi kan bruge alle former for hjælp. <br><br> På forhånd tak <br> -Bestyrelsen</p>
<?php
$type_query = "SELECT * FROM frivillige "; $type_result = mysql_query($type_query) or die("Query failed : " . mysql_error()); while ($type_row = mysql_fetch_assoc($type_result)) { if ($userdata['user_id'] == $type_row["frivillig_user_id"]){ echo "Vil du stadig hjælpe? <br> <br> <form action='viewpage.php?page_id=43' method='post'> <input type='submit' value='Ja, vil stadig hjælpe' name='stadig' /> </form> <form action='viewpage.php?page_id=44' method='post'> <input type='submit' value='Nej, ikke mere' name='nej' /></p> </form>"; } else { echo "Vil du hjælpe med i foreningen? <br> <br>
//Henter alle hjælpere $sql10 = "SELECT fusion_users.user_id, dato, dato_bekraeft, user_name, user_mellemnavn, user_efternavn, user_kaelenavn, user_avatar FROM frivillige, fusion_users WHERE frivillige.frivillig_user_id=fusion_users.user_id ORDER BY dato DESC"; $tilmeldt10 = @mysql_query($sql10); if (!$tilmeldt10) { exit('Databasefejl omkring linie 32: ' . mysql_error()); } //Viser alle der er hjælper ?>
while ($type_row = mysql_fetch_assoc($type_result)){ if ($userdata['user_id'] == $type_row["frivillig_user_id"]){ echo "Vil du stadig hjælpe?<br><br><form action='viewpage.php?page_id=43' method='post'><input type='submit' value='Ja, vil stadig hjælpe' name='stadig' /></form><form action='viewpage.php?page_id=44' method='post'><input type='submit' value='Nej, ikke mere' name='nej' /></p></form>"; }else{ echo "Vil du hjælpe med i foreningen?<br><br><form action='viewpage.php?page_id=42' method='post'><input type='submit' value='Ja, jeg vil gerne hjælpe' name='frivillig' /></p></form>"; } } den kører alle hjælpere igennem og for hver hjælper tjekker den om personen der er logget ind, er dén hjælper, dvs at for hver hjælper der er en anden end den der kører scriptet vil den skrive "Vil du hjælpe?" og den ene gang den støder på den rigtige person, hvis den er i databasen og hjælpere, vil den skrive "vil du stadig hjælpe"
du kan ændre ovennævnte while løkke til noget a la:
while ($type_row = mysql_fetch_assoc($type_result)){ if ($userdata['user_id'] == $type_row["frivillig_user_id"]){ $er_frivillig = 1; } } if($er_frivillig == 1){ echo "Vil du stadig hjælpe?<br><br><form action='viewpage.php?page_id=43' method='post'><input type='submit' value='Ja, vil stadig hjælpe' name='stadig' /></form><form action='viewpage.php?page_id=44' method='post'><input type='submit' value='Nej, ikke mere' name='nej' /></p></form>"; }else{ echo "Vil du hjælpe med i foreningen?<br><br><form action='viewpage.php?page_id=42' method='post'><input type='submit' value='Ja, jeg vil gerne hjælpe' name='frivillig' /></p></form>"; }
Hep, det virkede. Mange tak for hjælpen. Smid et svar og du får points.
Mvh
Jost
PS. Jeg har et bonus spørgsmål, som du eller nogen måske andre kan svare på: Min formular smider en dato i databasen, men den bliver skrevet omvendt i forhold til den danske måde at gøre det på. Altså 2007-07-12 og ikke 12-07-2007. Kan man ændre det forholdsvis let eller skal der en større omgang kode til? Jeg bruger den sql-sætning hvis det kan hjælpe: $sql = "INSERT INTO frivillige SET frivillig_user_id='".$userdata['user_id']."', dato=LOCALTIMESTAMP(), dato_bekraeft=LOCALTIMESTAMP()";
Den skriver -2-07-2007 selv om den skal skrive 24-07-2007. Så der må være noget galt med $day = substr($date, 7, 2); Men jeg fatter ikke lige det der substr, så jeg kan ikke regne det ud :-)
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.