dato que no existente en SQLite3

Prospero

Dseda
Verificación en dos pasos desactivada
Desde
19 Nov 2006
Mensajes
1.197
Hola amigos, estoy trayendo un dato de la db hasta ahi todo bien lo trae pero cuando este no existe me tira error.

$NombredelGrupo = "Grupo 0 Positivo";
$db = new BaseDatos();
$sql ="SELECT * FROM Datos WHERE NombreDelGrupo = '$NombredelGrupo';";
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
$Registrado = $row["Registrado"];
}
$db->close();

hasta ahi me lo trae perfecto porque el grupo existe! pero cuando no existe el grupo. me sale

Warning: Undefined variable $Registrado in C:\xampp\htdocs\hospital\consulta.php on line 24

quiero traer que no existe para registrarlo pero toy perdido. gracias. jajaja
 

kj2

Iota
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Desde
1 Abr 2011
Mensajes
2.381
Primero que nada, si solo vas a explorar una tupla, no tiene sentido que uses un while. Para comprobar si existe, con un if bastaría:

PHP:
$row = $ret->fetchArray(SQLITE3_ASSOC);
if (empty($row))
    echo "No existe";
else
    echo "Existe";

En estos casos, recomiendo, hacer menos copipaste+run y procurar entender bien lo que se está haciendo, incluso aquello que estás leyendo en stack overflow o similares, ya que programar no se puede hacer por mnemotecnia.

Explicando lo que sucede con el while: Cuando se da el caso de que no existe, la condicional que has puesto devuelve false, por lo que nunca entra y "$Registrado" no llega a definirse. Desde luego hay muchas soluciones posibles:

1. Definir "$Registrado" con un valor por defecto antes del while.
2. Quitar el while, cambiarlo por un if y usar el "else" para darle el valor por defecto.
3. Las 2 anteriores, para no usar el "else".
4. Cuando uses "$Registrado" más adelante (línea 24, según tu error), usar "isset()" para saber si está o no definido y trabajar con eso.
5. Usar otra solución que escribí arriba.
6. etc.

Soluciones hay muchas, solo hay que centrarse en aprender antes que en resolverlo por fuerza bruta de copipaste.

kj
 

Prospero

Dseda
Verificación en dos pasos desactivada
Desde
19 Nov 2006
Mensajes
1.197
Primero que nada, si solo vas a explorar una tupla, no tiene sentido que uses un while. Para comprobar si existe, con un if bastaría:

PHP:
$row = $ret->fetchArray(SQLITE3_ASSOC);
if (empty($row))
    echo "No existe";
else
    echo "Existe";

En estos casos, recomiendo, hacer menos copipaste+run y procurar entender bien lo que se está haciendo, incluso aquello que estás leyendo en stack overflow o similares, ya que programar no se puede hacer por mnemotecnia.

Explicando lo que sucede con el while: Cuando se da el caso de que no existe, la condicional que has puesto devuelve false, por lo que nunca entra y "$Registrado" no llega a definirse. Desde luego hay muchas soluciones posibles:

1. Definir "$Registrado" con un valor por defecto antes del while.
2. Quitar el while, cambiarlo por un if y usar el "else" para darle el valor por defecto.
3. Las 2 anteriores, para no usar el "else".
4. Cuando uses "$Registrado" más adelante (línea 24, según tu error), usar "isset()" para saber si está o no definido y trabajar con eso.
5. Usar otra solución que escribí arriba.
6. etc.

Soluciones hay muchas, solo hay que centrarse en aprender antes que en resolverlo por fuerza bruta de copipaste.

kj
graciiias bro se entendio perfecto todo.
 

Crea una cuenta o accede para comentar

Debes ser un miembro para poder comentar

Crear cuenta

Crea una cuenta en nuestra comunidad

Acceder

¿Ya tienes una cuenta? Accede aquí


Arriba