duda ejercicio PHP y phpmyadmin

P4tr1

hola a todos,

os explico mi problema que no se por donde cogerlo

tengo que crear una pagina web en la cual pueda gestionar con php esta BD,
en la cual tengo estas tablas creadas en con el phpmyadmin:

http://i41.tinypic.com/d67ly.png

ahora bien, para la inserción tengo una seria de select (uno para ir seleccionando los antecedentes, otro para los consecuentes y otro para el CF) entonces formaría una regla (hay que tener en cuenta que puede tener varios antecedentes) y luego un botón para confirmar la inserción, pero antes de confirmar la inserción tengo que hacer una comprobación de que la
regla nueva que voy a introducir no exista, mi DUDA es, como hacer con php para que mire esto,
no se me ocurre ninguna sentencia o forma de hacer que haga algo al estilo de "select * from antecedentes where ID_atr_val = 'x' and ID_atr_val = 'y' and etc group by ID_antecedente" .

perdonar si no me he explicado bien

sasher

Supongo que estas usando un motor MyISAM y éste no soporta claves foráneas, sino no tendrías este problema (o no has relacionado las tablas entre si). Si éste no es tu caso, simplemente relaciona las tres tablas y al realizar inserts en las tablas, el propio método que uses te informará de si la inserción se ha realizado satisfactoriamente o no.

Si no es esto lo que pides, no te he entendido bien xD

P4tr1

otra duda que me ha salido y que tengo que solucionar ante es que,
tengo un select normal para ir guardando los antecedentes que coge, pero a la hora de hacerlo le he puesto el name="nombreX[]" (para que sea un array y guardar varios valores) ahora bien tengo un botón para enviar, el problema es como hago que cada vez que seleccione el select marque una opción me la guarde por que solo me guarda la ultima que selecciono, a ver si hay alguna forma de hacer que seleccione una, la guarda, luego selecciono otra, la guarda, y cuando pulse el boton pueda ver todas las seleccionadas.

lo de mostrar lo hago bien:

 $I_AnteArray = $_POST['ver_Ante'];

            
            if(isset($I_AnteArray)){
                $i = 0;
            foreach($I_AnteArray as $key => $value){
                $i++;
                echo "<br /> Ante elegido $i || Array Key $key || Value = $value <br /> ";
            }
            }

y el codigo php del select es asi:

<label>Antecedente: </label>
                    <select id="ver_Ante" name="ver_Ante[]">
                        <option>Seleccionar Antecedentes</option>
                        <?php
                            while($fila1 = $peticion11->fetch_row()){
                                echo"<option value='".$fila1['0']."'>".$fila1['1']." = ".$fila1['2']."</option>";
                            }
                        ?>
                    </select>
<input type="button" id="I_ante" name="I_ante" value="añadir antecedente"/>
1 respuesta
glolg

#3 lo suyo sería tener otra tabla, ya sea temporal o no para ir guardando estos registros. Sin consultas podrías hacerlo con variables de session

1 respuesta
P4tr1

#4 lo de variables de session no lo domino mucho, funcionan igual que las el metodo post,no?

1 respuesta
glolg

#5 si te refieres a la forma de declararlas y llamarlas, así es. Es tan sencillo como: $_SESSION[algo] = "pedro";

Este algo podría ser algo$incremento de i

JuSt1

Porque no haces un SELECT con la unión de los 3? te resultara mucho mas facil, uniendo tablas y luego sacando un num rows para poder comprobar si existe dicho valor nuevo que quieres meter, vamos, así es como yo lo haría.

O eso o no te he entendido bien xD

Saludos!

1 respuesta
P4tr1

#7 por hay van los tiros de la solución, un compañero me dijo algo de eso , gracias

lo que me tiene rayado y esto si me corre prisa es cuando voy a borrar que me sale error este mensaje "Catchable fatal error: Object of class mysqli_result could not be converted to string in la linea "

y lo que tengo hay es esto:

$E_val = $_POST['borr_regla'];
$consulta50 = "SELECT ID_antecedente FROM reglas WHERE ID_regla=$E_val";
                    $resultado50 = $conexion->query($consulta50);
                    echo "$resultado50";

el mensaje me lo dice cuando hago el echo, estoy probando hacer echo de las consultas para saber donde me sale el fallo del error

1 respuesta
Pyronhell

#8 Lo que te dice ese error es que lo que hay dentro de la variable $resultado50 no se puede convertir a string porque es una clase -del tipo que sea-. Imagino que si pruebas a imprimir

echo($resultado50);

a secas te dirá la clase y demás en lugar del error, pero lo que tienes que hacer con esa query es recorrer los resultados que te devuelva si hay alguno, creo que tienes código recorriendo resultados por ahí arriba.

También como nota personal, si ID_regla es un integer, te recomiendo que uses un cast cuando cojas el dato de $_POST:

$E_val = (int)$_POST['borr_regla'];
1 respuesta
P4tr1

#9 sisi el $E_val es un integer voy a ponerlo ahora mismo lo del casting

y para recorrer los resultado tendria que poner un fecht_array o algo de eso no¿?

acabo de poner echo ($resultado); y me sigue dando el error

1 respuesta
JuSt1

#10 Si, podrías usar el mysql fetch array para recorrer todos, te será mucho mas facil que si lo haces con row xD

Vamos yo no he usado lo que tu estas usando, pero yo directamente saco los datos desde el array puesto que van a variar, o también lo podrías sacar con el mysql result xD

1 respuesta
P4tr1

#11 como va eso del mysql result¿?

#13 pero que meto en un bucle¿? y el bucle for tendría que hacer que se ejecutase igual a tantas lineas me saque el una variable row, no¿?

1 respuesta
JuSt1

#12 Con el, sacas el resultado automáticamente, pero tienes que tenerlo en un bucle por narices.

#12 Si

1 respuesta
P4tr1

ya lo solucione, después de 3-4 días perdidos sin saber el fallo y la culpa de todo la tenias,
las tablas y sus restricciones, ya que no me dejaba borrar la tablas por que una dependía de otra y por lo tanto si no las borrar en el orden correcto es normal que no te deje.

Usuarios habituales

  • P4tr1
  • JuSt1
  • Pyronhell
  • glolg
  • sasher