I've really gone to town here:
here is your database SQL:
-----------------------
CREATE TABLE `artist_style` (
`artist_id` int(11) NOT NULL default '0',
`style_id` int(11) NOT NULL default '0',
KEY `artist_id` (`artist_id`)
) TYPE=MyISAM;
INSERT INTO `artist_style` VALUES (2, 1);
INSERT INTO `artist_style` VALUES (1, 3);
CREATE TABLE `artists` (
`artist_id` int(11) NOT NULL auto_increment,
`name` varchar(40) NOT NULL default '',
PRIMARY KEY (`artist_id`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;
INSERT INTO `artists` VALUES (1, 'skatellites');
INSERT INTO `artists` VALUES (2, 'lead zep');
CREATE TABLE `styles` (
`style_id` int(11) NOT NULL auto_increment,
`name` varchar(40) NOT NULL default '',
PRIMARY KEY (`style_id`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;
INSERT INTO `styles` VALUES (1, 'rock & roll');
INSERT INTO `styles` VALUES (2, 'folk');
INSERT INTO `styles` VALUES (3, 'ska');
---------------------
Here is a PHP page which does the whole thing:
-----------------------
<?php
$DB=mysql_connect("localho
mysql_select_db("test");
if(isset($_POST['save'])){
$id=save_artist();
show_artist_form($id);
}elseif(isset($_GET['artis
show_artist_form($_GET['ar
}else{
show_artist_list();
}
function show_artist_list(){
$sql="SELECT artist_id,name FROM artists ORDER BY name";
$res=sql($sql);
print("<h1>Artist List</h1>");
while($row=row($res)){
print("<a href=\"?artist=".urlencode
}
print("<a href=\"?artist=\"><b>add new</b></a>");
}
function show_artist_form($artist=N
$artist_styles=array();
$name="";
?>
<script>
function formstatus(s){
if(s){
document.forms['f'].elemen
document.forms['f'].elemen
document.getElementById('m
}else{
document.forms['f'].elemen
}
}
</script>
<?php
if($artist){
$sql="SELECT name FROM artists WHERE artist_id=".esc($artist);
$res=sql($sql);
if(num($res)){
$row=row($res);
$name=$row['name'];
}else{
die("artist not found");
}
print("<h1>".htmlspecialch
$artist_styles=artist_styl
}else{
print("<h1>New artist</h1>");
}
print("<div style=\"color:green\" id=msg>");
if(isset($_POST['save'])){
print("Your changes were saved!");
}else{
print("Make your changes then click 'save'");
}
print("</div>");
print("<form name=f method=POST action=\".\">");
print("<input type=hidden name=artist value=\"".htmlspecialchars
print("<input name=\"name\" value=\"".htmlspecialchars
$sql="SELECT style_id,name FROM styles ORDER BY name";
$res=sql($sql);
while($row=row($res)){
print("<input type=checkbox name=\"styles[]\"");
if(in_array($row['style_id
print(" checked");
}
print(" value=\"".htmlspecialchars
print(" ".htmlspecialchars($row['n
}
print("<input type=submit name=save value=save>");
print("<input type=button name=cancel value=\"back to list\" onclick=\"location='.'\">"
print("</form>");
print("<script>formstatus(
if(isset($_POST['save'])){
print("<script>document.fo
}
}
function save_artist(){
$id=$_POST['artist'];
if(!$_POST['name']){
die("Artist name not entered");
}
if($id){
$sql="UPDATE artists SET name=".esc($_POST['name'])
$res=sql($sql);
}else{
$sql="INSERT INTO artists(name) VALUES(".esc($_POST['name'
$res=sql($sql);
$id=insid();
}
if(isset($_POST['styles'])
$selected_styles=$_POST['s
}else{
$selected_styles=array();
}
$artist_styles=artist_styl
$sql="SELECT style_id FROM styles ORDER BY name";
$res=sql($sql);
while($row=row($res)){
$current_style=$row['style
if(
in_array($current_style,$s
&& !in_array($current_style,$
){
add_artist_style($id,$curr
or myerror("Couldn't add style to artist");
}elseif(
!in_array($current_style,$
&& in_array($current_style,$a
){
remove_artist_style($id,$c
or myerror("Couldn't remove style from artist");
}
}
return $id;
}
function artist_styles($artist){
$artist_styles=array();
$sql="SELECT style_id FROM artist_style WHERE artist_id=".esc($artist);
$res=sql($sql);
while($row=row($res)){
$artist_styles[]=$row['sty
}
return $artist_styles;
}
function add_artist_style($artist,$
$sql="INSERT INTO artist_style(artist_id,sty
return sql($sql);
}
function remove_artist_style($artis
$sql="DELETE FROM artist_style WHERE artist_id=".esc($artist)."
return sql($sql);
}
function esc($str){
return "'".mysql_escape_string($s
}
function sql($sql){
global $DB;
return mysql_query($sql,$DB);
}
function row($res){
if($res){
return mysql_fetch_assoc($res);
}else{
return false;
}
}
function num($res){
return mysql_num_rows($res);
}
function insid(){
global $DB;
return mysql_insert_id($DB);
}
function myerror($str){
die($str.": ".mysql_error());
}
Main Topics
Browse All Topics





by: gicutza_cjPosted on 2004-09-29 at 23:54:17ID: 12187506
yes, you need an "if" statement
one note, though: you don't transmit the names ($row_sql['name']) as values for <option>, but use the identifiers instead
So:
first, assume we are on the "style" page. We need to extract the information for the item which has to be displayed:
$style_identifier = $_GET[ "theID" ]; // comes from a previous page
$sql_page = "select * from style where style_id='" . $style_identifier . "'"; // we name it *_page so that we know this is the "current" item,
// the one we need to show on this page
$query_page = mysql_query( $sql_page ) or die( mysql_error() );
$result_page = mysql_fetch_array( $result_page );
<td bgcolor="#CAE1E9" class="medium">
<select name="genre[]" size="20" multiple>
<?php
while( $row_sql = mysql_fetch_assoc( $sql ) ){
?>
<!-- ||| down this line is my insertion point -->
<option value="<?php echo $row_sql['style_id'];?>" <?php if( $row_sql['id'] == $result_page[ 'style_id' ] ){ echo " selected"; } ?>>
<?php echo $row_sql['name']?>
</option>
<?php
}
$rows = mysql_num_rows($sql);
if($rows > 0) {
mysql_data_seek($sql, 0);
$row_sql = mysql_fetch_assoc($sql);
}
?>
</select>
</td>
Georgiana