Erreur PDO
BuddyLove_x52
Messages postés
131
Statut
Membre
-
BuddyLove_x52 Messages postés 131 Statut Membre -
BuddyLove_x52 Messages postés 131 Statut Membre -
Salut tous le monde ! J'arrive pas a faire mon insert...
Voici mon message d'erreur :
Notice: Undefined index: pseudo in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php on line 7
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pseudo_dest' cannot be null' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php:15 Stack trace: #0 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php(15): PDOStatement->execute(Array) #1 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.php(2): include('C:\Program File...') #2 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\index.php(33): include('C:\Program File...') #3 {main} thrown in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php on line 15
*
Et voici mon code :
Voici mon message d'erreur :
Notice: Undefined index: pseudo in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php on line 7
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pseudo_dest' cannot be null' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php:15 Stack trace: #0 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php(15): PDOStatement->execute(Array) #1 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.php(2): include('C:\Program File...') #2 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\index.php(33): include('C:\Program File...') #3 {main} thrown in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php on line 15
*
Et voici mon code :
<?php
//la fonction qui va enrgistré l'invitations dans la BDD
$pseudo_exp=$_SESSION['pseudo'];
$pseudo_dest=$_GET['pseudo'];
$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$req = $bdd->prepare('INSERT INTO amis(pseudo_exp,pseudo_dest,date_invitation,active) VALUES(:pseudo_exp, :pseudo_dest, NOW(),active)');
$req->execute(array(
'pseudo_exp' => $pseudo_exp,
'pseudo_dest' => $pseudo_dest));
?>
A voir également:
- Erreur PDO
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
2 réponses
'lut, ici PDO se plaint que comme
Fais une vérif avec une condition
$_GET['pseudo']vaut
null, il ne peut pas l'insérer dans la colonne
pseudo_destde ta BDD car les données qu'elle est conçue pour recevoir ne peuvent pas être nulles.
Fais une vérif avec une condition
ifavant de faire la requête, la condition échéante fait en sorte de retourner une erreur.
Merci de la réponse ! Mais comment je pourrais faire alors pour donner une valeur a $_GET['pseudo'] ? Le liens qui permet d'arriver a cet page utilise GET['pseudo'] justement !
La page qui me permet d'ajouter un ami :
La page qui me permet d'ajouter un ami :
<?php
include('liste_membre.func.php');
include('header.php');
include('menus.php');
include('connect.php');
include('profile.func.php');
?>
<div class="info">
<?php
$infos_membres_choisis = recuperer_info_membre_choisi();
if($infos_membres_choisis == true && $_GET['pseudo'] != $_SESSION['pseudo'])
{
foreach($infos_membres_choisis as $info_membre_choisi)
{
if(demande_existe() ==0)
{
?>
<div class="error">Vous n'etes pas amis avec <?php echo $info_membre_choisi['pseudo'];?><br/>
<a href="index.php?page=envoi">Envoyer une invitation</a><br/></div>
<?php
}else{
?>
<img src="avatar/<?php echo $info_membre_choisi['avatar']; ?>" height="200" width"200" alt="avatar">
<p><strong>Email</strong> : <em><?php echo $info_membre_choisi['email'];?></em></p>
<p><strong>Sexe</strong> : <em><?php echo $info_membre_choisi['sexe'];?></em></p>
<p><strong>Situation</strong> : <em><?php echo $info_membre_choisi['situation']; ?></em></p>
<?php
}
}
}else{
header("location:index.php?page=membre");
}
?>
</div>
C'est lui
qui me dirige vers la page :
Et voici ma function :
<a href="index.php?page=envoi">Envoyer une invitation</a><br/></div>
qui me dirige vers la page :
<?php
include('envoi.func.php');
include('connect.php');
enreg_invitation();
header("location:index.php?page=profile&pseudo=".$_GET['pseudo']);
?>
Et voici ma function :
<?php
//la fonction qui va enrgistré l'invitations dans la BDD
$pseudo_exp=$_SESSION['pseudo'];
$pseudo_dest=$_GET['pseudo'];
$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$req = $bdd->prepare('INSERT INTO amis(pseudo_exp,pseudo_dest,date_invitation,active) VALUES(:pseudo_exp, :pseudo_dest, NOW(),active)');
$req->execute(array(
'pseudo_exp' => $pseudo_exp,
'pseudo_dest' => $pseudo_dest));
?>
Comme les variables $_GET ne sont pas conservées entre deux pages, il faut le faire soi-même: on reprend donc le paramètre voulu (ici
$info_membre_choisi['pseudo']) et on le remet à la main dans l'URL, en le faisant passer par des fonctions qui évitent des problèmes relatifs au formatage du lien dans le code HTML (ex urlencode convertit un espace en "%20", et htmlentities convertit un & en
& amp;(sans l'espace; sinon CCM convertit le code HTML en vrai &))