[RESOLU] clean boucle for

Eléphant du PHP | 115 Messages

13 avr. 2016, 12:45

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,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 avr. 2016, 12:49

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 1996 Messages

13 avr. 2016, 13:11

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é
}
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 115 Messages

15 avr. 2016, 11:29

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,

ViPHP
ViPHP | 1996 Messages

15 avr. 2016, 12:03

Écrases le tableau...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 115 Messages

15 avr. 2016, 12:31

Merci pour cette info,

Mais comment faire cela ?, peut-tu me donnée un exemple.
STP merci a toi,

ViPHP
ViPHP | 1996 Messages

15 avr. 2016, 12:36

Montre ton code...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 115 Messages

15 avr. 2016, 14:06

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(); } ?>

Mammouth du PHP | 1967 Messages

15 avr. 2016, 14:11

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
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

ViPHP
ViPHP | 1996 Messages

15 avr. 2016, 14:21

Pour ma culture personnelle, pourquoi as-tu des { et } qui se baladent tous seuls ?

Ex :
{

$lien_dujour = $resu['lien_jrs'];
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 115 Messages

15 avr. 2016, 16:22

Super merci j'ai fait comme tu m'a dit, cela fonctionne très bien.

merci encore résolut.

Bon Week-end a vous,