Foros del Web » Programando para Internet » PHP »

Panel de administración y elseif

Estas en el tema de Panel de administración y elseif en el foro de PHP en Foros del Web. Hola a todos, partiendo de la base de que no tengo mucha idea de PHP, y cogiendo cositas de un lado y de otro, he ...
  #1 (permalink)  
Antiguo 26/09/2011, 10:22
 
Fecha de Ingreso: septiembre-2003
Ubicación: Hondarribia
Mensajes: 32
Antigüedad: 18 años, 10 meses
Puntos: 0
Panel de administración y elseif

Hola a todos,
partiendo de la base de que no tengo mucha idea de PHP, y cogiendo cositas de un lado y de otro, he conseguido fusionar un Panel de Administracion de una herramienta de newsletter.

El caso es que me ge quedado estancado ya casi al final. A ver si consigo explicar lo que realmente quiero.

Tengo este código:
Código PHP:
<?
if ($_SESSION['lin']) {
  
// we are logged in.
  
function writemenu($item) {
    
$items = array(
    
'email' => 'enviar email'
    
'archive' => 'archivo de emails',
    
'newsub' => 'anadir suscriptores'
    
'list' => 'lista de suscriptores',
    
'presupuesto' => 'Platos presupuesto'
    
'carta' => 'Platos carta'
    
'logout' => 'desconectarse'
    
);
    foreach (
$items as $a => $b) {
      if (isset(
$str)) $str .= ' &middot; ';else $str '';
      
$str .= ($a == $item)?'<b>':'<a href="admin.php?do='.$a.'&'.strip_tags(SID).'">';
      
$str .= $b;
      
$str .= ($a == $item)?'</b>':'</a>';
    }
    return 
$str;
  }
?>
<div style="font-size: 14pt;" align="center">Panel de control </div>
<div align="center"><?=writemenu($_GET['do'])?> &middot <a href="JavaScript:phelp('<?=$_GET['do']?>')">help</a></div>
<hr width="300" size="1" noshade color="#cdcdcd">
<p>
<?
  
  
if ($_GET['do'] == 'email') {
    
// ---------------------------- EMAIL SUBSCRIBERS
    
require('admin_email.inc.php');
  }
  elseif (
$_GET['do'] == 'archive') {
    
// ---------------------------- EMAIL ARCHIVE
    
require('admin_archive.inc.php');
  }
  elseif (
$_GET['do'] == 'list') {
    
// ---------------------------- LIST SUBSCRIBERS
    
require('admin_list.inc.php');
  }
  elseif (
$_GET['do'] == 'newsub') {
    
// ---------------------------- ADD SUBSCRIBERS
    
require('admin_newsub.inc.php');
    
      }
  elseif (
$_GET['do'] == 'presupuesto') {
    
// ---------------------------- PRESUPUESTO
    
require('presupuesto.php' );

       }

  elseif (
$_GET['do'] == 'carta') {
    
// ---------------------------- CARTA
    
require('carta.php');
  }
  else {
    
// ---------------------------- DISPLAY MENU
    

    
?>
Hasta ahí todo correcto. El problema llega cuando quiero añadirle que en "presupuesto.php" y en "carta.php" cuando pinche en borrar alguno de los platos de la carta se ejecute esa sentencia dentro del panel de administración.

Lo que me está ocurriendo ahora es que al intentar borrar alguno de los items el enlace es "http://xxxx.com/control/presupuesto.php?delete=11" cuando lo que yo necesitaría realmente es "http://xxxx.com/control/admin.php?do=presupuesto?delete=11"

El código de borrar items en "presupuesto.php" y "carta.php" es el siguiente:

Código PHP:
<?php


if(is_numeric($_GET['delete'])){
    if(
$mysqli->query("DELETE FROM items WHERE id=$_GET[delete]"))
        echo 
'<b style="color:green">Item deleted successfully</b><br/>';
    else
        echo 
'<b style="color:red">There was an error.</b><br/>';
}

$items=$mysqli->query($select_sql);
while(
$item=$items->fetch_object()){
    if(
$item->type!=$type)
        
$out[]='<br/><b>'.$item->type.'</b>';
    
$type=$item->type;
    
$out[]='<a href="presupuesto.php?delete='.$item->id.'">[X]</a> '.$item->item.' - $'.$item->price;
}
echo 
implode("\n<br/>\n"$out);
?>
Muchas gracias!!
  #2 (permalink)  
Antiguo 26/09/2011, 12:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 14 años
Puntos: 2236
Respuesta: Panel de administración y elseif

Código PHP:
Ver original
  1. $out[]='<a href="presupuesto.php?delete='.$item->id.'">[X]</a> '.$item->item.' - $'.$item->price;

Tienes algun problema para modificar la esa linea y poner exactamente lo que necesitas?
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 26/09/2011, 14:49
 
Fecha de Ingreso: septiembre-2003
Ubicación: Hondarribia
Mensajes: 32
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Panel de administración y elseif

Hola Triby,
he probado a poner esto, pero no funciona...no borra el item de la base de datos.
Código PHP:
    $out[]='<a href="admin.php?do=carta.php?delete='.$item->id.'">[X]</a> '.$item->item.' - $'.$item->price
Gracias por tu ayuda!!
  #4 (permalink)  
Antiguo 26/09/2011, 15:07
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 11 años, 11 meses
Puntos: 91
Respuesta: Panel de administración y elseif

lo que pasa es que al poner arrays dentro de un string con comillas dobles debes encapsularlo en llaves:

en tu caso tienes:

Código PHP:
Ver original
  1. $mysqli->query("DELETE FROM items WHERE id=$_GET[delete]")

deberías tener

Código PHP:
Ver original
  1. $mysqli->query("DELETE FROM items WHERE id={$_GET[delete]}")

ves como si es util capturar los errores de PHP? xD!
  #5 (permalink)  
Antiguo 26/09/2011, 15:14
 
Fecha de Ingreso: septiembre-2003
Ubicación: Hondarribia
Mensajes: 32
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Panel de administración y elseif

Mmm...Ribon, si hago eso, las 2 siguientes líneas se me marcan como error de sintaxis
  #6 (permalink)  
Antiguo 26/09/2011, 15:35
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 14 años
Puntos: 2236
Respuesta: Panel de administración y elseif

Y si agregas punto y coma ; al final de las lineas... desaparece el error?
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 26/09/2011, 15:43
 
Fecha de Ingreso: septiembre-2003
Ubicación: Hondarribia
Mensajes: 32
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Panel de administración y elseif

Que va, así sigue dando error de sintaxis
Código PHP:
if(is_numeric($_GET['delete'])){
    
$mysqli->query("DELETE FROM items WHERE id={$_GET[delete]}")
        echo 
'<b style="color:green">Item deleted successfully</b><br/>';
    else
        echo 
'<b style="color:red">There was an error.</b><br/>';

  #8 (permalink)  
Antiguo 26/09/2011, 15:53
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 14 años
Puntos: 2236
Respuesta: Panel de administración y elseif

Cita:
$mysqli->query("DELETE FROM items WHERE id={$_GET[delete]}")
Y el punto y coma?
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 26/09/2011, 16:08
 
Fecha de Ingreso: septiembre-2003
Ubicación: Hondarribia
Mensajes: 32
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Panel de administración y elseif

Efectivamente ya no me da errores, pero me sigue sin funcionar...yo creo que el fallo está en el enlace
Código PHP:
    $out[]='<a href="admin.php?do=carta.php?delete='.$item->id.'">[X]</a> '.$item->item.' - $'.$item->price
.
Yo me rindo, pero si aguien se motiva yo encantado de recibir ayuda, gracias!

Ahora carta.php está tal que así.

Código PHP:
<?if (!defined('IN_ADMIN')) die('This page cannot be accessed out of context.');

?>
<?php
include('../la_carta/main.php');
?>
<h2>Añadir</h2>
<?php
if($_POST['item']){
    
$stmt$mysqli->prepare("INSERT INTO items (item, type, price) VALUES (?,?,?)");
    
$stmt->bind_param('sss',$_POST[item],$_POST[type],$_POST[price]);
    if(
$stmt->execute())
        echo 
'<b style="color:green">Plato añadido correctamente</b><br/>';
    else
        echo 
'<b style="color:red">ERROR.</b><br/>';
}
?>
<form method="post">
    Plato:
<input name="item" style="width:300px;"/>
    <br/>
    Tipo:
<select name="type">
        <option value="ENTRANTES">ENTRANTES</option>
        <option value="PESCADOS">PESCADOS</option>
        <option value="CARNES">CARNES</option>
        <option value="POSTRES">POSTRES</option>
    </select>
Euros<input name="price" value="10" style="width:30px;"/>
    <input type="submit" value="Anadir"/>
</form>
<h2>Borrar</h2>
<?php


if(is_numeric($_GET['delete'])){
    
$mysqli->query("DELETE FROM items WHERE id={$_GET[delete]}");
        echo 
'<b style="color:green">Item deleted successfully</b><br/>';
    
}

$items=$mysqli->query($select_sql);
while(
$item=$items->fetch_object()){
    if(
$item->type!=$type)
        
$out[]='<br/><b>'.$item->type.'</b>';
    
$type=$item->type;
    
$out[]='<a href="admin.php?do=carta.php?delete='.$item->id.'">[X]</a> '.$item->item.' - $'.$item->price;

}
echo 
implode("\n<br/>\n"$out);
?>
  #10 (permalink)  
Antiguo 26/09/2011, 16:45
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 11 años, 11 meses
Puntos: 91
Respuesta: Panel de administración y elseif

Incluye esto en tu script y dinos que error te muestra

Código PHP:
Ver original
  1. <?php
  2.  error_reporting(E_ALL);
  3.  ini_set("display_errors", 1);
  4. ?>
  #11 (permalink)  
Antiguo 26/09/2011, 18:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 14 años
Puntos: 2236
Respuesta: Panel de administración y elseif

A ver, tu quieres que quede asi: admin.php?do=presupuesto&delete= y pones esto admin.php?do=carta.php?delete=

Creo que es logico que no funcione.
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 27/09/2011, 01:12
 
Fecha de Ingreso: septiembre-2003
Ubicación: Hondarribia
Mensajes: 32
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Panel de administración y elseif

Toda la razón Triby, soy un cero a la izquierda. Ya funciona!
Muchas gracias a todos!

Etiquetas: elseif, mysql, panel, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:21.