Ik ben met een script bezig maar ik kom er echt even niet uit.
Ik heb een formulier om nieuwe record toe te voegen in tabel1. Done!

Nou vraag ik in het formulier ook gegevens op uit andere tabellen, dat gaat ook goed, en ook komt er while in voor zodat er meerdere items opgevraagd worden. Dit gaat ook goed!

Nou moet dit alles toegevoegd worden aan twee tabellen. De eerste tabel is een koekie en doe ik gewoon via insert into. Maar nou wil ik dat de waardes die in de while staan in tabel2 komen te staan met op elke regel het nieuwe id van tabel1

Dit heb ik tot nu toe:


      <?php 
if($_POST['submit']) {
    include("config.php"); 
    mysql_connect($database[host],$database[username],$database[password]); 
    mysql_select_db($database[dbnaam]); 
    
    $query = "INSERT INTO tabel1 (naam, klas, leeftijd) VALUES ('".$_POST['naam']."', '".$_POST['klas']."', '".$_POST['leeftijd']."')";  
      
    mysql_query($query) or die ("tabel1 error"); 
    $insert_id = mysql_insert_id();
    $tekst = nl2br($tekst);

    echo "Nieuwe idnummer:" .$insert_id ." "; 
	 
     $query = "INSERT INTO tabel2 (id_tabel1, boek, schrijver) VALUES ('" .$insert_id ."', '".$_POST['boek']."', '".$_POST['schrijver']."')";  
      
    $resultaat = mysql_query($query) or die ("tabel2 error"); 
    while ($obj = mysql_fetch_object($resultaat)){ 
    
    echo "Klaaaaaaar";     
}
}else{ 

include("config.php");
    mysql_connect($database[localhost],$database[username],$database[password]); 
    mysql_select_db($database[dbnaam]); 

    $mysql = "SELECT * FROM tabel3 WHERE naam = '".$_GET['naam']."'";
    $sql = mysql_query($mysql)or die("Errrrorrr");  
     $tekst = nl2br($tekst);
    ?></br>
      <form action="<?php echo $PHP_SELF; ?>" method="post" onSubmit="return submitForm();">
        <?php echo $_GET['naam'];?><br>
                <input name="klas" value="<?php echo $obj[klas];?>" size="50"><br>
                <input name="leeftijd"  value="<?php echo $obj[leeftijd];?>" size="50"><br>
<?
while ($obj = mysql_fetch_array($sql)) {

echo 'Boek: '.$obj[boek].' - Schrijver: '.$obj[schrijver].'<br>';?>
 <input name="boek" value="<?php echo $obj[boek];?>" size="25">
 <input name="schrijver"  value="<?php echo $obj[schrijver];?>" size="25"><br>

<?
}
?><br><input type="submit" name="submit" value="naam/boeken toevoegen">
            </form>
             <?php 
} 
?>

Waar mis ik iets of doe ik iets fout?
Krijg je nog ergens foutmeldingen?
Uh ja natuurlijk, vergeet ik dat erbij te zetten:


Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/wws/domains/wooningwebsolutions.nl/public_html/kk/print/test.php on line 18


Maar ik had ook ook wel gedacht dat op die regel de fout zat!
Hij zet wel het laatste boek van de loop in de database... dus insert into de database werkt wel alleen hij doet er maar 1 ipv 3 (of 4, of 5, of 6)
Maak eens dit van je eerste query:

<?php
	$query = "
		INSERT INTO tabel2
		(
			id_tabel1,
			boek,
			schrijver
		)
		VALUES
		(
			" . $insert_id . ",
			'" . mysql_real_escape_string ($_POST['boek']) . "',
			'" . mysql_real_escape_string ($_POST['schrijver']) . "'
		)
		";  
?>
De foutmelding is weg nu, maar in tabel2 verschijnt nog steeds alleen het laatste boek uit de while....

Deze code heb ik nu

<?
$query = "INSERT INTO tabel1 (naam, klas, leeftijd) VALUES ('".$_POST['naam']."', '".$_POST['klas']."', '". $_POST['leeftijd']."')";  
      
    mysql_query($query) or die ("tabel1 error"); 
    $insert_id = mysql_insert_id();
    echo "Nieuwe idnummer:" .$insert_id ." "; 
	
	$query = "INSERT INTO tabel2 (id_tabel1, boek, schrijver)     VALUES(" . $insert_id . ",'" . mysql_real_escape_string ($_POST 'boek']) . "', '" . mysql_real_escape_string ($_POST['schrijver']) . "')";  

    mysql_query($query) or die ("tabel2 error"); 
    echo "Klaaaaaaar";   
?>  


Jan: je zei dat ik van de eerste query dat moest maken, maar dan werkte er niets meer. Lijkt me ook logisch want je wil een id-nummer ophalen die nog niet is aangemaakt. Dus het lijkt me logischer om de query van tabel2 als tweede te zetten. Of zit ik nu in mijn hoofd te kronkelen!?!

Reageren