insert code werkt niet

Status
Niet open voor verdere reacties.

Martijn31

Gebruiker
Lid geworden
6 sep 2009
Berichten
362
Hallo, ik ben bezig om plaatjes toe te kennen aan bepaalde gebruikers. wanneer ik dit op de site wil doen werkt de code niet..
alles werkt zoals het moet maar schrijft niets in de database

Code:
	echo "<h2>plaatje Toevoegen!</h2>";
	echo "<div class='seperator'></div>";
	if(!isset($_SESSION['user'])){
		header('Location: index.php');
		exit();
	}
	if($_SESSION['user']['rank'] < $_CONFIG['permission']['plaatje']['give']){
		logAction($_SESSION['user']['username'], 'plaatje_add', 'DENIED', '');
		header('Location: index.php?p=welcome');
		exit();
	}
	if(isset($_POST['add_plaatje'])){
		$username 	= filter($_POST['username']);
		$plaatje_code = filter($_POST['plaatje_code']);

		$query = mysql_query("SELECT id FROM users WHERE username='".$username."'");
		$row = mysql_fetch_array($query);
		if(mysql_num_rows($query) > 0){
			mysql_query("INSERT INTO users_plaatjes (user_id, plaatje_id) VALUES ('".$row['id']."', '".$plaatje_code."')");
			logAction($_SESSION['user']['username'], 'plaatje_add', 'plaatje Gegeven', $username . ' - ' . $plaatje_code);
			alert("plaatje Gegeven!");
		}else{
			error($username. " bestaat niet!");
		}
	}else{
		?>
			<form method="post">
				<input type="text" placeholder="Naam" name="username" />
				<input type="text" placeholder="plaatje" name="plaatje_code" />
				<input type="submit" name="add_plaatje" value="Geef plaatje!" />
			</form>
		<?php
	}
?>

Dit is de pagina die het zou moeten toevoegen. in de database staat id. dat is een auto increment. maar weet niet hoe ik die in mijn code verwerk.
iemand die even een duwtje kan geven in de goede richting?
bedankt!
 
Laatst bewerkt:
Auto-increment hoef je niet in de code verwerken. MySQL weet prima welke getallen bij moet gebruiken.
Bij een INSERT kan je gewoon een lege string meegeven, of nog beter: Gewoon het bewuste veld helemaal niet meegeven:

Code:
<?php
$sql = "INSERT INTO Guests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
?>

Je kan ook de velden achter je tabelnaam (de haakjes en alles wat er tussen staat) niet mee te geven. Maar dan heb je kans op leuke errors als je een extra veld toevoegt, waardoor het aantal toe te voegen velden niet meer overeen komt.

Verder een goede tip: Stap direct ad van de oude mysql_*****() functies, en gebruik bij voorkeur MySQLi, en bij sterkere voorkeur de MySQLi-OO versie (die ik in mijn voorbeeld uitbeeld).

De oude MySQL-functies welke je nu gebruikt zijn uit PHP 7 verwijderd. Als je hosting nu overstapt op deze versie, dan zal je script niet meer worden uitgevoerd, en zal je een error zien (afhankelijk van je instellingen).

Verder nog een goede tip: Pas altijd foutafhandeling toe op je queries (en dan niet met die() )
 
Bedankt voor de informatie! ik heb zelf wat geprobeerd maar het lijkt erop dat ik er niet zoveel van begrijp.

Kun je een voorbeeld van mijn voorbeeld maken in php 7? of is dat veel werk? ik heb zelf wat geprobeerd maar dit werkt niet echt...
Code:
	echo "<h2>plaatje Toevoegen!</h2>";
	echo "<div class='seperator'></div>";
	if(!isset($_SESSION['user'])){
		header('Location: index.php');
		exit();
	}
	if($_SESSION['user']['rank'] < $_CONFIG['permission']['plaatje']['give']){
		logAction($_SESSION['user']['username'], 'plaatje_add', 'DENIED', '');
		header('Location: index.php?p=welcome');
		exit();
	}
	if(isset($_POST['add_plaatje'])){
		$username 	= filter($_POST['username']);
		$plaatje_code = filter($_POST['plaatje_code']);

		$query = "SELECT id FROM users WHERE username='".$username."'";
        $row = $conn->query($query);
		
		 if ($result=mysqli_query($query > 0))
			 $sql = "INSERT INTO users_plaatjes (user_id, plaatje_id)
VALUES ('".$row['id']."' '".$plaatje_code."' )";
			logAction($_SESSION['user']['username'], 'plaatje_add', 'plaatje Gegeven', $username . ' - ' . $plaatje_code);
			alert("plaatje Gegeven!");
		}else{
			error($username. " bestaat niet!");
		}
	}else{
		?>
			<form method="post">
				<input type="text" placeholder="Naam" name="username" />
				<input type="text" placeholder="plaatje" name="plaatje_code" />
				<input type="submit" name="add_plaatje" value="Geef plaatje!" />
			</form>
		<?php
	}
?>
 
Heb je al je connectie aangepast?
En ik zie nog een oude mysql_query
 
Laatst bewerkt:
Ik snap dus niet zo goed wat er oud is en nieuw mysql num rows etc ook allemaal verouderd? mysqli mag wel toch?
 
Alles is nu MySQLi, dus de oude mysql_****() functies moet je vervangen.
 
maar een voorbeeld van mijn pagina kun je niet geven? in php7?
 
Je bent aardig op weg. Die mysql_***() functies die je moet vervangen is mogelijk het enigste om het PHP7 proof te maken.

Maar loop je ergens op vast dan?
 
mysql num rows leggen ze op w3schools alleen uit met mysqli. verder werkte het script niet en was het eigenlijk niet mijn bedoeling om er php7 van te maken. ik sta er wel open voor. daarom vraag ik een voorbeeld, zodat ik er rustig naar kan kijken. mijn host is op php type instelbaar dus kan ook op de huidige versie ( 5.6) blijven draaien
 
Onthoud wel dat PHP 5.6 niet het eeuwige leven heeft, dus je op de toekomst richten is juist het beste.

Num_rows verwijst naar je query-result.
Code:
$result = $conn->query("SELECT Code, Name FROM Country ORDER BY Name")) {

$count = $result->num_rows;
echo $count;

Hopelijk snap je het nu :)
 
Laatst bewerkt:
Oke, succes!
Als je nog vragen hebt horen we het wel.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan