FAQ |
Kalender |
2003-04-23, 04:37 | #1 | |||
|
||||
Mycket flitig postare
|
Jag vill kunna skriva i en FORM INPUT t.ex. "Hej $fornamn $efternamn!". Variablerna ska hämtas från en MySQL databas och ett personligt meddelande ska skickas till alla i databasen.
Men när jag skriver en variabel, så får jag bara variabelnamnet, inte innehållet i variabeln. Gissar att detta är någon typ av säkerhetslösning. Finns där någon metod att kringa detta? |
|||
Svara med citat |
2003-04-23, 08:17 | #2 | ||
|
|||
Supermoderator
|
Tja Fille, pastea koden oxo så man har lite mer att gå på innan man börjar svamla ihop ett svar =)
Mvh, Tobias
__________________
www.cellsynt.com |
||
Svara med citat |
2003-04-23, 12:00 | #3 | |||
|
||||
Mycket flitig postare
|
Här är hela källkoden för sidan
Observera att där fortfarande finns ganska mycket testvärden kvar i koden. Än så länge går det t.ex. inte att skicka några e-mail, e-mailen printas bara ut på skärmen så som användaren sen kommer att få dem. <?php include '../inc/func.php'; print "<HTML><BODY> <H1>Utskick</H1> "; if($validator=="preview" && isset($annonsRubrik) && isset($annons) && isset($targetSex) && isset($targetLBirth) && isset($targetUBirth) && isset($targetCompany)) { $link = DatabaseConnect() or die("Could not connect"); mysql_select_db("projekt") or die("Could not select database"); $query = "SELECT ForNamn, EfterNamn, email, lastLogin FROM Members WHERE birth BETWEEN $targetLBirth AND $targetUBirth AND lastLogin BETWEEN $lastLoginL AND $lastLoginU"; if ($targetSex!=0) { $query .= " AND sex='$targetSex'"; } if ($targetCompany!=0) { $query .= " AND company='$targetCompany'"; } $result = mysql_query($query) or die("Error in Query: $query. mySQL said " . mysql_error() . '.'); $rader = mysql_num_rows($result); if ($rader==0) { print "No matching members "; } else { print "Target: $rader members "; } while (list ($ForNamn, $EfterNamn, $email, $lastLogin) = mysql_fetch_row ($result)) { print $annons . " "; } mysql_free_result($result); mysql_close($link); } if($validator=="send" && isset($annonsRubrik) && isset($annons) && isset($targetSex) && isset($targetLBirth) && isset($targetUBirth) && isset($targetCompany)) { print "sending e-mails..."; $link = DatabaseConnect() or die("Could not connect"); mysql_select_db("projekt") or die("Could not select database"); $query = "SELECT ForNamn, EfterNamn, email FROM Members WHERE birth BETWEEN $targetLBirth AND $targetUBirth AND lastLogin BETWEEN $lastLoginL AND $lastLoginU"; if ($targetSex!=0) { $query .= " AND sex='$targetSex'"; } if ($targetCompany!=0) { $query .= " AND company='$targetCompany'"; } $result = mysql_query($query) or die("Error in Query: $query. mySQL said " . mysql_error() . '.'); while (list ($ForNamn, $EfterNamn, $email) = mysql_fetch_row ($result)) { print "$ForNamn $EfterNamn - $email "; } mysql_free_result($result); mysql_close($link); } elseif(isset($validator)) { print "there were errors"; } utskickForm($annonsRubrik, $annonsTyp, $annons, $targetSex, $targetLBirth, $targetUBirth, $targetCompany, $lastLoginL, $lastLoginU); print "</BODY></HTML>"; function utskickForm($annonsRubrik, $annonsTyp, $annons, $targetSex, $targetLBirth, $targetUBirth, $targetCompany, $lastLoginL, $lastLoginU) { print " <TABLE BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=#EEEEEE> <FORM METHOD=POST> <TR> <TD>AnnonsRubrik</TD> <TD><INPUT TYPE=text NAME=annonsRubrik VALUE=$annonsRubrik></TD> </TR> <TR> <TD BGCOLOR=#FFFFFF COLSPAN=3> Target visitors</TD> </TR> <TR> <TD>Sex</TD> <TD><SELECT NAME=targetSex SIZE=1><OPTION VALUE=0 SELECTED>both</OPTION> <OPTION VALUE=1>Males</OPTION> <OPTION VALUE=2>Females</OPTION> </SELECT></TD> </TR> <TR> <TD>Birthyear of oldest</TD> <TD><INPUT TYPE=text NAME=targetLBirth SIZE=4 MAXLENGTH=4 VALUE="; if($targetLBirth) { print $targetLBirth; } else { print "1900"; } print"></TD> </TR> <TR> <TD>Birthyear of youngest</TD> <TD><INPUT TYPE=text NAME=targetUBirth SIZE=4 MAXLENGTH=4 VALUE="; if(isset($targetUBirth)) { print $targetUBirth; } else { print "2050"; } print "></TD> </TR> <TR> <TD>Target Company/Person</TD> <TD><SELECT NAME=targetCompany SIZE=1><OPTION VALUE=0 SELECTED>both</OPTION> <OPTION VALUE=1>person</OPTION> <OPTION VALUE=2>company</OPTION> </SELECT></TD> </TR> <TR> <TD>lastLogin Lower</TD> <TD><INPUT TYPE=TEXT NAME=lastLoginL SIZE=19 VALUE="; if (isset($lastLoginL)) { print $lastLoginL; } else { print "00000000000000"; } print "></TD> </TR> <TR> <TD>lastLogin Upper</TD> <TD><INPUT TYPE=TEXT NAME=lastLoginU SIZE=19 VALUE="; if (isset($lastLoginU)) { print $lastLoginU; } else { print date("YmdHis"); } print "> <INPUT TYPE=SUBMIT NAME=validator VALUE=preview></TD> </TR> <TR> <TD BGCOLOR=#FFFFFF COLSPAN=3> Annons</TD> </TR> <TR> <TD COLSPAN=2><TEXTAREA NAME=annons COLS=40 ROWS=4>$annons</TEXTAREA> </TD> <TD ALIGN=CENTER VALIGN=MIDDLE><INPUT TYPE=SUBMIT NAME=validator VALUE=send></TD> </TR> </TABLE> </FORM>"; } ?> |
|||
Svara med citat |
2003-04-23, 18:04 | #4 | |||
|
||||
Flitig postare
|
Vad är det koden inte gör som den ska göra?
|
|||
Svara med citat |
2003-04-23, 18:17 | #5 | |||
|
||||
Mycket flitig postare
|
Citat:
På följande ställe, skrivs sen annonsen ut endast på namnet på variablerna, dvs inte innehållet: while (list ($ForNamn, $EfterNamn, $email, $lastLogin) = mysql_fetch_row ($result)) { print $annons . " "; } Det skrivs alltså ut "Hej $fornamn $efternamn!", istället för t.ex. "Hej Kalle Karlsson!". Jag vill alltså kunna skapa dynamiska meddelanden till var och en av medlemmarna i databasen. |
|||
Svara med citat |
2003-04-23, 21:29 | #6 | ||
|
|||
Supermoderator
|
while ($row = mysql_fetch_array($result)) {
$nyAnnons = $annons; foreach ($row as $key => $val) $nyAnnons = str_replace('$'.$key, $val, $nyAnnons); print $nyAnnons." "; } Jag skulle nog gjort något åt det hållet isf
__________________
www.ip2nation.com (ip till land) |
||
Svara med citat |
2003-04-23, 21:29 | #7 | |||
|
||||
Flitig postare
|
Hej!
Istället för: while (list ($ForNamn, $EfterNamn, $email) = mysql_fetch_row ($result)) { print "$ForNamn $EfterNamn - $email "; testa: while($row = mysql_fetch_row($result)) { print "$row[0] $row[1] - $row[2] "; eller: while($row = mysql_fetch_array($result)) { print "$row[ForNamn] $row[EfterNamn] - $row[email] "; Och se om det blir någon skillnad... |
|||
Svara med citat |
2003-05-15, 02:21 | #8 | |||
|
||||
Mycket flitig postare
|
Citat:
Tack för hjälpen Jome! Dock med lite modifieringar: while (list ($ForNamn, $EfterNamn) = mysql_fetch_row ($result)) { $nyAnnons = $annons; $nyAnnons = str_replace('$forNamn', $ForNamn, $nyAnnons); $nyAnnons = str_replace('$efterNamn', $EfterNamn, $nyAnnons); print $nyAnnons ." "; } I TEXTAREA kan jag då skriva ett meddelande typ: "Hej $forNamn $efterNamn! Hur är är läget?", så printas användarens förnamn och efternamn ut i meddelandet. |
|||
Svara med citat |
Svara |
|
|