2009-08-11 7 views
0

J'ai 3 tables (acteurs, catégories, actor_cats) dans mon db. J'utilise un formulaire pour insérer de nouvelles informations dans la base de données (mysql). La plupart des informations vont dans la table des acteurs. Mais dans une étiquette "catégories", j'ai un type d'entrée case à cocher, avec 3 champs que je reçois de la table catégories [action (id1), comedy (id2), drama (id3)]. Je veux insérer cette information dans ma table actor_cats. Ce que je veux faire est de créer un nouvel acteur dans la table des acteurs, et aussi d'insérer la sélection de case à cocher (peut-être les 3 options) dans la table actors_cats. Ce tableau comme id acteurs et id catégories, donc ce que je veux serait quelque chose comme ceci:insérer les valeurs de case à cocher dans la table en utilisant php + mysqli

Tableau actor_cats

ligne 1 | acteur (1) | categoriesid (1)

rangée 2 | acteur (1) | categoriesid (2)

comme exemple ...

comment puis-je atteindre cet objectif en utilisant mysqli?

merci d'avance! Je ne peux toujours pas écrire dans la table actor_cats.

C'est ce que je fais:

// Après avoir inséré le nouvel acteur

$jid = $mysql->insert_id; 

if (isset($_POST['cats'])) { 
$cats = $_POST['cats']; 
} else { 
$cats = array(); 
} 
$numCats = 0; 
foreach ($cats as $catID) { 

$cats_sql = "INSERT INTO actor_cats VALUES(?,?)";  
$stmt = $mysql->stmt_init(); 

if ($stmt->prepare($cats_sql)) { 
$stmt->bind_param('ii', $jid, $catID); 
$stmt->execute(); 

    if ($ok) { 
     $numCats = $numCats + 1; 
    } else { 
     echo "<p>Error inserting $catID: " . 
      $mysql->error . '</p>'; 

    } 
    } 

<?php 
else: 
$cats = 'SELECT id, type FROM categories'; 
$stmt = $mysql->prepare($cats); 
$stmt->execute(); 
$stmt->bind_result($catid,$cattype); 

>

Et dans ma forme dans la zone de case à cocher, je vais chercher ma table de catégories et obtenir les valeurs? , donc quand je soumets le formulaire, ma sélection serait insérée

//excerpt from form 
<label>Category:</label><br /> 
<?php while($row = $stmt->fetch()) : ?> 
    <input type="checkbox" name="cats" value="<?php echo $catid; ?>" /><?php echo $cattype; ?> 
<br /><br /> <?php endwhile; ?> 

Espérons que c'est clair! Merci à tous les gars pour toute l'aide!

+0

Merci pour toute l'aide! J'ai réussi à le faire fonctionner! À la votre! –

Répondre

0

Vous attribuez tous les attributs aux mêmes cases et définissez l'attribut de valeur sur l'ID de la catégorie. Ensuite, vous insérez l'acteur et obtenez son identifiant avec $mysqli->insert_id. Ensuite, vous exécutez une autre requête pour insérer une ligne dans la table actor_cats avec l'identifiant de l'acteur et l'identifiant de la catégorie.

+0

'$ mysqli-> insert_id' est une propriété, pas une méthode. – RaYell

+0

Je l'ai réparé. :-) – eWolf

0
$mysqli = new mysqli("host", "user", "password", "db"); 

$mysqli->query("INSERT INTO actors ..."); // your query to insert new actor 

$id = $mysqli->insert_id; 

// replace 1 with the category id 
$mysqli->query("INSERT INTO actor_cats (actor_id, cat_id) VALUES ($id, 1)"); 
Questions connexes