Avatar billede matz Nybegynder
18. januar 2007 - 21:31 Der er 11 kommentarer og
1 løsning

lav et tjek i databasen

Jeg skal lave et tjek i databasen, som skal tjekke om der allerede findes en post med dato og tid til en bestilling - Jeg kan bare ikke få det til at virke.

Min kode:

if($_POST['op'] == "ds"){

$tjek = mysql_query("SELECT * FROM bestilling WHERE dato = '".$time."'".$tid."'") or die (mysql_error());
$antal = mysql_num_rows($tjek);
if($antal >=1){
    echo "<div align=\"center\"><h4>Der er allerede lavet en plan for: DATO: <b>".$time."</b>, MÅNED: <b>". $tid ."</b></b></h4></div>";
    exit;
}else{

if (isset($_POST['Submit']) && !empty($_POST["navn"]) && !empty($_POST["tlf"]) && !empty($_POST["email"]) && !empty($_POST["tid"])) {

$sql = "INSERT INTO bestilling (`dato`,`navn`,`tlf`,`email`,`tid`) VALUES ('".$time."','$navn','$tlf','$email','$tid')";
//echo $sql."<br>";
mysql_query($sql) or die(mysql_error());
}

Det skal liges sige at i den første sql-sætning har jeg ikke en variabel som hedder "$tid" - men jeg kan ikke finde ud af hvad der skal stå der.
Avatar billede intenz Novice
19. januar 2007 - 09:19 #1
Det er bare den første sætning der giver problemer?
Prøv at ændre:
$tjek = mysql_query("SELECT * FROM bestilling WHERE dato = '".$time."'".$tid."'") or die (mysql_error());

til:
$tjek = mysql_query("SELECT * FROM bestilling WHERE dato = '".$time."' && tid = '".$tid."'") or die (mysql_error());
Avatar billede matz Nybegynder
19. januar 2007 - 09:51 #2
Parse error: parse error, unexpected $
Avatar billede intenz Novice
19. januar 2007 - 10:17 #3
Er du sikker på det er den linje (du havde ikke fejlen før du rettede det jeg skrev)?
Ellers prøv at ændre den til:
$tjek = mysql_query("SELECT * FROM bestilling WHERE dato = '$time' && tid = '$tid'") or die (mysql_error());

Det burde ikke betyde noget, men prøv.
Avatar billede matz Nybegynder
19. januar 2007 - 10:25 #4
Den ændrede intet stadig samme fejl. Og det er stadig den samme fejl jeg får som da jeg oprettede spørgsmålet her.
Avatar billede sw_red_6 Nybegynder
19. januar 2007 - 10:29 #5
er der et linie nummer tilknyttet den fejl og hvad står der på de 5 linier før og efter?
Avatar billede intenz Novice
19. januar 2007 - 10:39 #6
Nåå, men den fejl havde du ikke skrevet i spørgsmålet :)
Fejlen kan ligge overalt i det script. Som sw_red_6 skrev, skal vi så vide hvilken linje det står i og du skal skrive den kode der er ved den linje. (hvis der er andet end den kode du skrev i spørgsmålet i scriptet)
Avatar billede matz Nybegynder
19. januar 2007 - 10:40 #7
I kan få hele min kode her, og den melder fejl på den sidste linje i filen - hvilket jo ikke kan passe:

<?php

include('connect.php');

if($_POST['op'] == "ds"){

$tjek = mysql_query("SELECT * FROM bestilling WHERE dato = '$time' && tid = '$tid'") or die (mysql_error());
$antal = mysql_num_rows($tjek);
if($antal >=1){
    echo "Der sker noget!";

if (isset($_POST['Submit']) && !empty($_POST["navn"]) && !empty($_POST["tlf"]) && !empty($_POST["email"]) && !empty($_POST["tid"])) {

$sql = "INSERT INTO bestilling (`dato`,`navn`,`tlf`,`email`,`tid`) VALUES ('".$time."','$navn','$tlf','$email','$tid')";
//echo $sql."<br>";
mysql_query($sql) or die(mysql_error());
}

if($_GET['time'] != "") {
  if($_GET['retning'] == "tilbage") {
    $time = strtotime("-1 day", $_GET['time']);
  } else if($_GET['retning'] == "frem") {
    $time = strtotime("+1 day", $_GET['time']);
  } else {
    $time = $_GET['time'];
  }
} else {
  $time = time();
}
//Set locale til dansk
setlocale(LC_ALL, 'danish');

//Output: til tid
echo ucwords(strftime("%A %e %B %Y", $time)."<br>");


echo('<a href="?page=bestil&time='.$time.'&retning=tilbage">Tilbage</a> - <a href="?page=bestil&time='.$time.'&retning=frem">Frem</a>');
?>
<br /><br />
<?php

if (isset($_POST['Submit']) && empty($_POST["navn"]) )
    {
        $message1 = "<font size=1 face=Verdana color=#FF0000><b>1. Skriv dit navn.</b></font><br>";
    echo $message1;
    //die;
    }
   
    if (isset($_POST['Submit']) && empty($_POST["tlf"]) )
    {
        $message2 = "<font size=1 face=Verdana color=#FF0000><b>2. Skriv dit telefonnr.</b></font><br>";
    echo $message2;
    //die;
    }
    if (isset($_POST['Submit']) && empty($_POST["email"]) )
    {
        $message3 = "<font size=1 face=Verdana color=#FF0000><b>3. Skriv din E-mail.</b></font><br>";
    echo $message3;
    //die;
    }
    if (isset($_POST['Submit']) && empty($_POST["tid"]) )
    {
        $message4 = "<font size=1 face=Verdana color=#FF0000><b>4. Vælg et tidspunkt for aftale.</b></font>";
    echo $message4;
    //die;
    }
?>

<form action="" method="post" enctype="multipart/form-data" name="upload_form">
    <input type="hidden" name="op" value="ds" />
<table class="table" width="400" border="0">
  <tr>
   
    <td width="399" valign="top">
      <table class="table" width="300" border="0">
      <tr>
        <td class="table" width="90" valign="top">kl.12 <input name="tid" type="radio" value="12" />
          <br />
          kl.13
          <input name="tid" type="radio" value="13" />
          <br />
          kl.14
          <input name="tid" type="radio" value="14" />
          <br />
          kl.15
          <input name="tid" type="radio" value="15" />
          <br />
          kl.16
          <input name="tid" type="radio" value="16" /></td>
        <td width="200" valign="top">kl.17
          <input name="tid" type="radio" value="17" />
          <br />
          kl.18
          <input name="tid" type="radio" value="18" />
          <br />
          kl.19
          <input name="tid" type="radio" value="19" />
          <br />
          kl.20
          <input name="tid" type="radio" value="20" />
          <br />
          kl.21
          <input name="tid" type="radio" value="21" /></td>
      </tr>
    </table>
    <br />
    <table width="324" border="0">
  <tr>
    <td>Navn:</td>
    <td><input type="text" name="navn" maxlength="" value="" /></td>
  </tr>
  <tr>
    <td>Tlf:</td>
    <td><input type="text" name="tlf" maxlength="8" value="" /></td>
  </tr>
  <tr>
    <td>E-mail:</td>
    <td><input type="text" name="email" maxlength="" value="" /></td>
  </tr>
  <tr>
    <td colspan="2"><div align="right">
          <input type="submit" name="Submit" value="Send" />
        </div></td>
  </tr>
</table>    </td>
  </tr>
</table>
</form>

</body>
</html>
Avatar billede intenz Novice
19. januar 2007 - 10:44 #8
Du har glemt at lukke:
if($_POST['op'] == "ds") {

Derfor skriver den fejl til sidste, fordi den leder efter den afsluttende }
Avatar billede intenz Novice
19. januar 2007 - 10:45 #9
Du har vist også glemt at lukke:
if($antal >=1) {
Avatar billede matz Nybegynder
19. januar 2007 - 10:58 #10
ja det virker nu...men den gemmer stadig den post som den ikke skal, da der allerede findes en.

kan man bruge en exit eller hvordan den nu skrives korrekt i php for at stoppe den så den ikke gemmer en ny post?
Avatar billede intenz Novice
19. januar 2007 - 11:10 #11
Den kode du har lavet er burde være nok:

if($_POST['op'] == "ds"){

$tjek = mysql_query("SELECT * FROM bestilling WHERE dato = '".$time."' && tid = '".$tid."'") or die (mysql_error());
$antal = mysql_num_rows($tjek);
if($antal >=1){
    echo "<div align=\"center\"><h4>Der er allerede lavet en plan for: DATO: <b>".$time."</b>, MÅNED: <b>". $tid ."</b></b></h4></div>";
    exit;
}else{

if (isset($_POST['Submit']) && !empty($_POST["navn"]) && !empty($_POST["tlf"]) && !empty($_POST["email"]) && !empty($_POST["tid"])) {

$sql = "INSERT INTO bestilling (`dato`,`navn`,`tlf`,`email`,`tid`) VALUES ('".$time."','$navn','$tlf','$email','$tid')";
//echo $sql."<br>";
mysql_query($sql) or die(mysql_error());
}


Du kan evt. prøve at indsætte dette efter $antal = mysql_num_rows($tjek);
print "SQL: SELECT * FROM bestilling WHERE dato = '$time' && tid = '$tid'<br>Fundet: $antal";

Så er det måske mere synligt hvad der egentlig sker
Avatar billede matz Nybegynder
19. januar 2007 - 11:49 #12
Tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester