[RESOLU] Porblème insertion bdd

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Porblème insertion bdd

Re: Porblème insertion bdd

par blinz » 04 août 2016, 19:37

Nikel ça marche parfaitement :)
Merci beacoup

Re: Porblème insertion bdd

par moogli » 04 août 2016, 16:08

test ce que j'ai mis avant et regarde s'il y a des lignes de rejetées.
Au pire vérifié avant l'insert ce que contient la description.

d'ailleurs vu ton code tu as aussi un bel accès pour des injections SQL.

le tableau dans execute ne sert à rien tu donnes les variables directements. tu as de la chance que cela fonctionne juste parce que tu délimites tes chaines avec des doubles quotes.

as tu vraiment compris l'interet de la requêtes préparées ?
Tu devrais avoir un truc dans le genre
<?php
 $req = $bdd->prepare('INSERT INTO loisirs (id_simply_user,titre,url_rewrite,price,photo,url_fnac,date_debut_sortie,horaire_debut,date_fin_sortie,horaire_fin,description,street,postcode,city,id_region,id_departements,id_type_loisirs,number,manufacturer,valide) VALUES(:id_simply_user,:titre,:url_rewrite,:price,:photo,:url_fnac,:date_debut_sortie ,:horaire_debut, :date_fin_sortie ,:horaire_fin, :description,:street, :postcode, :city,:id_region,:id_departements,:id_type_loisirs,:number,:manufacturer,:valide)');

@+

Re: Porblème insertion bdd

par blinz » 04 août 2016, 15:57

Ce que je ne comprends pas c'est que tout se rempli sauf cette colonne description de temps à autre

Re: Porblème insertion bdd

par moogli » 04 août 2016, 15:32

salut,

le seul truc qui peux me sembler hasardeux en première lecture c'est ça
$description = addslashes($tab_sortie[$id_type_loisirs][$tab_nbre[$id_type_loisirs]]);
tu as trois possibilités d'avoir un index "foireux"
$tab_sortie[$id_type_loisirs][$tab_nbre[[/b]$id_type_loisirs[/b]]]
du coup il faudrait peut être vérifier l’existence de chaque index avant de faire l'affectation ?
<?php
if( isset($tab_sortie[$id_type_loisirs]) && isset($tab_nbre[$id_type_loisirs]) && isset($tab_sortie[$id_type_loisirs][$tab_nbre[$id_type_loisirs]])) {
$description = $tab_sortie[$id_type_loisirs][$tab_nbre[$id_type_loisirs]];
}else {
// log d'une erreur que tu retrouveras facilement
continue; // passe à l'itération suivante ça sert à rien d'aller plus loin cette ligne est en errreur. 
}
voilà ce que je tenterais pour voir ce qui se passe à ce champs qui parfois devient vide (sinon je ne vois pas vraiment d'autre explication que le champ longDescriptionvide ou incomplet)

@+

Porblème insertion bdd

par blinz » 04 août 2016, 15:23

Salut à tous.
J'ai finis de travailler sur la lecture d'un fichier XML
tout marche mais de temps à autre j'ai le champ description qui ne rempli pas en bdd et je ne vois pas pourquoi.
Comme si ce champ la était sauté de temps en temps pendant l'éxécution du script.
$type  = array(     // Cat array ..
						
						// Cat autre array ..

                         // Cinéma
                         'FIL|Film' => 18, 'ACI|Abonnement/Pass cinéma' => 18, 'ACT|Action' => 18, 'ANI|Animation' => 18, 'ARM|Arts martiaux' => 18, 'AVE|Aventure' => 18, 'AVP|Avant-première' => 18, 'BIO|Biopic' => 18, 'BOL|Bollywood' => 18, 'CIC|Ciné-concert' => 18,
                         'CIE|Cinéma jeune public' => 18, 'CLA|Classique' => 18, 'COD|Comédie dramatique' => 18, 'COM|Comédie' => 18, 'DEA|Dessin animé' => 18, 'DIV|Divers' => 18, 'DOC|Documentaire' => 18, 'DRA|Drame' => 18, 'EPO|Epouvante-horreur' => 18, 'ERO|Erotique' => 18,
                         'ESP|Espionnage' => 18, 'FAN|Fantastique ' => 18, 'FCE|Comédie érotique' => 18, 'FFA|Famille' => 18, 'GUE|Guerre' => 18, 'HIS|Historique' => 18, 'JUD|Judiciaire' => 18, 'MED|Médical' => 18, 'MOB|Mobisode' => 18, 'MUS|Musical' => 18,
                         'NUI|Nuit à thème (cinéma)' => 18, 'PEP|Péplum' => 18,  'POL|Policier' => 18, 'ROM|Romance' => 18, 'SCF|Science fiction' => 18, 'SOA|Soap' => 18, 'THR|Thriller' => 18,
                         'WEB|Web série' => 18, 'WES|Western' => 18, '131F|Cinéma' => 18,  '13CI|Cinéma' => 18, 'ROC|Retransmission Opéra/Concert ;' => 18, 'ROC|Retransmission Opéra/Concert;' => 18, '81F|Cinéma' => 18, '8CI|Cinéma' => 18,
                        );
           
    // On entre les entrees en bdd 
	function multiexplode ($delimiters,$string) {
   
    $ready = str_replace($delimiters, $delimiters[0], $string);
    $launch = explode($delimiters[0], $ready);
    return  $launch;
	}                
    foreach ($flux->product as $item) {
		

    // Récupération des données en fonction du tagname du XML
	$number = addslashes($item->number);
    $titre = addslashes($item->name);
    $price = $item->price;
    $url_fnac = $item->deepLink;
	$date_debut_sortie = $item->validFrom;
    $date_fin_sortie = $item->validTo;
    $street = addslashes($item->terms);
    $photo = $item->largeImage;
    $genre = $item->merchantCategoryPath;
	$manufacturer = addslashes($item->manufacturer);
	

      // Code postal
      $postcode  = addslashes($item->extra2);
      $pieces = explode(" | ", $postcode);
	
	  // on parcourt le tag longDescription du XML
	  $longDescription = addslashes($item->longDescription);
	  $decoupe = multiexplode(array("|"," ","|"," "),$longDescription);
	  
	  // Début événement
	  $dateDebut = $decoupe[0];
	  $heureDebut = $decoupe[1];
	  $dateFin = $decoupe[2];
	  $heurefin = $decoupe[3];
	  
	  
	    //conversion de la date debut du format fr(jj:mm:aaaa hh:mm:ss) en format us(aaaa-mm-jj hh:mm:ss)
	  $dateDebut = date_create_from_format('d/m/Y',$dateDebut);
	  $dateDebut = date_format($dateDebut, 'Y-m-d');
	  
	  
	  // si il n y a pas de date de fin alors je lui attribue la date de début
	  if (empty($date_debut_sortie)) {
	  $date_debut_sortie = $dateDebut;
	  } else {
	  $decoupe[1] = $dateDebut; 
	  }
	  
	  // si il n y a pas d'heure de fin alors je lui attribue la date de début
	  if (!isset($decoupe[1])) {
	  $heureDebut = NULL;
	  } else {
	  $decoupe[1] = $heureDebut; 
	  }
	   if (empty($date_fin_sortie)) {
	  $date_fin_sortie = $date_debut_sortie;
	  } else {
	  
	  $decoupe[2] = $dateFin; 
	  }

	  // si il n y a pas de date de fin alors je lui attribue la date de début
	  if (!isset($decoupe[2])) {
	  $dateFin = $dateDebut;
	  } else {
	  $decoupe[2] = $dateFin; 
	  }
	  
	   if (empty($date_fin_sortie)) {
	  $date_fin_sortie = $date_debut_sortie;
	  } else {
	  $decoupe[2] = $dateDebut; 
	  }
	  
	  // si il n y a pas d'heure de fin alors je lui attribue l'heure de début
	  if (!isset($decoupe[3])) {
	  $heurefin = $heureDebut;
	  } else {
	  $decoupe[3] = $heurefin; 
	  }
	  
	echo $genre .'<br>';
	
    // On attribut le département en fonction des 2 premiers chiffre du code postal
    $departement = substr($postcode, 0, 2);
     
    $region = regionIdByDepartement($departement);
     
    // Attribution de la valeur id 1010 pour la fnac
    $id_simply_user = '999';
     
    // On valide la sortie par default
    $valide = '1';
	
	
	$url_convertis = $titre;
	$url_convertis = strtolower(str_replace ( ' ', '-', $titre));

	
	// Si il n y a pas de salle
	$salle = !empty($manufacturer) ? ucfirst(strtolower($manufacturer)) : NULL;
	

	foreach (explode(' ; ', /*(string)*/ $item->merchantCategoryPath) as $subtype) {
	$id_type_loisirs = $type[$subtype];
	
	}  

	// Le tableau
    $tab_sortie = [];
	
	$tab_sortie[0][0] = 'Votre sortie avec '.$titre.', à '.ucfirst(strtolower($pieces[1])).', venez vous changer les idées que vous soyez en famille ou entre amis, une sortie proposée par notre partenaire fnac.';

	// Sortie sport
	$tab_sortie[6][0] = 'Voici le rendez vous sportif du moment, à <em>'.ucfirst(strtolower($pieces[1])).'</em>, <strong>'.ucfirst(strtolower($titre)).'</strong>, Il est venu le temps de mouiller le maillot, une sortie proposée par notre partenaire fnac.';
	$tab_sortie[6][1] = 'Attenion ça va bouger à  <em>'.ucfirst(strtolower($pieces[1])).'</em>. Début des hostilités à  '.$heureDebut.', pour <strong>'.ucfirst(strtolower($titre)).'</strong> - ('.ucfirst(strtolower($salle)).')';
	$tab_sortie[6][2] = 'Voicit le rendez vous sportif du moment, à <em>'.ucfirst(strtolower($pieces[1])).'</em>, <strong>'.ucfirst(strtolower($titre)).'</strong>, Il est venu le temps de mouiller le maillot, une sortie proposée par notre partenaire fnac.';
	$tab_sortie[6][3] = 'Attenion ça va bouger à  <em>'.ucfirst(strtolower($pieces[1])).'</em>. Début des hostilités à  '.$heureDebut.', pour <strong>'.ucfirst(strtolower($titre)).'</strong> - ('.ucfirst(strtolower($salle)).')';
	$tab_sortie[6][4] = 'Voici le rendez vous sportif du moment, à <em>'.ucfirst(strtolower($pieces[1])).'</em>, <strong>'.ucfirst(strtolower($titre)).'</strong>, Il est venu le temps de mouiller le maillot, une sortie proposée par notre partenaire fnac.';
	$tab_sortie[6][5] = 'Attenion ça va bouger à  <em>'.ucfirst(strtolower($pieces[1])).'</em>. Début des hostilités à  '.$heureDebut.', pour <strong>'.ucfirst(strtolower($titre)).'</strong> - ('.ucfirst(strtolower($salle)).')';
	$tab_sortie[6][6] = 'Voici le rendez vous sportif du moment, à <em>'.ucfirst(strtolower($pieces[1])).'</em>, <strong>'.ucfirst(strtolower($titre)).'</strong>, Il est venu le temps de mouiller le maillot, une sortie proposée par notre partenaire fnac.';
	
	// Sortie exposition
	$tab_sortie[8][0] = 'Quoi de neuf côté exposition ?, <strong>'.ucfirst(strtolower($titre)).'</strong>  à <em>'.ucfirst(strtolower($pieces[1])).'</em>, une sortie exposition proposé par notre partenaire fnac.';

	// Sortie divers
	$tab_sortie[9][0] = 'Votre sortie avec '.$titre.', à '.ucfirst(strtolower($pieces[1])).', venez vous changer les idées que vous soyez en famille ou entre amis, une sortie proposée par notre partenaire fnac.';

	// Sortie concert
    $tab_sortie[10][0] = 'Vous attendiez ce <strong>concert</strong> depuis un moment ? Ne passez pas à côté de cette sortie. Retrouvez <strong>'.ucfirst(strtolower($titre)).'</strong> à <em>'.ucfirst(strtolower($pieces[1])).'</em>,'.ucfirst(strtolower($salle)).'. Un pur moment de musique et de souvenir à partager ensemble.<br> Une sortie proposée par notre partenaire fnac.';
    $tab_sortie[10][1] = 'Changez-vous les idées en retrouvant sur la scène de '.ucfirst(strtolower($salle)).', votre artiste du moment. Ne manquez pas l’immanquable, votre concert à partir de '.$heureDebut.'.';
    $tab_sortie[10][2] = 'C’est un son qui vous est familier n’est-ce pas ? Alors ne laissez pas passer cette occasion de sortie inoubliable si près de chez vous. <strong>'.ucfirst(strtolower($titre)).'</strong> se produira sur la scène de '.ucfirst(strtolower($salle)).' à '.ucfirst(strtolower($pieces[1])).', dès '.$heureDebut.'. C’est le concert que vous attendiez ! Et c’est sur lasortie que vous le trouvez.';
	$tab_sortie[10][3] = 'Envie d’une sortie ? Pourquoi ne pas vous laissez tenter par une sortie concert à '.ucfirst($pieces[1]).'. Sur la scène de '.$salle.', un moment à partager avec ses proches sans modération.';
	$tab_sortie[10][4] = 'Le rendez-vous est fixé à <em>'.ucfirst(strtolower($pieces[1])).'</em> à partir de '.$heureDebut.', pour le concert de <strong>'.ucfirst(strtolower($titre)).'</strong>, retrouvez votre artiste à la  salle '.ucfirst(strtolower($salle)).',  sans nul doute un des concerts à ne pas manquer.';
	$tab_sortie[10][5] = ucfirst(strtolower($titre)).' sera près de chez vous, pour un concert à  <em>'.ucfirst(strtolower($pieces[1])).'</em>, on vous donne rendez-vous à '.ucfirst(strtolower($salle)).' à partir de '.$heureDebut.', pour un show à ne pas manquer. Les sorties à ne pas louper on les trouve sur lasortie.fr !';
	$tab_sortie[10][6] = 'Stop ! Un instant, grande nouvelle, <strong>'.ucfirst(strtolower($titre)).'</strong> sera dans le coin d’ici peu de temps… Concert de <strong>'.ucfirst(strtolower($titre)).'</strong> sur la scène de '.ucfirst(strtolower($salle)).' dès '.$heureDebut.'. Une sortie tout en musique et en fête avec lasortie.fr';
	
	// Sortie spectacle
	$tab_sortie[11][0] = 'Évacuer la pression de cette semaine en retrouvant sur scène <strong>'.ucfirst(strtolower($titre)).'</strong> à <em>'.ucfirst(strtolower($pieces[1])).'</em> dans votre salle de spectacle ( '.ucfirst(strtolower($salle)).').<br> Un spectacle qui vous offrira un moment de divertissement garantie.<br> Une sortie proposée par notre partenaire fnac.';
	$tab_sortie[11][1] = 'Un fou rire, un moment de détente, du divertissement ! C’est ce qui vous attend avec le spectacle <strong>'.ucfirst(strtolower($titre)).'</strong> à '.ucfirst(strtolower($pieces[1])).', sur les planches de '.ucfirst(strtolower($salle)).'. C’est à coup sûr une sortie à ne pas louper !';
	$tab_sortie[11][2] = 'Vous avez probablement besoin d’une sortie entre amis, en couple ou en famille ? Quoi de mieux pour se changer les idées de retrouver sur la scène '.ucfirst(strtolower($salle)).' <strong>'.ucfirst(strtolower($titre)).'</strong> pour son spectacle à '.ucfirst(strtolower($pieces[1])).' dès '.$heureDebut.'. Evacuer la pression de cette semaine !';
	$tab_sortie[11][3] = 'Bon, si on se changer les idées avec une sortie spectacle. Ca se passe près de chez vous ! <strong>'.ucfirst(strtolower($titre)).'</strong> à <em>'.ucfirst(strtolower($pieces[1])).'</em>, votre dose de décompression vous attends à la salle '.ucfirst(strtolower($salle)).' dès '.$heureDebut.'.';
	$tab_sortie[11][4] = 'Évacuer la pression de cette semaine en retrouvant sur scène <strong>'.ucfirst(strtolower($titre)).'</strong> à <em>'.ucfirst(strtolower($pieces[1])).'</em> dans votre salle de spectacle ( '.ucfirst(strtolower($salle)).').<br> Un spectacle qui vous offrira un moment de divertissement garantie.<br> Une sortie proposée par notre partenaire fnac.';
	$tab_sortie[11][5] = 'Un fou rire, un moment de détente, du divertissement ! C’est ce qui vous attend avec le spectacle <strong>'.ucfirst(strtolower($titre)).'</strong> à '.ucfirst(strtolower($pieces[1])).', sur les planches de '.ucfirst(strtolower($salle)).'. C’est à coup sûr une sortie à ne pas louper !';
	$tab_sortie[11][6] = 'Vous avez probablement besoin d’une sortie entre amis, en couple ou en famille ? Quoi de mieux pour se changer les idées de retrouver sur la scène '.ucfirst(strtolower($salle)).' <strong>'.ucfirst(strtolower($titre)).'</strong> pour son spectacle à '.ucfirst(strtolower($pieces[1])).' dès '.$heureDebut.'. Evacuer la pression de cette semaine !';
	
	// Sortie visite
	$tab_sortie[13][0] = 'Une rencontre art et culture avec cette visite, <strong>'.ucfirst(strtolower($titre)).'</strong>  à <em>'.ucfirst(strtolower($pieces[1])).'</em>, un moment à partager entre amis ou en famille.';
	$tab_sortie[13][1] = 'Un moment à partager en famille en partant à la découverte des lieux et monument historique qui nous entoure. Avouez que ça serez dommage de passer à côté de tout ça, alors que cette sortie <strong>'.ucfirst(strtolower($titre)).'</strong> à <em>'.ucfirst(strtolower($pieces[1])).'</em> est si proche de vous.';
	$tab_sortie[13][2] = 'Une rencontre art et culture avec cette visite, <strong>'.ucfirst(strtolower($titre)).'</strong>  à <em>'.ucfirst(strtolower($pieces[1])).'</em>, un moment à partager entre amis ou en famille.';
	$tab_sortie[13][3] = '<strong>'.ucfirst(strtolower($titre)).'</strong> à <em>'.ucfirst(strtolower($pieces[1])).'</em>. Entre amis ou en famille, cette sortie est faite pour vous. Changez-vous les idées le (date). Cette sortie est proposée par notre partenaire fnac.';
	$tab_sortie[13][4] = 'Une rencontre art et culture avec cette visite, <strong>'.ucfirst(strtolower($titre)).'</strong>  à <em>'.ucfirst(strtolower($pieces[1])).'</em>, un moment à partager entre amis ou en famille.';
	$tab_sortie[13][5] = '<strong>'.ucfirst(strtolower($titre)).'</strong> à <em>'.ucfirst(strtolower($pieces[1])).'</em>. Entre amis ou en famille, cette sortie est faite pour vous. Changez-vous les idées le (date). Cette sortie est proposée par notre partenaire fnac.';
	$tab_sortie[13][6] = 'Une rencontre art et culture avec cette visite, <strong>'.ucfirst(strtolower($titre)).'</strong>  à <em>'.ucfirst(strtolower($pieces[1])).'</em>, un moment à partager entre amis ou en famille.';
	
	$tab_sortie[17][0] = 'Votre foire '.ucfirst(strtolower($titre)).', à '.$pieces[1].'. Pour vos papilles et/où pour vos yeux, une sortie proposée par notre partenaire fnac.';
	$tab_sortie[20][0] = 'Profitez du coffret cadeau '.$titre.', à '.$pieces[1].', faites vous plaisir, une sortie proposée par notre partenaire fnac.</a> ';
	
	// Sortie cinéma
	$tab_sortie[18][0] = 'Quoi de neuf côté cinéma ?  Venez vous changez les idées avec <strong>'.ucfirst(strtolower($titre)).'</strong>, à <em>'.ucfirst(strtolower($pieces[1])).'</em>'.ucfirst(strtolower($salle)).'.<br> Un moment de détente assuré, une sortie proposée par notre partenaire fnac. ';
	$tab_sortie[18][1] = 'Vous êtes à la recherche de quelque chose de nouveau ?<br> Peut-être  seriez-vous tentez par <strong>'.ucfirst(strtolower($titre)).'</strong> à '.ucfirst(strtolower($pieces[1])).', à coup sûr c’est un moment de divertissement et d’évasion qui vous attend.';
	
	// Soirée nightclub
	$tab_sortie[2][0] = 'Une soirée club ? Venez profitez de '.$titre.', à '.$pieces[1].', une sortie proposée par notre partenaire fnac. ';
	
      
    // incrémenter le nombre de sorties de ce type
    if(isset($tab_nbre[$id_type_loisirs]))
    {
		
       // vérifier de ne pas dépasser le nombre de textes que tu a défini
       if ($tab_nbre[$id_type_loisirs] >= count($tab_sortie[$id_type_loisirs]))
       {
          $tab_nbre[$id_type_loisirs] = 0;
        }else{
          $tab_nbre[$id_type_loisirs]++;
        }
    }else{
       $tab_nbre[$id_type_loisirs] = 0;
    }
  
    // plus besoin du switch !
    $description = addslashes($tab_sortie[$id_type_loisirs][$tab_nbre[$id_type_loisirs]]);
             
	// Le tableau
    $tab_sortie = [];
	
	echo $description;
	echo $number;
 
        // Requete pour calculer le nombre d'annonces en cours de validité
        $sql = "SELECT id_loisirs FROM loisirs WHERE number = '".$number."'";
        $req = $bdd->query($sql);
        $nbResult = $req->rowCount();
             
        //Entrée déjà existante
        if ($nbResult > 0) {  
        echo '"' . $number. '" existe déjà en ' . $nbResult . ' exemplaire(s)';
        } else { //  libre
             
               
        // Insertion
        $req = $bdd->prepare("INSERT INTO `loisirs` (id_simply_user,titre,url_rewrite,price,photo,url_fnac,date_debut_sortie,horaire_debut,date_fin_sortie,horaire_fin,description,street,postcode,city,id_region,id_departements,id_type_loisirs,number,manufacturer,valide) VALUES ('$id_simply_user','$titre','$url_convertis','$price','$photo','$url_fnac','$date_debut_sortie', '$heureDebut', '$date_fin_sortie', '$heurefin', '$description','$street','$pieces[0]','$pieces[1]','$region','$departement','$id_type_loisirs','$number','$manufacturer','$valide')");
        $req->execute(array(
             
                      'id_simply_user'=>$id_simply_user,
                      'titre'=>$titre,
                      'url_rewrite'=>$url_convertis,
                      'price'=>$price,
                      'photo'=>$photo,
                      'url_fnac' => $url_fnac,
                      'date_debut_sortie' => $date_debut_sortie,
                      'horaire_debut' => $heureDebut,
                      'date_fin_sortie' => $date_fin_sortie,
                      'horaire_fin' => $heurefin,
                      'description' => $description,
                      'street' => $street,
                      'postcode'=>$pieces[0],
                      'city'=>$pieces[1],
                      'id_region'=>$region,
                      'id_departements'=>$departement,
                      'id_type_loisirs'=>$id_type_loisirs,
                      'number'=>$number,
                      'manufacturer'=>$manufacturer,
                      'valide'=>$valide
                      )) or die('Problème lors de l\'insertion');
            }
        }
?>