Soucis de date en Php/Oracle
                    
        
     
             
                    MarineDbt
    
        
    
                    Messages postés
            
                
     
             
            5
        
            
                                    Statut
            Membre
                    
                -
                                     
MarineDbt Messages postés 5 Statut Membre -
        MarineDbt Messages postés 5 Statut Membre -
        Bonjour, plutôt débutante en Php, je me trouve face à une problème, et j'avoue qu'après avoir tout fait pour essayer de le résoudre je commence à être à court d'idée. 
Ce que j'essaye de faire, c'est un formulaire pour rajouter un enfant(caractérisé par son nom, son prénom, et entre autre son age) dans une base de donnée oracle.
Sauf qu'au niveau de l'age j'ai un soucis. La requête ne s'execute pas...
Le formulaire :
Et le traitement du formulaire.
Je suis toujours renvoyée dans le "KO"... Si vous aviez la moindre solution vous me sauveriez la vie :)
                
            
                
    
    
    
        Ce que j'essaye de faire, c'est un formulaire pour rajouter un enfant(caractérisé par son nom, son prénom, et entre autre son age) dans une base de donnée oracle.
Sauf qu'au niveau de l'age j'ai un soucis. La requête ne s'execute pas...
Le formulaire :
<form method="post" action="rajouenfscript.php" >
<p>
<input type="text" name="nom" />Nom de l'enfant* </br> <!--nommer correctement vos balises avec name="nom de votre données"
cela nous permettra de savoir quelle information on veut récupérer -->
<input type="text" name="prenom" />Prénom de l'enfant*</br>
Date de naissance* :</br>
<input type="date" name="date_nai"></br>
Sexe* :</br>
<input type="radio" name="sexe" value="FEMININ">Fille<br>
<input type="radio" name="sexe" value="MASCULIN">Garçon</br>
</br>
* = champ obligatoire
</br>
</div>
<input type="submit" value="Valider" /> <!-- confirme que nous avons de finir de remplir le formulaire -->
</p>
</form>
Et le traitement du formulaire.
<?php
// connexion à oracle
try {
$db = new PDO('oci:dbname=v240.ig.polytech.univ-montp2.fr/ora10',
'marine.dubedat','oracle');
}
catch(PDOException $e) {
/* ce "catch" sert à rattraper les cas où la connexion échoue */
$db = null;
print("Connexion à la base de données impossible !");
exit(1);
}
$pseudo=$_COOKIE['nom'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$date_nai=$_POST['date_nai'];
$sexe=$_POST['sexe'];
if ((isset($_COOKIE['nom'])) && (isset($_POST['nom'])) && (isset($_POST['prenom'])) && (isset($_POST['date_nai']) ) && (isset($_POST['sexe']) )){
$req=$db->prepare("INSERT INTO ENFANT (nomenfant, prenomenfant, pseudoparent, date_nai_enf, sexe)
VALUES(:nom,:prenom,:pseudo,:date, :sexe)");
$req->bindValue(':nom', $nom,PDO::PARAM_STR);
$req->bindValue(':prenom', $prenom,PDO::PARAM_STR);
$req->bindValue(':pseudo', $pseudo,PDO::PARAM_STR);
$req->bindValue(':date', $date_nai,PDO::PARAM_STR);
$req->bindValue(':sexe', $sexe,PDO::PARAM_STR);
}
if($req->execute()){
echo "ok";
//header("Location: succesinscription.php",true);
exit;
}
else
{
print_r($req->errorInfo());
echo "KO";
//header("Location: erreurinscription.php",true);
}
$db = null; // on ferme la connection
?>
Je suis toujours renvoyée dans le "KO"... Si vous aviez la moindre solution vous me sauveriez la vie :)
        A voir également:         
- Soucis de date en Php/Oracle
- Airpods 3 date de sortie - Guide
- Office 2024 date de sortie - Accueil - Bureautique
- Samsung a33 date de sortie - Guide
- Jm date avis - Forum Consommation & Internet
- Expert php pinterest - Télécharger - Langages
3 réponses
                        
                    Bon je ne m'y connais pas trop mais je vais essayer d'aider :)
Dans ta base, la date_nai est de type date ?
Sinon essaies de passer par une variable pour changer ton type date en type string ?
Car je pense que le soucis vient du fais que tu es une date et tu fais PARAM_STR
    
                Dans ta base, la date_nai est de type date ?
Sinon essaies de passer par une variable pour changer ton type date en type string ?
Car je pense que le soucis vient du fais que tu es une date et tu fais PARAM_STR
                        
                    Je pense m'y connaitre encore moins que toi !
Oui dans ma base c'est un type date.
Et j'ai des amis plus calés que moi qui se sont penchés la dessus, ils ont pensé à cette erreur et ont vérifié apparemment ça serait bien un PARAM_STR qu'il faudrait. Je viens également de regarder ici : https://stackoverflow.com/questions/2374631/pdoparam-for-dates
    
                Oui dans ma base c'est un type date.
Et j'ai des amis plus calés que moi qui se sont penchés la dessus, ils ont pensé à cette erreur et ont vérifié apparemment ça serait bien un PARAM_STR qu'il faudrait. Je viens également de regarder ici : https://stackoverflow.com/questions/2374631/pdoparam-for-dates
                        
                    J'ai tenté une autre méthode, toujours infructueuse :
Et voila l'erreur renvoyée :
Array ( [0] => HY000 [1] => 1858 [2] => OCIStmtExecute: ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique (ext\pdo_oci\oci_statement.c:148) ) KO
    
                <?php
// connexion à oracle
try {
$db = new PDO('oci:dbname=v240.ig.polytech.univ-montp2.fr/ora10',
'marine.dubedat','oracle');
}
catch(PDOException $e) {
/* ce "catch" sert à rattraper les cas où la connexion échoue */
$db = null;
print("Connexion à la base de données impossible !");
exit(1);
}
$pseudo=$_COOKIE['nom'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$date_nai=$_POST['date_nai'];
$sexe=$_POST['sexe'];
$TEMP=explode('-',$date_nai);
$datetest=$TEMP['2'].'/'.$TEMP['1'].'/'.$TEMP['0'];
//echo $datetest;
if ((isset($_COOKIE['nom'])) && (isset($_POST['nom'])) && (isset($_POST['prenom'])) && (isset($_POST['date_nai']) ) && (isset($_POST['sexe']) )){
$req=$db->prepare("INSERT INTO ENFANT (nomenfant, prenomenfant, pseudoparent, date_nai_enf, sexe)
VALUES(:nom,:prenom,:pseudo,TO_DATE(':date','dd/mm/yyyy'), :sexe)");
$req->bindValue(':nom', $nom,PDO::PARAM_STR);
$req->bindValue(':prenom', $prenom,PDO::PARAM_STR);
$req->bindValue(':pseudo', $pseudo,PDO::PARAM_STR);
$req->bindValue(':date', $datetest,PDO::PARAM_STR);
$req->bindValue(':sexe', $sexe,PDO::PARAM_STR);
}
if($req->execute()){
echo "ok";
//header("Location: succesinscription.php",true);
exit;
}
else
{
print_r($req->errorInfo());
echo "KO";
//header("Location: erreurinscription.php",true);
}
$db = null; // on ferme la connection
?>
Et voila l'erreur renvoyée :
Array ( [0] => HY000 [1] => 1858 [2] => OCIStmtExecute: ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique (ext\pdo_oci\oci_statement.c:148) ) KO
