Het volgende script:


<p><strong>Nummer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bericht</strong></p>
<?
mysql_connect("localhost", "UNAME", "PASS") or die(mysql_error());
mysql_select_db("db_name") or die(mysql_error());
$query = "SELECT * FROM db"; 
	 
$result = mysql_query($query) or die(mysql_error());
// $stringe = "&nbsp;&nbsp;&nbsp;"

while($row = mysql_fetch_array($result)){
// echo $row['number'] ;

$string .= "(" .substr($row['number'], -4). ") " .$row['text']. "<BR>";
echo $string;
}
?>


Blijft echo'en, waardoor je dus dubbele entry's krijgt, hoe kan ik de query stoppen als er geen entry's meer zijn in de database?
En wat staat er op de regel er voor?
Inmiddels wekt het half, Hij insert 50% van de gegevens in de database.:


mysql_query("INSERT INTO sms (date,time,number,text) VALUES('$date','$time','$_GET[sender]','$txtmessage')");


$date en $time wordten in de database geplaatst, maar dit gebeurd niet met de laatste twee variabelen. Enig idee waarom dat zo is?
Jij doet dit:

<?php
mysql_query("INSERT INTO sms (date,time,number,text) VALUES('$date','$time','$_GET[sender]','$txtmessage')");
?>

Maar doe het nou eens zoals het hoort:
<?php

$sql = "
INSERT INTO sms
(
date,
time,
number,
text
)
VALUES
(
'".$date."',
'".$time."',
'".$_GET['sender']."',
'".$txtmessage."'
);
";
mysql_query($sql);

?>

Dus:
variabelen buiten de quotes
$_GET['iets'] met enkele haakjes (!), wat waarschijnlijk jouw fout was.
Liefst een query in een string zetten, dat is makkelijker debuggen (je kan je sql namelijk echo-en).
En normaal inspringen.
Bedankt voor je hulp Eddy. Ik heb de wijzigingen doorgevoerd, maar helaas blijft het resultaat hetzelfde.
echo dan eens $date, $time , $_GET['sender'] en $txtmessage .. om te kijken of er daadwerkelijk iets in zit
Bouw eens een nette foutafhandeling in voor de query's.

Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Inmiddels weer even tijd gehad om weer wat uitbreidingen te doen, de eerdere problemen zijn verholpen, bedankt voor alle hulp. Wat ik nu dus wil, is dat elke PM die verstuurd wordt door dit systeem geteld wordt. Ik heb op het moment dit staan:


$resultmsg = mysql_query("SELECT * FROM status
 WHERE number='".$sender."'") or die(mysql_error());  

$row2 = mysql_fetch_array( $resultmsg );

if (mysql_num_rows($row2['number']) == 1) {
if ($getmsg = mysql_num_rows($row1['messages']) == 1) {
mysql_query("UPDATE status SET messages=messages+1 WHERE number='".$sender."'") or die(mysql_error());  
} 
else {
mysql_query("UPDATE status SET messages=1 WHERE number='".$sender."'") or die(mysql_error());  
}
}
else {
mysql_query("INSERT INTO status (number, messages) VALUES('".$sender."', '1' ) ") or die(mysql_error());  
}


Deze code werkt wel, maar maakt een dubbele entry aan, dus ik heb niet netjes een rij met de gegevens staan, maar twee. Zo dus:


number | messages
tester 1
tester 1


Terwijl ik het dus zo wil hebben:


number | messages
tester 2



Heeft iemand een idee hoe ik dit voor elkaar kan krijgen? De eerste keer tellen gaat goed (als number en messages dus nog geen entry voor tester hebben), maar de tweede keer maakt hij dus gewoon een extra entry aan in de db, wat dus niet de bedoeling is. Alvast bedankt!
SanThe schreef op 12.10.2009 09:32
Bouw eens een nette foutafhandeling in voor de query's.

Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Daar komt niks uit, geen fouten. Het doet gewoon weer hetzelfde :(
Ga eens over deze regels nadenken. Er klopt niets van.

if (mysql_num_rows($row2['number']) == 1) {
if ($getmsg = mysql_num_rows($row1['messages']) == 1) {

Reageren