Para los que sepan PHP....

Os propongo un reto, yo llevo 3 dias y no he conseguido sacar el codigo correcto, mi nivel de php no es muy avanzado, asi que aver si entre todos podeis ayudarme. Os voy a apsar un codigo, k me da el siguiente error:

Bad $rs in GetInsertSQL. Connection or SQL invalid. Try using $connection->debug=true;


Ademas me tiene k insertar informacion en tres tablas de la base de datos (para el foro phpbb), pero en la ultima (phpbb_post_text) no me inserta nada ..... aver si somos capaces de sacar el codigo correcto... aki os dejo el completo que me da error :

if ($_REQUEST['do'] == 'add_news_confirm')
{
   $rs = $db->Execute("SELECT * FROM `sp_news` WHERE `id` = '-1'");
   $record = array(
      'title' => $_REQUEST['title'],
      'author' => $_REQUEST['author'],
      'section' => $_REQUEST['section'],
      'intro' => $_REQUEST['intro'],
      'text' => $_REQUEST['text'],
      'date' => $_REQUEST['date'],
      'newsimage' => $_REQUEST['newsimage']
      );
   $sql = $db->GetInsertSQL($rs, $record);
   $db->Execute($sql);
    $db->Execute("INSERT INTO phpbb_topics (forum_id,topic_title,topic_poster,topic_time,topic_views,topic_replies,topic_status,topic_type,topic_vote) VALUES ('1', '$_REQUEST[title]', '1', '$_REQUEST[date]',0,0,0,0,0)");
         $result1   =  $db->Execute("SELECT MAX(topic_id) as newID FROM phpbb_topics");

      $rs = $db->Execute("SELECT * FROM `phpbb_topics` WHERE `topic_id` = '-1'");
$record = array();
$record['forum_id'] = '1';
$record['topic_title'] = $_REQUEST['title'];
$record['topic_poster'] = '1';
$record['topic_time'] = $_REQUEST['date'];
$record['topic_views'] = '0';
$record['topic_replies'] = '0';
$record['topic_status'] = '0';
$record['topic_type'] = '0';
$record['topic_vote'] = '0';
$sql = $db->GetInsertSQL($rs,$record);
    $db->Execute("INSERT INTO phpbb_posts (topic_id, forum_id, poster_id, post_time) VALUES ('. $topicID .', '1', '1', '$_REQUEST[date]')");
         $result2   =  $db->Execute("SELECT MAX(post_id) as newID FROM phpbb_posts");

      $rs = $db->Execute("SELECT * FROM `phpbb_posts` WHERE `topic_id` = '-1'");
$record = array();
$record['topic_id'] = '. $topicID .';
$record['forum_id'] = '1';
$record['poster_id'] = '1';
$record['post_time'] = $_REQUEST['date'];
$sql = $db->GetInsertSQL($rs,$record);
    $db->Execute("INSERT INTO phpbb_posts_text (post_id, post_subject, post_text) VALUES ('1', '$_REQUEST[title]', '$_REQUEST[intro]')");
      $rs = $db->Execute("SELECT * FROM `phpbb_posts_text` WHERE `topic_id` = '-1'");
$record = array();
$record['post_id'] = 1;
$record['post_subject'] = $_REQUEST['title'];
$record['post_text'] = $_REQUEST['intro'];
$sql = $db->GetInsertSQL($rs,$record);
   SPMessage('Success | News has been successfully added.', 'news.php');
JmL escribió:Os propongo un reto, yo llevo 3 dias y no he conseguido sacar el codigo correcto, mi nivel de php no es muy avanzado, asi que aver si entre todos podeis ayudarme. Os voy a apsar un codigo, k me da el siguiente error:

Bad $rs in GetInsertSQL. Connection or SQL invalid. Try using $connection->debug=true;


Ademas me tiene k insertar informacion en tres tablas de la base de datos (para el foro phpbb), pero en la ultima (phpbb_post_text) no me inserta nada ..... aver si somos capaces de sacar el codigo correcto... aki os dejo el completo que me da error :

if ($_REQUEST['do'] == 'add_news_confirm')
{
   $rs = $db->Execute("SELECT * FROM `sp_news` WHERE `id` = '-1'");
   $record = array(
      'title' => $_REQUEST['title'],
      'author' => $_REQUEST['author'],
      'section' => $_REQUEST['section'],
      'intro' => $_REQUEST['intro'],
      'text' => $_REQUEST['text'],
      'date' => $_REQUEST['date'],
      'newsimage' => $_REQUEST['newsimage']
      );
   $sql = $db->GetInsertSQL($rs, $record);
   $db->Execute($sql);
    $db->Execute("INSERT INTO phpbb_topics (forum_id,topic_title,topic_poster,topic_time,topic_views,topic_replies,topic_status,topic_type,topic_vote) VALUES ('1', '$_REQUEST[title]', '1', '$_REQUEST[date]',0,0,0,0,0)");
         $result1   =  $db->Execute("SELECT MAX(topic_id) as newID FROM phpbb_topics");

      $rs = $db->Execute("SELECT * FROM `phpbb_topics` WHERE `topic_id` = '-1'");
$record = array();
$record['forum_id'] = '1';
$record['topic_title'] = $_REQUEST['title'];
$record['topic_poster'] = '1';
$record['topic_time'] = $_REQUEST['date'];
$record['topic_views'] = '0';
$record['topic_replies'] = '0';
$record['topic_status'] = '0';
$record['topic_type'] = '0';
$record['topic_vote'] = '0';
$sql = $db->GetInsertSQL($rs,$record);
    $db->Execute("INSERT INTO phpbb_posts (topic_id, forum_id, poster_id, post_time) VALUES ('. $topicID .', '1', '1', '$_REQUEST[date]')");
         $result2   =  $db->Execute("SELECT MAX(post_id) as newID FROM phpbb_posts");

      $rs = $db->Execute("SELECT * FROM `phpbb_posts` WHERE `topic_id` = '-1'");
$record = array();
$record['topic_id'] = '. $topicID .';
$record['forum_id'] = '1';
$record['poster_id'] = '1';
$record['post_time'] = $_REQUEST['date'];
$sql = $db->GetInsertSQL($rs,$record);
    $db->Execute("INSERT INTO phpbb_posts_text (post_id, post_subject, post_text) VALUES ('1', '$_REQUEST[title]', '$_REQUEST[intro]')");
      $rs = $db->Execute("SELECT * FROM `phpbb_posts_text` WHERE `topic_id` = '-1'");
$record = array();
$record['post_id'] = 1;
$record['post_subject'] = $_REQUEST['title'];
$record['post_text'] = $_REQUEST['intro'];
$sql = $db->GetInsertSQL($rs,$record);
   SPMessage('Success | News has been successfully added.', 'news.php');


Pq pones a los id valores en el insert, lo suyo es ponerlo como primary key y auto-incremental, si lo tienes asi configurado no puedes insertar un valor de ese modo.


Ya nos cuentas.
me estas diciendo que si kito todos los post id, y demas, me riia bien? o_o xD
JmL escribió:me estas diciendo que si kito todos los post id, y demas, me riia bien? o_o xD


si el campo es auto-incremental como te ha dicho MORPHEUX si, cada vez que insertes un nuevo registro, el motor de BBDD se encarga de asignarle el siguiente valor al "id" con lo que no tienes que hacer un select, mirar el ultimo registro, sumar uno, y asignarselo al id :p

saludos!
a parte que podrias acabar con 2 teniendo el mismo valor...
en codigo libre hay un hilo especializado en php, igual alli te pueden ayudar mejor q por aqui...
deathline escribió:a parte que podrias acabar con 2 teniendo el mismo valor...


Autoincremental != único

Es decir, autoincremental implica que sea único pero que no sea autoincremental no implica que no pueda serlo también.

Con lo que podrías tener un campo no autoincremental que controlase la no existencia de duplicados
Daedin escribió:
Autoincremental != único

Es decir, autoincremental implica que sea único pero que no sea autoincremental no implica que no pueda serlo también.

Con lo que podrías tener un campo no autoincremental que controlase la no existencia de duplicados

Si el coje el ultimo numero y suma 1, perfectamente en un mismo momento podemos tener 2 hilos que ejecuten la busqueda del ultimo número antes que ninguno de los 2 lo canvie; a eso me referia.
¿alguien le podria meter mano al codigo y corregirlo? ... llevo 2 dias dandole vueltas a esto y no consiguo que salga bien. Me mete los datos en la base de datos y en todas las tablas k yo kiero, pero luego los post no salen en el foro, ya no se k puede ser .S
8 respuestas