Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]Problem z id
Forum PHP.pl > Forum > Przedszkole
Adrian1207
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?
skowron-line
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??
Adrian1207
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
Arteline
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
bartg
W tabeli kolumna id nie ma ustawionej opcji AUTO INCREMENT, możliwe także że nie jest kluczem. Najpierw trzeba stworzyć klucz uniq
Arteline
w polu recordid mam włączone auto_increment. Niestety nie wiem co to jest uniq
Będę musiała gdzieś poszukać wiedzy:(
bartg
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
Arteline
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??
bartg
  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. ?>
Arteline
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.?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.