Novato en programación

Merkury

#30 A ver pega lo que tienes ahora.

#33 En C la definición de una cadena es un vector de char.

#32 A ver que me he patinado yo, no te hace falta meter el string simplemente tal como lo tenias

char nombre[<longitudMaxima>],primer_apellido[<longitudMaxima>], segundo_apellido[<longitudMaxima>]

Donde pone <longitudMaxima> tu pon el número maximo de caracteres que admitiras.

Y ya.

2 respuestas
Vain92

#27 ¿Donde va lo de string?

Lo siento si estoy haciendo demasiadas preguntas, de verdad, pero estoy más perdido....

2 respuestas
kraneok

#29 Merkury, pero es que 28 está metiendo el string en un CHAR!

1 respuesta
kraneok

#32 A ver si no recuerdo mal, lo primero que veo es que estas intentando meter en un CHAR una cadena y eso es imposible.

CHAR = un carácter.

Mira, haz esto para que veas el ejemplo


char cadena[4] = "Hola";

printf("%s", cadena ); //Te devuelve Hola

2 respuestas
Vain92

#34 Vale, creo que entiendo a lo que te refieres.

/*Programa de prueba para ver si he asimilado lo esencial*/
           #include <stdio.h>
           main()            
     
{ char nombre,primer_apellido,segundo_apellido; printf ("\nDime tu nombre: "); scanf ("%s",nombre); printf ("\nDime tu primer apellido: "); scanf ("%s",primer_apellido); printf ("\nDime tu segundo apellido: "); scanf ("%s",segundo_apellido); printf ("\nTu nombre completo es:"); printf ("%s %s %s",nombre,primer_apellido,segundo_apellido); }

De aquí, ¿Puede ser que lo que esté dando problemas sea lo de "char nombre,primer_apellido,segundo_apellido;"?

2 respuestas
kroSio

#31 en registro.php

<?php if($_POST) {
    $nombre = $_POST['nombre'];
    $usuario = $_POST['usuario'];
    $clave = $_POST['clave'];
    $email = $_POST['email'];
    if ($nombre == "" or $usuario == "" or $clave == "" or $email == "") { 
        header("Location: ../registro.html?mostrar_error=1"); 
    }
    else {
        include 'includes/config.php';
        $sql = sprintf("INSERT INTO usuarios VALUES (NULL,'$nombre','$usuario', md5('$clave'), '$email')");
        $res = mysql_query($sql);
        if (!$res) header("Location: ../registro.html?mostrar_error=2");  
$mensaje = sprintf("Usuario registrado correctamente"); } } ?>

registro.html

<div id="registro">
				<?php if ($_GET['mostrar_error']) { ?>
            <div class="error">
                <?php 
                    if ($_GET['mostrar_error']==1)  echo "Debe rellenar todos los campos";
                    else
                    if ($_GET['mostrar_error']==1)  echo "Imposible conectar con el servidor";
                    ?>
       			 <?php } ?>
           <form method="POST" action="php/registro.php">
                <label>Nombre:</label><input type="text" name="nombre"><br>
                <label>Nombre de usuario:</label><input type="text" name="usuario"><br>
                <label>Contraseña:</label><input type="password" name="clave"><br>
                <label>Email:</label><input type="text" name="email"><br>
            <div class="submit">
                <input type="submit" value="Registrar">
            </div>
    	   </form>
	  	</div>
   </div>

Hay dos cosas que no entiendo por que están:

la 1º en linea 2.. por que acaba con { ?>
la 2º en linea 9, no sé que significado tiene el <?php } ?>

1 respuesta
kraneok

#31 No le puede dar longitud a una cadena variable, si dice que quiere insertar un nombre, Pepe y Antonio tienen diferente longitud.

1 respuesta
Merkury

#37 Si tu en C haces un char nombre[10] y se te reservan 10 espacios luego que lo llenes o no es indiferente.

#36 A ver acaba asi porque estas mezclando PHP y HTML para poder visualizar mensajes de error, con lo que hay que abrir el If con php, cerrar la inserción de php cuando abres el if, meter el codigo HTML que se verá solo cuando se cumpla la condición y debajo cerrar el if de PHP (es un lio lo se)

Prueba así.

<div id="registro">
                                <?php if (isset($_GET['mostrar_error'])) { ?>
            <div class="error">
                <?php 
                    if ($_GET['mostrar_error']==1)  echo "Debe rellenar todos los campos";
                    else
                    if ($_GET['mostrar_error']==2)  echo "Imposible conectar con el servidor";
                    ?>
                         <?php } ?>
           <form method="POST" action="php/registro.php">
                <label>Nombre:</label><input type="text" name="nombre"><br>
                <label>Nombre de usuario:</label><input type="text" name="usuario"><br>
                <label>Contraseña:</label><input type="password" name="clave"><br>
                <label>Email:</label><input type="text" name="email"><br>
            <div class="submit">
                <input type="submit" value="Registrar">
            </div>
           </form>
                </div>
   </div>
2 respuestas
Merkury

#35 tu prueba esto:

*Programa de prueba para ver si he asimilado lo esencial*/
           #include <stdio.h>
           main()            
     
{ char nombre[15],primer_apellido[20],segundo_apellido[20]; printf ("\nDime tu nombre: "); scanf ("%s",nombre); printf ("\nDime tu primer apellido: "); scanf ("%s",primer_apellido); printf ("\nDime tu segundo apellido: "); scanf ("%s",segundo_apellido); printf ("\nTu nombre completo es:"); printf ("%s %s %s",nombre,primer_apellido,segundo_apellido); }
kraneok

#38 Picha es lo que llevo diciendo rato, que estaba intentando meter un String en un char y no en un char[] que me lol xd.

1 respuesta
Merkury

#40 Es que estar revisando codigo C + código HTML y PHP MAS aparte mi trabajo tela eh XD

Vain92

xDDDDDDDDDDDDDDDDDD

Desisto. A tomar por culo.

Ni con la longitud máxima ni con el otro proyecto que me ha dicho kraneok consigo nada.

Hasta esto:

#include <stdio.h>
main()

{
char cadena[4] = "Hola";

printf("%s", cadena ); //Te devuelve Hola
}

Me da error.

3 respuestas
Merkury

#42 Tienes bien las librerías?

haz tambien

#include <conio.h>

Edit --> Aunque la Conio.h ahora que lo pienso es para generar las pantallas de linea de comando...

kroSio

#38 muchisimas gracias por el curro que te metes desinteresadamente, pero sigue sin funcionarme ;(

1 respuesta
Merkury

#44 Luego cuando llegue a casa, lo probaré bien que aquí no nada para probarlo bien todo y lo hago de cabeza XD.

Eh una cosa, mueve el archivo .php a la misma carpeta donde tienes el .html y en el action pon solo action="loquesa.php"

#44 Mejor dejate el HTML así y recuerda mover el .php a la localización del HTML

<div id="registro">
        <?php if (isset($_GET['mostrar_error'])) { ?>
    <div class="error">
        <?php 
            if ($_GET['mostrar_error']==1)  echo "Debe rellenar todos los campos";
            else
            if ($_GET['mostrar_error']==2)  echo "Imposible conectar con el servidor";
            
} ?> </div> <form method="POST" action="registro.php"> <label>Nombre:</label><input type="text" name="nombre"><br> <label>Nombre de usuario:</label><input type="text" name="usuario"><br> <label>Contraseña:</label><input type="password" name="clave"><br> <label>Email:</label><input type="text" name="email"><br> <input type="submit" value="Registrar"> </form> </div>

#46 eso no es C++?

#46 Se me mezclan tio, a estas horas ya...

1 respuesta
kraneok

#42

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  
char cadena[4] = "Hola"; printf("%s", cadena);
system("PAUSE"); }

#46 Que yo sepa no, que tiene eso de C++ xD, si lo dices por las librerías, las de C++ empiezan por Cstdio sin .h

1 respuesta
kroSio

#45 lo he probado como me has dicho, y cuando le doy a registrar, me sale en el url el mostrar_error1, no sé si eso significa que funciona, lo que pasa es que desde que he puesto todo el codigo ese de get, en vez de los echo que tenia antes, me ha descuadrado el formulario, y me ha subido el footer arriba...

1 respuesta
kraneok

#42

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
  
char nombre[20], apellido[30]; printf("Inserta un nombre ( máx 20 ): "); scanf("%s", nombre); printf("Inserta un apellido ( máx 30 ): "); scanf("%s", apellido); printf("\n"); printf("Tu nombre es : %s %s", nombre, apellido); printf("\n"); system("PAUSE"); }
alterego

#47 prueba con esto

registro.php //donde tienes el formulario

<div id="registro">
    <?php if(isset($_GET['mostrar_error'])) { ?>
        <div class="error">
            <?php 
            if($_GET['mostrar_error']==1)  echo "Debe rellenar todos los campos";
            elseif ($_GET['mostrar_error']==2)  echo "Imposible conectar con el servidor ";
            echo "</div>";
    } ?>
    <form method="POST" action="respuesta.php">
        <label>Nombre:</label><input type="text" name="nombre"><br>
        <label>Nombre de usuario:</label><input type="text" name="usuario"><br>
        <label>Contraseña:</label><input type="password" name="clave"><br>
        <label>Email:</label><input type="text" name="email"><br>
    <div class="submit">
        <input type="submit" value="Registrar">
    </div>
    </form>
</div>

respuesta.php // donde procesas los datos y en caso de que no rellenen los campos vuelve a registro.php con el mensaje

<?php if($_POST) {
    $nombre = $_POST['nombre'];
    $usuario = $_POST['usuario'];
    $clave = $_POST['clave'];
    $email = $_POST['email'];
    if ($nombre == "" or $usuario == "" or $clave == "" or $email == "") { 
        header("Location: registro.php?mostrar_error=1"); 
    } else {
        include 'includes/config.php';
        $sql = sprintf("INSERT INTO usuarios VALUES (NULL,'$nombre','$usuario', md5('$clave'), '$email')");
        $res = mysql_query($sql);
        
if (!$res) header("Location: registro.php?mostrar_error=2"); $mensaje = sprintf("Usuario registrado correctamente"); } } ?>

#51 llamalos como quieras, pero el formulario, si vas a meter php no puede tener extensión html. Ambos tienen que ser .php tal y como esta planteado el código

1 respuesta
B

Y despues os preguntais por qué PHP tiene tan mala fama. Esos churros de códigos son inmantenibles, por favor usad POO y patrones.

2 respuestas
kroSio

#49 pero yo el formulario no lo tengo en un php, lo tengo en una de las páginas de mi web html, y en registro.php tengo lo que tu has llamado respuesta.php...

3 respuestas
catalon

#50 Si el chaval no sabe que no puede meter php en un html como va a saber poo. Hay que ir paso a paso, cuando su profesor le de deberes de poo ya le enseñaremos xDD

#51 A ver, tienes un problema de concepto. Tu pretendes meter dinamismo en un html lo cual es imposible, tiene que ser php. Si no te gusta siempre tienes la opción de crear tantos html como posibles respuestas haya y redirigir a cada html en función de cada resultado.

1 respuesta
Merkury

#51 Ya, pero al clavarle las verificaciones con PHP el archivo ha de cambiarse a loquesea.php

#50 Yo tengo códigos PHP picados de 0 que son mantenibles, es normal que el codigo de un novato sea así.

Si claro que puedes #54, pero en el momento que metes codigo PHP la extensión del archivo ha de ser .php para que el servidor sea capaz de identificarlo.

De todas formas creo que te has lanzado a hacer cosas con 0 base e igual te convendría ir más despacio y haciendo cosas más básicas (que las hay).

kroSio

#52 dices que no puedo insertar esto en una página html?

2 respuestas
catalon

#54 Eso es un php. No entiendo la pregunta xDD
Para poder mostrar mensajes de error en funcion de lo enviado necesitas ifs... y para tener ifs necesitas php.

1 respuesta
kroSio

#55 veamos yo me estoy guiando por esta web, y según pone ahí para hacer ese formulario hay una parte php y otra html...

Entonces yo lo que he hecho a sido hacer el formulario en el html, y despues comprobarlo en un php, y si hay algún campo en blanco que me de los errores en el mismo formulario del html... en vez de que quedase los mensajes en otra web en blanco, o evitar hacerlo con java con alerts...

No sé si me explico... xDD

2 respuestas
Merkury

#56 Si, pero lo estas haciendo mal.

Tu en un archivo .php puedes meter HTML sin nigún problema, pero en un archivo .HTML si metes php el servidor con esas partes no va a saber que hacer porque no son .html

Por cierto lo optimo es validar sin tener que enviar (javascript) y luego validar los datos al ir a introducirlos en la BBDD.

#56 De hecho si te fijas la url del registro de ejemplo es registro.php, que tu estas poniendo como registro.html

#59 renombrar el archivo .html a .php y listo.

1 respuesta
catalon

#56 Claro pero es que esa web o bien es un solo archivo php con el codigo html dentro o son 2 archivos php uno para el formulario y los avisos y otro para el tratamiento de los datos. Escojas la opción que escojas tienen que ser php si quieres que sea dinámico.

2 respuestas
kroSio

#57 ok, entiendo...

#57 #58 entonces como podría hacerlo de la forma que lo tengo pensado? o me tengo que olvidar...

2 respuestas
catalon

#59 Si te empeñas en tener el formulario+avisos en formato .html lo único que te puedo decir es que hagas un html diferente por cada posible aviso y donde antes redirigías a header("Location: registro.php?mostrar_error=2"); ahora redirijas al html correspondiente, pero vamos yo no entiendo por que te empeñas en el archivo html xDD

2 respuestas