Page 1 sur 1
clean boucle for
Posté : 13 avr. 2016, 12:45
par azizss
Bonjour,
J'utilise une boucle for, qui fonctionne bien.
Mais mon problème est que ma boucle qui récupérer a chaque fois des informations ne signalise pas.
ça récupérer les info d'une table1 pour emplir une autre table2
sur la table1 :
si ID = 1 j'ai un champ prix = 20€, frais = 5€, et taille = 38.
si ID = 2 j'ai un champ prix = 40€, frais = vide, et taille = vide.
sur la table2 :
je copie ce que j'ai sur le table 1:
ID = 1 et que j'ai un champ prix = 20€, frais = 5€, et taille = 38. (rien ne change cela ce copie bien)
ID = 2 et que j'ai un champ prix = 40€, frais = 5€, et taille = 38. (si le champ est vide a la copie, il garde le information de l'ID précèdent et le copie ).
Comment faire pour initialise un for a chaque fois qu'il fait une boucle sans détruire le i++ .
Merci a vous,
Re: clean boucle for
Posté : 13 avr. 2016, 12:49
par Ryle
Bonjour,
Il suffit de remettre les valeurs par défaut au début de ta boucle, ainsi dans une itération tu remettras toutes tes valeurs à blanc/null/autre, puis procéderas à la mise à jour de ces valeurs qui conserveront la valeur par défaut si elles ne sont pas mises à jour

Re: clean boucle for
Posté : 13 avr. 2016, 13:11
par Aureusms
Bonjour,
Tu peux aussi stocker les valeurs ID pour un traitement ultérieur :
$tabId = array();
for ($i = 0 : $i < quelquechose; $i++) :
if ("ID = 2 et que j'ai un champ prix = 40€, frais = 5€, et taille = 38")
$tabId[] = $i;
endfor;
$tabId = array_filter($tabId);
if (!empty($tabId)) {
//traitement des $i stocké
}
Re: clean boucle for
Posté : 15 avr. 2016, 11:29
par azizss
Bonjour,
J'ai fait des recherches sur le net et ne trouve pas de solution.
Quant je récupérer les données cela fonctionne, la boucle ce fait bien, mais si le champ est vide, il garde les info du champ précédent et les écris bien dans ma bdd.
Comment faire pour qu'a chaque tour les données précédent s’efface.
Merci à vous,
Re: clean boucle for
Posté : 15 avr. 2016, 12:03
par Aureusms
Écrases le tableau...
Re: clean boucle for
Posté : 15 avr. 2016, 12:31
par azizss
Merci pour cette info,
Mais comment faire cela ?, peut-tu me donnée un exemple.
STP merci a toi,
Re: clean boucle for
Posté : 15 avr. 2016, 12:36
par Aureusms
Montre ton code...
Re: clean boucle for
Posté : 15 avr. 2016, 14:06
par azizss
Merci encore de ton aide,
Voilà mon code
Code : Tout sélectionner
<?php
include_once("simple_html_dom.php");
$resul = $bdd->query("SELECT max(`id_lien_jrs`) FROM lien_jrs");
$nombre = $resul->fetch();
echo $nombre;
{
for ($i = 1; $i <= $nombre; $i++) {
$result = $bdd->query("SELECT id_lien__jrs, lien_jrs FROM lien_jrs WHERE id_lien_jrs = $i");
$resu = $result->fetch();
{
$lien_dujour = $resu['lien_jrs'];
$html = file_get_html("$lien_dujour"); echo '<br />';
if ($resu['lien_jrs'] == null) {
echo $i;echo '<br />';
echo $lien_dujour;echo '<br />';
}else {
foreach($html->find('meta [property="og:title"]') as $titre_extraction_jrs){
$titre_extraction_jr = $titre_extraction_jrs->getAttribute('content');
}
foreach($html->find('p.accroche') as $accroche_extraction_jrs){
$accroche_extraction_jr = $accroche_extraction_jrs->plaintext;
}
foreach($html->find('div .description') as $description_extraction_jrs){
$description_extraction_jr = $description_extraction_jrs->plaintext;
}
foreach($html->find('span[itemprop="streetAddress"]') as $streetAddress_extraction_jrs){
$streetAddress_extraction_jr = $streetAddress_extraction_jrs->plaintext;
}
foreach($html->find('span[itemprop="postalCode"]') as $postalCode_extraction_jrs ){
$postalCode_extraction_jr = $postalCode_extraction_jrs->plaintext;
}
foreach($html->find('span[itemprop="addressLocality"]') as $addressLocality_extraction_jrs){
$addressLocality_extraction_jr = $addressLocality_extraction_jrs->plaintext;
}
$sql = "INSERT INTO `extractions_jrs` (`id_extraction_jrs`, `accroche_extraction_j`, `description_extraction_jr`, `streetAddress_extraction_jr`, `postalCode_extraction_jr`, `addressLocality_extraction_jr`, `date`, `heure`) VALUES (NULL, ‘accroche_extraction_j’, ‘description_extraction_jr’, ‘streetAddress_extraction_jr’, ‘postalCode_extraction_jr’, ‘addressLocality_extraction_jr’,NOW(),NOW()’) ;
$bdd->exec($sql);
}
}
}
$result->closeCursor();
}
?>
Re: clean boucle for
Posté : 15 avr. 2016, 14:11
par Spols
Au début de ton else, avant le premier foreach tu dois instancier tes variables à ta valeur par défault NULL ou ""
$titre_extraction_jr = "";
etc.
Ainsi à chaque itération, ces variables seront remise à 0 et rempli qu'avec les infos du line courant
Re: clean boucle for
Posté : 15 avr. 2016, 14:21
par Aureusms
Pour ma culture personnelle, pourquoi as-tu des { et } qui se baladent tous seuls ?
Ex :
{
$lien_dujour = $resu['lien_jrs'];
Re: clean boucle for
Posté : 15 avr. 2016, 16:22
par azizss
Super merci j'ai fait comme tu m'a dit, cela fonctionne très bien.
merci encore résolut.
Bon Week-end a vous,