Solo me imprime los ultimos datos añadidos

  • Autor Autor RaikND
  • Fecha de inicio Fecha de inicio
R

RaikND

Zeta
Social Media
Verificación en dos pasos activada
Mi idea es hacer un "select" para poder eligir el nombre de usuario y así poder borrarlo... Pero no se porque, solo se me imprime la ultima base de datos creada y bueno... No se que hago mal y vengo a pedir apoyo después de 2 horas intentando!

PHP:
$selId = $mysqli->query('SELECT * FROM usuarios');
$i = 0;
$selOne = array();
 $selTwo = array();

while($row = $selId->fetch_array(MYSQLI_ASSOC)) {
$selOne[$i] = $row['id'];
$selTwo[$i] = $row['nombre'];
$i++;
}

$web = str_replace('{panelUser}', '<h1>Actualiza Usuarios</h1><hr />
<select><option value="'.$selOne.'">'.$selTwo.'</option></select>', $web);

Y si hay 3 usuarios creados, solo da a ver el ultimo creado y bueno... No se que hago mal, así que pido ayuda jaja xD
 
Tu problema esta aca:
PHP:
$web = str_replace('{panelUser}', '<h1>Actualiza Usuarios</h1><hr />
<select><option value="'.$selOne.'">'.$selTwo.'</option></select>', $web);

al poner asi... solo diria array()... no podes colocar $selOne o $selTwo sin los id o recorrerlos... en html quedaria:
HTML:
<h1>Actualiza Usuarios</h1><hr /><select><option value="array()">array()</option></select>

queres ver si se obtuvieron bien los usuarios coloca esto pra testear:
PHP:
$selId = $mysqli->query('SELECT * FROM usuarios');
$i = 0;
$selOne = array();
 $selTwo = array();

while($row = $selId->fetch_array(MYSQLI_ASSOC)) {
$selOne[$i] = $row['id'];
$selTwo[$i] = $row['nombre'];
$i++;
}
echo '<pre>';
print_r($selOne);print_r($selTwo);

Tu solucion seria (el foreach en una sola linea con mysqli solo te funcionaria con PHP 5.4, sino tienes ese PHP usa el while normal...):
PHP:
$T = "";
foreach ( $mysqli->query('SELECT * FROM usuarios') as $fila ) {
	$T.= '<option value="'.$fila['id'].'">'.$fila['nombre'].'</option>';
}
$web = str_replace('{panelUser}', '<h1>Actualiza Usuarios</h1><hr /><select name="userID">'.$T.'</select>', $web);
 
Tu problema esta aca:
PHP:
$web = str_replace('{panelUser}', '<h1>Actualiza Usuarios</h1><hr />
<select><option value="'.$selOne.'">'.$selTwo.'</option></select>', $web);

al poner asi... solo diria array()... no podes colocar $selOne o $selTwo sin los id o recorrerlos... en html quedaria:
HTML:
<h1>Actualiza Usuarios</h1><hr /><select><option value="array()">array()</option></select>

queres ver si se obtuvieron bien los usuarios coloca esto pra testear:
PHP:
$selId = $mysqli->query('SELECT * FROM usuarios');
$i = 0;
$selOne = array();
 $selTwo = array();

while($row = $selId->fetch_array(MYSQLI_ASSOC)) {
$selOne[$i] = $row['id'];
$selTwo[$i] = $row['nombre'];
$i++;
}
echo '<pre>';
print_r($selOne);print_r($selTwo);

Tu solucion seria (el foreach en una sola linea con mysqli solo te funcionaria con PHP 5.4, sino tienes ese PHP usa el while normal...):
PHP:
$T = "";
foreach ( $mysqli->query('SELECT * FROM usuarios') as $fila ) {
	$T.= '<option value="'.$fila['id'].'">'.$fila['nombre'].'</option>';
}
$web = str_replace('{panelUser}', '<h1>Actualiza Usuarios</h1><hr /><select name="userID">'.$T.'</select>', $web);

Que rápida respuesta! voy a ponerme manos a la obra, gracias por tu ayuda... Comento en un rato (si no me lió creando código jaja)

EDIT:
Sos grande [MENTION=9679]cicklow[/MENTION] gracias y funciona!

- - - Actualizado - - -
[MENTION=9679]cicklow[/MENTION] nuevo problema jaja

(no remplaza el texto actual), ni funciona... Que hago mal si he llamado en realidad, todo funciona en el "link del GET"...

PHP:
$T = "";
                      $select = $mysqli->query('SELECT id, nombre, pass, email FROM usuarios');
                      foreach ($select as $fila) {
                        $T.= '<tr>';
                        $T.= '<td width=10%>'.$fila['id'].'</td><td><strong>Nombre</strong><br />'.$fila['nombre'].'</td>';
                        $T.= '<td><strong>Pass</strong><br />'.$fila['pass'].'</td><td><strong>Email</strong><br />'.$fila['email'].'</td>';
                        $T.= '<td><form method="GET" action="">
                              <input type="hidden" name="user_id" value="'.$fila['id'].'" />
                              <input name="userID" type="submit" value="Seleccionar" />
                        </form></td>';
                        $T.= '</tr>'; 
                      }

                      $web = str_replace('{panelUser}', '
                        
                        <h1>Actualiza Usuarios</h1><hr />
                        <table border=1 width=100%>
                        '.$T.'
                        </table>

                        ', $web);

                      if(isset($_REQUEST['userID'])){

                      $actualizar = $_GET['user_id'];

                      $result = $mysqli->query('SELECT id, nombre, pass, email FROM usuarios');
                      $fila = mysqli_num_rows($result);

                      if($fila > 0 && $actualizar != '') {

                        while($filas = mysqli_fetch_assoc($result)){
                              $id = $filas['id'];
                              $nombre = $filas['nombre'];
                              $pass = $filas['pass'];
                              $email = $filas['email'];

                        $web = str_replace('{panelUser}', '
                        
                        <h1>Actualiza Usuarios</h1><hr />
                        <table border=1 width=100%>
                        Hola
                        </table>

                        ', $web);
                              }
                        }else{
                          echo "No se ha encontrado nada";
                        }
                      }
"Son pruebas" los mysql... estoy muy verde aun con los inputs y eso... creo yo
 
Última edición:
Atrás
Arriba