page blanche et base de donnée non completée

Eléphanteau du PHP | 41 Messages

29 mai 2012, 08:05

Je ne vois pas la différence entre ton test et ceux que j'ai mis..?
En tout cas ce forum est bien sympa! il est actif et les gens sont gentils! Merci ! :)

ViPHP
xTG
ViPHP | 7331 Messages

29 mai 2012, 12:53

Ah bah si il y a une grosse différence...
Toi tu testes une par une les variables, puis quelque soit leur état tu fais ta requête.
Donc en gros si toutes les variables sont vides tu insères du vide... Logique ? Non pas tellement !
Ce que je te propose c'est de vérifier l'ensemble des valeurs au sein d'un seul if, des valeurs qui ne peuvent être oubliées lorsqu'on rempli le formulaire.
Car dans tout formulaire il y a forcement au moins une valeur obligatoire sinon cela n'a pas de sens...

Et utilises la fonction var_dump($_POST); pour vérifier l'état des valeurs que tu reçois.

Eléphanteau du PHP | 41 Messages

29 mai 2012, 13:45

je suis d'accord avec toi! il faudra que certains champs soient rempli obligatoirement mais pour l'instant ce n'est pas important puisque je n'arrive même pas a rajouter une ligne dans ma base de donnée via mon formulaire.

Quand je lance mon fichier .php avec EasyPHP ça me rajoute une ligne vide donc ça je comprends vu que j'envoi pas de donnée. mais quand je lance le fichier .HTML et que je rentre des valeurs ça rajoute pas de ligne du tout.

Donc si tu peux m'expliquer ça, ça serait cool
merci pour ton aide!

ViPHP
xTG
ViPHP | 7331 Messages

29 mai 2012, 16:38

Pas de ligne du tout ? A la vue de ton code la seule raison c'est que le formulaire n'est pas soumis au script PHP que tu nous montres. O_o
Surtout si en lançant manuellement le script tu obtiens une insertion...

Edit : il manque la balise body dans ton html, peut être cela vient-il de là. Un html mal formé est une langue non comprise par le navigateur.

Eléphanteau du PHP | 41 Messages

29 mai 2012, 16:59

A priori la balise body n'est pas la source de mes problèmes =(
Si ce que tu as constaté est vrai, comment puis-je y remédié?

ViPHP
xTG
ViPHP | 7331 Messages

29 mai 2012, 17:35

Le résultat de var_dump($_POST) ? ;)

Eléphanteau du PHP | 41 Messages

30 mai 2012, 08:10

Je sais pas trop comment utiliser var_dump.
j'ai fais plusieurs test au début du code :
var_dump($_POST); => array
empty

var_dump($_POST['CODE_CLIENT']); =>NULL

donc voila je sais pas ce qui est juste
et sinon après j'ai fait ça mais je sais pas si c'est correct:

if( isSet($_POST['.....']) ){


$codecle=$_POST['CODE_CLIENT'];

$nom=$_POST['NOM_CLIENT'];

$codepostal=$_POST['CODE_POSTAL'];

$adresse=$_POST['ADD_CLIENT'];

$ville=$_POST['VILLE_CLIENT'];

}
else
{echo 'erreur';
exit(1);
}

Et donc ça me donne erreur quand je lance sur EasyPHP. Donc si j'ai bien compris, c'est normal puisque si une valeur est nulle isset est faux.
C'est bien ça?

kny
Eléphanteau du PHP | 47 Messages

30 mai 2012, 14:37

Bonjour,

Parce-que cela me surprenais également, j'ai réécris le minimum de code dont tu as besoin

index.html
<!DOCTYPE html>
<html>
    <head>
        <title>Labo</title>
    </head>
    <body>
        <form method='post' action='get.php'>
            <input type='text' name='valueA' />
            <input type='text' name='valueB' />
            <input type='submit' value='send' />
        </form>
    </body>
</html>
get.php
<?php
    $datas = ( isset ( $_POST ) ) ? $_POST : "";
    if ( $datas ) {
        print_r ( $datas );
        echo $datas['valueA'];
        //code block
    }
?>
sortie

Code : Tout sélectionner

Array ( [valueA] => textA [valueB] => textB ) textA
Première remarque, attention à la syntaxe html. Il y avait effectivement des oublis tels que body, et même s'il ne s'agit pas de t'imposer du strict, certains manques sont mal interprétés par les navigateurs. Aussi, bien penser à refermer les balises (<input .......... />) ...
Autrement, ce code a été testé et fonctionne, il ne te reste normalement qu'à mettre en forme ton html et écrire les données désirées dans le php...

Eléphanteau du PHP | 41 Messages

30 mai 2012, 14:53

C'est trop compliqué pour moi ça #-o
Que fais ton code php? C'est la réception des données?
je dois donc rajouter la connexion a la base de donnée et l'insertion des données? Comment sera constituer le champ "values" de ma requête SQL dans ce cas?
Merci de ta réponse!
mais pour moi ça vient pas du code.. quoi que je fasse même récupérer des données de ma base de donnée pour les afficher en HTML ça fonctionne pas. Pourtant quand je lance le script php ça fonctionne très bien!
Donc problème de compatibilité entre HTML et PHP? A moins que je m'y prenne mal. Je n'en sais rien!

kny
Eléphanteau du PHP | 47 Messages

30 mai 2012, 15:20

Pardonnes moi, j'ai oublié de copier les commentaires
<?php
    // $datas va recevoir les données POST
    // il s'agit d'un syntaxe ternaire
    // ( isset ( $_POST ) ) ///////// on verifie si $_POST est définie et !NULL
    // si oui (?) on assigne à $datas les données $_POST
    // sinon (:) on assigne un contenu null ("")
    $datas = ( isset ( $_POST ) ) ? $_POST : "";

    // si $datas est !NULL
    if ( $datas ) {

        // j'affiche avec print_r les données pour vérification (c'est totalement facultatif, donc)
        print_r ( $datas );

        // puis j'écris une valeur reçue par POST (totalement facultatif aussi, donc)
        echo $datas['valueA'];
        
        // c'est donc dans ces accolades, tu auras compris, que tu vas faire tes inserts en bases de données en vérifiant, échappant les caractères si besoin
        // en faisant - pourquoi pas - des requêtes préparées, etc...
        $valueA = ( $datas['valueA'] ) ? $datas['valueA'] : ""; // tu peux ajouter des échappement ou autres si besoin évidemment.
        $valueB = ( $datas['valueB'] ) ? $datas['valueB'] : ""; // et ainsi de suite...

        // l'insert dans ta base de donnée ne change pas...
        // si tu en as la possibilité cependant, je te conseille de regarder du côté de PDO
        $db = mysql_connect("localhost:3306", "root", '') or die('Erreur de connexion '.mysql_error());
        mysql_select_db('db1',$db) or die('Erreur de selection '.mysql_error());

        $sql = "INSERT INTO table ( columnA, columnB ) VALUES ( $valueA, $valueB )";

        $response_query = mysql_query($sql); // je stocke la valeur de retour
        if ( $response_query ) {
            echo "It's all right!";
        }

        mysql_close();
    }
?>
Modifié en dernier par kny le 30 mai 2012, 15:41, modifié 1 fois.

ViPHP
xTG
ViPHP | 7331 Messages

30 mai 2012, 15:30

Si on reprend le résultat du var_dump que je t'ai demandé.
On voit que le tableau est vide.
Ton script ne reçoit donc rien de ton formulaire !
Cela peut venir d'un problème de HTML, il serait bon de le vérifier.

Eléphanteau du PHP | 41 Messages

30 mai 2012, 15:36

kny: j'ai tout fait comme il faut en suivant bien tes indications et rien à faire, ça donne toujours la même chose..
tes "echo" devrait s'afficher..? cependant il n'y a rien..
xTG: Comment vérifier un problème HTML?

kny
Eléphanteau du PHP | 47 Messages

30 mai 2012, 15:42

Peux-tu nous transmettre les fichiers sources?

ViPHP
xTG
ViPHP | 7331 Messages

30 mai 2012, 15:58

Et dans une balise [*html] ou [*php] afin qu'on puisse les lire facilement. (enlever les étoiles bien sûr, ou utiliser les boutons bbcode)

Eléphanteau du PHP | 41 Messages

30 mai 2012, 16:28

J'ai pas compris ce que vous vouliez exactement :? alors je vous envoi le code html et php avec mes données
serveur: localhost
login: root
pas de mdp
nom de la base: db1
table: client
champs: CODE_CLIENT, NOM_CLIENT (et d'autres..)

forum_php.html:

<html>
<head>
</head>
<body>
<form method='post' action='forum_php.php'>
code du client <input type="text" name="CODE_CLIENT" /><br>
nom du client <input type="text" name="NOM_CLIENT" /><br>
<input type="submit" value="send" />
</form>
</body>
</html>



forum_php.php:

<html>
<body>

<?

$datas = ( isset ( $_POST ) ) ? $_POST : "";
if ( $datas ) {
print_r ( $datas );
echo $datas['CODE_CLIENT'];

$CODE_CLIENT = ( $datas['CODE_CLIENT'] ) ? $datas['CODE_CLIENT'] : "";
$NOM_CLIENT = ( $datas['NOM_CLIENT'] ) ? $datas['NOM_CLIENT'] : "";

$db = mysql_connect("localhost:3306", "root", '') or die('Erreur de connexion '.mysql_error());

mysql_select_db('db1',$db) or die('Erreur de selection '.mysql_error());

$sql = "INSERT INTO client( CODE_CLIENT, NOM_CLIENT) VALUES($datas['CODE_CLIENT'], $datas['NOM_CLIENT'])";

mysql_query($sql);

if(mysql_query($sql))
echo 'envoi réussie';
else
echo 'envoi interrompu'.mysql_error();

mysql_close();

?>
</body></html>