Hey,

met volgende routine haal ik form data uit een form en wil die dan in de antwoordentabel opslaan, de controlesql wordt eerst uitgevoerd om te zien of dit record als bestaat, indien wel of niet dan word de juiste insert of update query uitgevoerd.

Ik doe nog een echo om de SQL query te cheken, echter krijg ik geen foutmeldingen maat er wordt niets in de database gestopt...

De routine:
<?

// Vragenlijst stuff

$aantalVragen = '24';

for ($i=1;$i<=$aantalVragen;$i++){ 
	
	$vraagInhoudNL = addslashes ($_POST['vraagNL'.$i]);
	$vraagInhoudFR = addslashes ($_POST['vraagFR'.$i]);
	
	$controleSQL 		= "SELECT * from webcms_vragenlijsten_antwoorden WHERE memberId=$id AND vraagId='$i'";
	$controleResult = mysql_query("$controleSQL");
	$SaveControle 	= mysql_fetch_row($controleResult);
	
	if ($SaveControle<1) {
	
		$SQL2 = "INSERT INTO webcms_vragenlijsten_antwoorden (memberId,vraagId,antwoordNL,antwoordFR) 
								VALUES ('$id','$i','$vraagInhoudNL','$vraagInhoudFR')";	
	
	} else {
		$SQL2 = "UPDATE webcms_vragenlijsten_antwoorden SET 
								antwoordNL = '$vraagInhoudNL',antwoordFR = '$vraagInhoudFR' WHERE memberId='".$id."' AND vraagId='".$i."'";
	} 
	echo 'SQL : '.$SQL2.'<br>';
	
	$sql_result = mysql_query ("$SQL2");
}


mysql_close($dbconnect);


?>

Dit stuk ontbreekt:
<?php
if($controleResult){ // query is gelukt
// doe iets
}
else { // query mislukt
echo mysql_error();
}
?>
En zo zul je alle queries moeten controleren.

Tip: Geef het resultaat van een query altijd de naam $result. Dan kun je daar nooit mee de mist in gaan. $controleResult is dan dus niet zo handig.
Ten eerste mis ik een:


<?php
error_reporting(E_ALL);
?>


Ten tweede moet je variabelen buiten de quote's laten:


<?php
if ($SaveControle<1) {
    
        $SQL2 = "INSERT INTO webcms_vragenlijsten_antwoorden (memberId,vraagId,antwoordNL,antwoordFR) 
                                VALUES ('$id','$i','$vraagInhoudNL','$vraagInhoudFR')";    
    
    } else {
        $SQL2 = "UPDATE webcms_vragenlijsten_antwoorden SET 
                                antwoordNL = '$vraagInhoudNL',antwoordFR = '$vraagInhoudFR' WHERE memberId='".$id."' AND vraagId='".$i."'";
    } 
?>


word


<?php
if ($SaveControle<1) {
    
        $SQL2 = "INSERT INTO webcms_vragenlijsten_antwoorden (memberId,vraagId,antwoordNL,antwoordFR) 
                                VALUES ('".$id." ','" .$i."','" .$vraagInhoudNL."','" .$vraagInhoudFR."')";    
    
    } else {
        $SQL2 = "UPDATE webcms_vragenlijsten_antwoorden SET 
                                antwoordNL = '".$vraagInhoudNL."',antwoordFR = '" .$vraagInhoudFR."' WHERE memberId='".$id."' AND vraagId='".$i."'";
    } 
?>
aha nu krijg ik tenminste fouterrors te zien .... ff doorploeteren :) bedankt Frank !
heb de code wat aangepast volgens wat jullie voorstelden:

<?

// Vragenlijst stuff

$aantalVragen = '24';

for ($i=1;$i<=$aantalVragen;$i++){ 
	
	$vraagInhoudNL = addslashes ($_POST['vraagNL'.$i]);
	$vraagInhoudFR = addslashes ($_POST['vraagFR'.$i]);
	
	$controleSQL 	= "SELECT * from webcms_vragenlijsten_antwoorden WHERE memberId=$id AND vraagId='$i'";
	$result 			= mysql_query("$controleSQL");
	
	if($result) {

		$SQL2 = "UPDATE webcms_vragenlijsten_antwoorden SET 
                                antwoordNL = '".$vraagInhoudNL."',antwoordFR = '" .$vraagInhoudFR."' WHERE memberId='".$id."' AND vraagId='".$i."'";

	} else { 

		$SQL2 = "INSERT INTO webcms_vragenlijsten_antwoorden (memberId,vraagId,antwoordNL,antwoordFR) 
                                VALUES ('".$id." ','" .$i."','" .$vraagInhoudNL."','" .$vraagInhoudFR."')";  

	}
	
	
	echo 'SQL : '.$SQL2.'<br>';
	
	$result = mysql_query ("$SQL2");
	if($result) {

	} else { 
		echo mysql_error();
	}
}


?>


enkel krijg ik volgend error:

$SQL2 output:

UPDATE webcms_vragenlijsten_antwoorden SET antwoordNL = 'Ja',antwoordFR = 'Oui' WHERE memberId=''44'' AND vraagId='1'


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '44'' AND vraagId='1'' at line 2
hmm nu ik dit hier paste zie ik daar geen dubbele quotes : memberId=''44'' ff zoeken waar dat vandaan komt
Er staat nu heel leuk het mini scriptje van Frank. Maar in de eerst if moet je dus iets uitvoeren. Je kunt het beter zo doen:


<?php
$result = mysql_query($SQL2) OR DIE(mysql_error());
?>


Daarnaast had je de string $SQL2 in de mysql_query(); tussen quote's staan. Variabelen horen niet tussen quote's!

Ook klopt dit stuk nog steeds niet:


<?php
    $controleSQL     = "SELECT * from webcms_vragenlijsten_antwoorden WHERE memberId=$id AND vraagId='$i'";
    $result             = mysql_query("$controleSQL");
?>


Dat moet:


<?php
    $controleSQL     = "SELECT * from webcms_vragenlijsten_antwoorden WHERE memberId = ".$id." AND vraagId = ".$i;
    $result             = mysql_query($controleSQL) OR DIE(mysql_error());
?>


worden.

Daarnaast hoeven integers niet tussen eenmalige aanhalingstekens (') in je SQL. Dat moet je dus ook nog even aanpassen in je gehele script.
bedankt voor alle tips, probleem met het script was hoofdzakelijk dat de inhoud van $id niet enkel een cijfer was maar er stonden nug quotes erin ook dus $id was '3' ipv 3

Reageren