Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php/mysql]Problem z id
Adrian1207
post 22.02.2007, 18:18:27
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

Ostrzeżenie: (0%)
-----


Witam. Daję tutaj skrypt który nie działa poprawnie, jeszcze przed wysłaniem formularza jest pokazany błąd. Proszę bardzo napisać mi co tu jest źle? Wcześniej kod chociaż w małym stopniu działał, dodawał 2 rekordy, jeden pusty a jeden dobry, ale nie dodawał id prze co muszę wprowadzać te zmiany.
  1. <?
  2. include('../header.php');
  3. echo '<center><form action="#" method="POST">';
  4. echo 'Tytuł:<br><input type="text" name="company" value="" size="20"><br>';
  5. echo 'Krótki opis:<br><textarea name="location" cols="60" rows="8"></textarea><br>';
  6. echo 'Długi opis:<br><textarea name="description" cols="60" rows="30"></textarea><br>';
  7. echo 'Screeny:<br><textarea name="contact" cols="60" rows="8"></textarea><br>';
  8. echo 'Strona www:<br><INPUT type="text" name="url" value="" size="20"><br>';
  9. echo '<input type="hidden" name="newjobid" value="$newjobid" size="20">';
  10. echo '<input type="submit" value="Dodaj"></form></center>';
  11. require('config.php');
  12. $month=date('m');
  13. $day=date('d');
  14. $year=date('y');
  15. $newdate='$month/$day/$year';
  16. $nick=$_SESSION['nick'];
  17. $company=$_POST['company'];
  18. $location=$_POST['location'];
  19. $description=$_POST['description'];
  20. $contact=$_POST['contact'];
  21. $mail=$_COOKIE['mail'];
  22. $url=$_POST['url'];
  23. $dbLink = @mysql_connect( $dbasehost,$dbaseuser, $dbasepassword );
  24. mysql_select_db( $dbase );
  25. $pobid = 'SELECT MAX(recordid) FROM jobs';
  26. $wysylka = mysql_query ($pobid, $dbLink) or die ('Problem');
  27.  $newjobid = mysql_fetch_array($wysylka);
  28. $newjobid += 1;
  29. mysql_close($dbLink);
  30. $dbLink = @mysql_connect( $dbasehost,$dbaseuser, $dbasepassword );
  31. mysql_select_db( $dbase );
  32.  $sql = 'INSERT INTO jobs (jobid, title, company, location, description, contact, email, url, publishd
    ate)'
    ;
  33.  $sql .= "VALUES ('$newjobid', '$nick','$company','$location', '$description','$contact','$mail','$url','$newdate')";
  34.  $result = mysql_query ($sql,$dbLink) or die( 'Problem');
  35. mysql_close($dbLink);
  36. $dbLink = @mysql_connect( $dbasehost,$dbaseuser, $dbasepassword );
  37. mysql_select_db( $dbase );
  38.  $mysql="UPDATE jobnum SET recordid ='$newjobid' WHERE recordid=$oldid";
  39.  $rezult = mysql_query ($mysql,$dbLink) or die( 'Problem');
  40. mysql_close($dbLink);
  41. include('../footer.php');?>


a błąd jest taki:

Kod
Fatal error: Unsupported operand types in /srv/www/htdocs/web81/html/jobposter/dodaj.php on line 28


Może mi ktoś pomóc? Wiem że dziwnie się kod pokolorował(to przez cudzysłowia), ale jak poprawie to mi wywala błędy składni, a jak nie poprawie to footer się nie wyświetla:/. Jaka jest przyczyna?

Ten post edytował Adrian1207 22.02.2007, 18:20:05
Go to the top of the page
+Quote Post
skowron-line
post 22.02.2007, 19:15:06
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


jezeli w bazie masz pole id i jest ono ustawione na auto_increment to wogole nie wpisuj tego pola na liste w insercie bo ono samo sie doda
zamiast tego
  1. <?php
  2. $newjobid += 1;
  3. ?>


daj tak
  1. <?php
  2. $newjobid = $newjobid +1;
  3. ?>


edit: i po co 3 razy nawiazujesz i zrywasz polaczenie z baza??

Ten post edytował skowron-line 22.02.2007, 19:17:12


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Adrian1207
post 22.02.2007, 19:51:36
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

Ostrzeżenie: (0%)
-----


Wykonując Twoja polecenia wróciłem do starego skryptu dry.gif czyli dodaje2 rekordy o id $newjobid i zamiast zapisywać do tej zmiennej liczbę to ono czyta ją jak wyraz blinksmiley.gif ale teraz jeszcze loginu nie wyświetla tongue.gif Teraz skrypt jest taki:
  1. <?
  2. include('../header.php');
  3. echo '<center><form action="#" method="POST">';
  4. echo 'Tytuł:<br><input type="text" name="company" value="" size="20"><br>';
  5. echo 'Krótki opis:<br><textarea name="location" cols="60" rows="8"></textarea><br>';
  6. echo 'Długi opis:<br><textarea name="description" cols="60" rows="30"></textarea><br>';
  7. echo 'Screeny:<br><textarea name="contact" cols="60" rows="8"></textarea><br>';
  8. echo 'Strona www:<br><INPUT type="text" name="url" value="" size="20"><br>';
  9. echo '<input type="hidden" name="newjobid" value="$newjobid" size="20">';
  10. echo '<input type="submit" value="Dodaj"></form></center>';
  11. require('config.php');
  12. $month=date('m');
  13. $day=date('d');
  14. $year=date('y');
  15. $newdate="$month/$day/$year";
  16. $nick=$_SESSION['nick'];
  17. $company=$_POST['company'];
  18. $location=$_POST['location'];
  19. $description=$_POST['description'];
  20. $contact=$_POST['contact'];
  21. $mail=$_COOKIE['mail'];
  22. $url=$_POST['url'];
  23. $dbLink = @mysql_connect( $dbasehost,$dbaseuser, $dbasepassword );
  24. mysql_select_db( $dbase );
  25.  $sql = "INSERT INTO jobs (jobid, title, company, location, description, contact, email, url, publishd
    ate)"
    ;
  26.  $sql .= "VALUES ("$newjobid", "$nick","$company","$location", "$description","$contact","$mail","$url","$newdate")";
  27.  $result = mysql_query ($sql,$dbLink) or die( 'Problem');
  28. $oldnum = $newjobid -1;
  29.  $mysql="UPDATE jobnum SET recordid ="$newjobid" WHERE recordid=$oldnum";
  30.  $rezult = mysql_query ($mysql,$dbLink) or die( 'Problem');
  31. mysql_close($dbLink);
  32. include('../footer.php');?>


Dalej jest źle? Tak mam to w bazie co pisałeś tongue.gif
Go to the top of the page
+Quote Post
Arteline
post 11.03.2008, 17:22:56
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


witam,
chciałem uruchomić skrypt jobposteri puki walczyłam na krasnalu z bazą3 id działał
Gdy już wszystko sobie potestowałam postanowiłam zainstalować to wszystko na własciwym serwerze ( vel.pl) z bazą4
I tu zaczęły się problemy.
Niestety gdy chcę dodać ogłoszenie wszystkie mają id 1
Wyświetla mi się we wszystkich ogłoszeniach ta sama treść:(
Co może być powodem??
HEEELP
Go to the top of the page
+Quote Post
bartg
post 11.03.2008, 17:56:06
Post #5





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 4.07.2007
Skąd: Berlin

Ostrzeżenie: (0%)
-----


W tabeli kolumna id nie ma ustawionej opcji AUTO INCREMENT, możliwe także że nie jest kluczem. Najpierw trzeba stworzyć klucz uniq


--------------------
Go to the top of the page
+Quote Post
Arteline
post 11.03.2008, 18:49:53
Post #6





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


w polu recordid mam włączone auto_increment. Niestety nie wiem co to jest uniq
Będę musiała gdzieś poszukać wiedzy:(
Go to the top of the page
+Quote Post
bartg
post 11.03.2008, 18:53:17
Post #7





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 4.07.2007
Skąd: Berlin

Ostrzeżenie: (0%)
-----


W phpmyadmin masz pod strukturą wypisane klucze. id musi byc unikalne, czyli posiadać klucz uniq(alny) aby można było dodac tylko jedno takie id.

Bład jest w kodzie:

  1. \"$newjobid\"

Zamień na
  1. NULL

Dlaczego? Auto increment sam zwiększa id przedmiotu a ty za każdym razem wrzucasz null. Gdyby był klucz uniq zapytanie nie powiodło by się winksmiley.jpg

PS Aby zdobyc $oldnum musisz przed Insertem pobrać $pobid = 'SELECT MAX(recordid) FROM jobs';

BTW Mam pytanie: Za co odpowiada tabela jobnum? Bo patrząc po zapytani można wyrzucić WHERE recordid=$oldnum i nadal powinno być to samo

Ten post edytował bartg 11.03.2008, 18:58:25


--------------------
Go to the top of the page
+Quote Post
Arteline
post 11.03.2008, 19:14:34
Post #8





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Chyba zgłupiałam już całkiem:( z oscomersem jakoś dałam rade a to mnie rozwaliło:(

JUż nie wiem gdzie co mam zmieniać:(
Teraz te id wrzucałam ręcznie bezpośrednio w bazie danych.

Oddam bazę w dobre ręce - może ktos pomoże??
Go to the top of the page
+Quote Post
bartg
post 11.03.2008, 21:22:25
Post #9





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 4.07.2007
Skąd: Berlin

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $sql = "INSERT INTO jobs (jobid, title, company, location, description, contact, email, url, publishd
    ate)"
    ;
  3.  $sql .= "VALUES (\"$newjobid\"\"$nick\",\"$company\",\"$location\"\"$description\",\"$contact\",\"$mail\",\"$url\",\"$newdate\")";
  4.  $result = mysql_query ($sql,$dbLink) or die( 'Problem');
  5. $oldnum = $newjobid -1;
  6.  $mysql="UPDATE jobnum SET recordid =\"$newjobid\" WHERE recordid=$oldnum";
  7. ?>

Zamień na
  1. <?php
  2. $sql = "INSERT INTO jobs (jobid, title, company, location, description, contact, email, url, publishd
    ate)"
    ;
  3.  $sql .= "VALUES (NULL, \"$nick\",\"$company\",\"$location\"\"$description\",\"$contact\",\"$mail\",\"$url\",\"$newdate\")";
  4.  $result = mysql_query ($sql,$dbLink) or die( 'Problem');
  5.  $mysql="UPDATE jobnum SET recordid =\"$newjobid\";
  6. ?>


--------------------
Go to the top of the page
+Quote Post
Arteline
post 11.03.2008, 21:54:56
Post #10





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


czy ta zmiana ma nastąpiś w add.php ?
jeśli tak to wywala błąd po akceptacji nowego wpisu Couldn't execute add dbase

A może w bazie również jobid ma być ustawiony z auto_increment.?

Ten post edytował Arteline 11.03.2008, 21:58:47
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:48