Alguien me puede ayudar

  • Autor Autor blogers
  • Fecha de inicio Fecha de inicio
B

blogers

Pi
SEO
Hola bueno colegas vuelvo a pedir una breve ayuda nose mucho de PHP pero pues lo leo poquito

Tengo una bd de 96859 registros lo que yo busco en una sentencia que me realizaron


PHP:
$sql .= "WHERE `T1`.`ID` > (SELECT MAX(ID)-96859 FROM gc_listings

Pero veo que en mi web solo lee 700 registros es decir del ID 284633 hasta el ID 283939

Lo que vi que debajo del registro ID 283939 baja hasta el 183928

361d636078.webp


Pero lo que yo busco que lea los registros y no los ID no se si me explique

He puesto esta sentencia tambien
PHP:
$sql .= "WHERE `T1`.`ID` > (SELECT COUNT(ID)-96859 FROM gc_listings
Con COUNT pero por ejemplo para otras sentencias donde necesito ponerle un minimo de 500 supongamos me lee 80 mil registros.


alguna solucion colegas de antemano gracias

[MENTION=9679]cicklow[/MENTION] no me puedes ayudar ?
 
No entendi... que quieres hacer realmente...
 
Darle un STOP al pagineo o buscador que no lea mas de 50000 registros

con esta sentencia que me realizaron

PHP:
$sql .= "WHERE `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";

Por eso lo puse de ejemplo por que tengo como 90 mil registros y entre ellos hay una parte que se saltan los IDS

38324d1414629624-alguien-me-ayudar-361d636078.png


Lo que provoca que solo me lea 694 registros que hay dentro de esa secuencia del ID 284633 hasta el ID 283939

Pero como abajo de 283939 se baja hasta el ID 183928 supongo que esta contando ese vacio de IDS que no existen entre 283939 al 183928

db0a188efd.jpg






No entendi... que quieres hacer realmente...

- - - Actualizado - - -

Darle un STOP al pagineo o buscador que no lea mas de 50000 registros

con esta sentencia que me realizaron

PHP:
$sql .= "WHERE `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";

Por eso lo puse de ejemplo por que tengo como 90 mil registros y entre ellos hay una parte que se saltan los IDS

38324d1414629624-alguien-me-ayudar-361d636078.png


Lo que provoca que solo me lea 694 registros que hay dentro de esa secuencia del ID 284633 hasta el ID 283939

Pero como abajo de 283939 se baja hasta el ID 183928 supongo que esta contando ese vacio de IDS que no existen entre 283939 al 183928

db0a188efd.jpg






No entendi... que quieres hacer realmente...
 
No pues yo nose
solo se que esa sentencia si funciona pero como hay vacios en los ID y los cuenta si me pongo a meterme mas adentro no salgo pro que no se muhco PHP

si hay id vacios pon ID!="" en la consulta asi no lee los vacios
 
En esta ?

PHP:
$sql .= "WHERE `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";


si hay id vacios pon ID!="" en la consulta asi no lee los vacios

- - - Actualizado - - -

En esta ?

PHP:
$sql .= "WHERE `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";


si hay id vacios pon ID!="" en la consulta asi no lee los vacios
 
En esta ?

PHP:
$sql .= "WHERE `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";




- - - Actualizado - - -

En esta ?

PHP:
$sql .= "WHERE `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";

PHP:
$sql .= "WHERE  `T1`.`ID`!='' AND `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";
 
No los ignoro mira

d0c5f67f4b.png


sigue mostran 10 x 70 = 694


d715ef95d7.png


PHP:
$sql .= "WHERE  `T1`.`ID`!='' AND `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";

- - - Actualizado - - -

No los ignoro mira

d0c5f67f4b.png


sigue mostran 10 x 70 = 694


d715ef95d7.png


PHP:
$sql .= "WHERE  `T1`.`ID`!='' AND `T1`.`ID` > (SELECT MAX(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";

- - - Actualizado - - -

Pues por alli va pero lo ignora [MENTION=9679]cicklow[/MENTION]
 
Para paginación lo puedes hacer con el LIMIT (como ya te dijeron), junto con el SQL_CALC_FOUND_ROWS y el FOUND_ROWS().
 
Es que va bien como dice [MENTION=9679]cicklow[/MENTION] pero por alguna misteriosa razon ignora la regla que me puso cicklow con tan solo que no lea los IDS que no existen con eso tengo men
Para paginación lo puedes hacer con el LIMIT (como ya te dijeron), junto con el SQL_CALC_FOUND_ROWS y el FOUND_ROWS().
 
Es que va bien como dice [MENTION=9679]cicklow[/MENTION] pero por alguna misteriosa razon ignora la regla que me puso cicklow con tan solo que no lea los IDS que no existen con eso tengo men

Es que como tú lo estas haciendo, la veo dificil para que te funcione.

Digamos que tienes registros del 1 al 700 y de ahi tienes un espacio vacio (no existen esos registros), y tienes del 900 al 1050.

Supongamos que quieres que salgan 300 registros, lo que haces tú es agarrar el ultimo registro (en este caso 1050) y le restas 300 (1050-300 = 750), pero como del 700 al 900 no existen entonces solo te salen los registros del 900 al 1050 (150 registros).
 
Exatamente y se come los ids ya borrados pero los cuenta como si existieran
Es que como tú lo estas haciendo, la veo dificil para que te funcione.

Digamos que tienes registros del 1 al 700 y de ahi tienes un espacio vacio (no existen esos registros), y tienes del 900 al 1050.

Supongamos que quieres que salgan 300 registros, lo que haces tú es agarrar el ultimo registro (en este caso 1050) y le restas 300 (1050-300 = 750), pero como del 700 al 900 no existen entonces solo te salen los registros del 900 al 1050 (150 registros).
 
Exatamente y se come los ids ya borrados pero los cuenta como si existieran

Mira, algo asi sería lo que te digo:
PHP:
<?php
	$limit = 6;													//Número de registros por página	
	$pag = (isset($_GET["page"])) ? (int) $_GET["page"] : 1;	// Número de página pasado por get 
	if ($pag < 1)	$pag = 1;
	$offset = ($pag-1) * $limit;								// Número de registro apartir del cual va a regresar los resultados (dependiendo de la página)

	$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM tabla ORDER BY campo DESC';
	$sql .= ' LIMIT ' . $offset . ', ' . $limit . ';';
	$sqlTotal = 'SELECT FOUND_ROWS() AS total;';

	$res = $con->query($sql);									// Contiene los registros de esa página
	$rsTotal = $con->query($sqlTotal);
	$rowTotal = $rsTotal->fetch_object();
	$total = $rowTotal->total;									// Total de páginas
?>

Solo cambia el "* FROM tabla ORDER BY campo DESC" por los datos de tu consulta y deberia de funcionar.
 
Si vieras como esta esta tripa colega le muevo tantito es que yo no arme este script
Mira, algo asi sería lo que te digo:
PHP:
<?php
	$limit = 6;													//Número de registros por página	
	$pag = (isset($_GET["page"])) ? (int) $_GET["page"] : 1;	// Número de página pasado por get 
	if ($pag < 1)	$pag = 1;
	$offset = ($pag-1) * $limit;								// Número de registro apartir del cual va a regresar los resultados (dependiendo de la página)

	$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM tabla ORDER BY campo DESC';
	$sql .= ' LIMIT ' . $offset . ', ' . $limit . ';';
	$sqlTotal = 'SELECT FOUND_ROWS() AS total;';

	$res = $con->query($sql);									// Contiene los registros de esa página
	$rsTotal = $con->query($sqlTotal);
	$rowTotal = $rsTotal->fetch_object();
	$total = $rowTotal->total;									// Total de páginas
?>

Solo cambia el "* FROM tabla ORDER BY campo DESC" por los datos de tu consulta y deberia de funcionar.

- - - Actualizado - - -

Si vieras como esta esta tripa colega le muevo tantito es que yo no arme este script
Mira, algo asi sería lo que te digo:
PHP:
<?php
	$limit = 6;													//Número de registros por página	
	$pag = (isset($_GET["page"])) ? (int) $_GET["page"] : 1;	// Número de página pasado por get 
	if ($pag < 1)	$pag = 1;
	$offset = ($pag-1) * $limit;								// Número de registro apartir del cual va a regresar los resultados (dependiendo de la página)

	$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM tabla ORDER BY campo DESC';
	$sql .= ' LIMIT ' . $offset . ', ' . $limit . ';';
	$sqlTotal = 'SELECT FOUND_ROWS() AS total;';

	$res = $con->query($sql);									// Contiene los registros de esa página
	$rsTotal = $con->query($sqlTotal);
	$rowTotal = $rsTotal->fetch_object();
	$total = $rowTotal->total;									// Total de páginas
?>

Solo cambia el "* FROM tabla ORDER BY campo DESC" por los datos de tu consulta y deberia de funcionar.

- - - Actualizado - - -

Encontre una solucion pero aver necesito que me la vea una mano experta [MENTION=9679]cicklow[/MENTION]


Hice esto primero

PHP:
ALTER TABLE `gc_listings` DROP `ID`;

ALTER TABLE `gc_listings` AUTO_INCREMENT = 1;

ALTER TABLE `gc_listings` ADD `ID` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;


Y luego en la sentencia cambie de MAX por COUNT y quedo asi parace que va bien

mira

PHP:
$sql .= "WHERE  `T1`.`ID` AND `T1`.`ID` > (SELECT COUNT(ID)-50000 FROM gc_listings) AND (";
        $sql .= "`T1`.`Pay_date`";


No me quedo de otra que refrescar el ID de la tabla pero como lo vez




No los ignoro mira

d0c5f67f4b.png


sigue mostran 10 x 70 = 694


d715ef95d7.png




- - - Actualizado - - -

No los ignoro mira

d0c5f67f4b.png


sigue mostran 10 x 70 = 694


d715ef95d7.png




- - - Actualizado - - -

Pues por alli va pero lo ignora [MENTION=9679]cicklow[/MENTION]
 
Atrás
Arriba